From 86623b4ceaf2354425b950023a895fcd56bafe9a Mon Sep 17 00:00:00 2001 From: Marat <98183742+dungeon-master-666@users.noreply.github.com> Date: Wed, 24 May 2023 10:39:15 +0100 Subject: [PATCH 01/50] Enable more verbose TVM stack dump (#669) * Verbose stack dump * Move vm::VmLog::DumpStack and vm::VmLog::DumpStackVerbose to the next verbosity levels --- crypto/block/transaction.cpp | 8 ++++- crypto/smc-envelope/SmartContract.cpp | 8 ++++- crypto/vm/continuation.cpp | 48 +++++++++++++++++++++++++++ crypto/vm/continuation.h | 12 +++++++ crypto/vm/log.h | 2 +- crypto/vm/stack.cpp | 43 ++++++++++++++++++------ crypto/vm/stack.hpp | 6 ++-- crypto/vm/vm.cpp | 6 +++- 8 files changed, 116 insertions(+), 17 deletions(-) diff --git a/crypto/block/transaction.cpp b/crypto/block/transaction.cpp index 0a02d6fd5..fe3599936 100644 --- a/crypto/block/transaction.cpp +++ b/crypto/block/transaction.cpp @@ -1081,7 +1081,13 @@ bool Transaction::prepare_compute_phase(const ComputePhaseConfig& cfg) { if (cfg.vm_log_verbosity > 1) { vm_log.log_mask |= vm::VmLog::ExecLocation; if (cfg.vm_log_verbosity > 2) { - vm_log.log_mask |= vm::VmLog::DumpStack | vm::VmLog::GasRemaining; + vm_log.log_mask |= vm::VmLog::GasRemaining; + if (cfg.vm_log_verbosity > 3) { + vm_log.log_mask |= vm::VmLog::DumpStack; + if (cfg.vm_log_verbosity > 4) { + vm_log.log_mask |= vm::VmLog::DumpStackVerbose; + } + } } } } diff --git a/crypto/smc-envelope/SmartContract.cpp b/crypto/smc-envelope/SmartContract.cpp index 7ba768a4f..4103096c6 100644 --- a/crypto/smc-envelope/SmartContract.cpp +++ b/crypto/smc-envelope/SmartContract.cpp @@ -185,7 +185,13 @@ SmartContract::Answer run_smartcont(SmartContract::State state, td::Ref 1) { log.log_mask |= vm::VmLog::ExecLocation; if (vm_log_verbosity > 2) { - log.log_mask |= vm::VmLog::DumpStack | vm::VmLog::GasRemaining; + log.log_mask |= vm::VmLog::GasRemaining; + if (vm_log_verbosity > 3) { + log.log_mask |= vm::VmLog::DumpStack; + if (vm_log_verbosity > 4) { + log.log_mask |= vm::VmLog::DumpStackVerbose; + } + } } } diff --git a/crypto/vm/continuation.cpp b/crypto/vm/continuation.cpp index 94d201250..dc3ad5e95 100644 --- a/crypto/vm/continuation.cpp +++ b/crypto/vm/continuation.cpp @@ -22,6 +22,8 @@ #include "vm/log.h" #include "vm/vm.h" #include "vm/vmstate.h" +#include "vm/boc.h" +#include "td/utils/misc.h" namespace vm { @@ -254,6 +256,16 @@ bool Continuation::deserialize_to(Ref cell, Ref& cont, int m return deserialize_to(cs, cont, mode & ~0x1000) && cs.empty_ext(); } +std::ostream& operator<<(std::ostream& os, const Continuation& cont) { + CellBuilder cb; + if (cont.serialize(cb)) { + auto boc = vm::std_boc_serialize(cb.finalize()); + if (boc.is_ok()) { + os << td::buffer_to_hex(boc.move_as_ok().as_slice()); + } + } +} + bool QuitCont::serialize(CellBuilder& cb) const { // vmc_quit$1000 exit_code:int32 = VmCont; return cb.store_long_bool(8, 4) && cb.store_long_bool(exit_code, 32); @@ -269,6 +281,10 @@ Ref QuitCont::deserialize(CellSlice& cs, int mode) { } } +std::string QuitCont::type() const { + return "vmc_quit"; +} + int ExcQuitCont::jump(VmState* st) const & { int n = 0; try { @@ -280,6 +296,10 @@ int ExcQuitCont::jump(VmState* st) const & { return ~n; } +std::string ExcQuitCont::type() const { + return "vmc_quit_exc"; +} + bool ExcQuitCont::serialize(CellBuilder& cb) const { // vmc_quit_exc$1001 = VmCont; return cb.store_long_bool(9, 4); @@ -302,6 +322,10 @@ int PushIntCont::jump_w(VmState* st) & { return st->jump(std::move(next)); } +std::string PushIntCont::type() const { + return "vmc_pushint"; +} + bool PushIntCont::serialize(CellBuilder& cb) const { // vmc_pushint$1111 value:int32 next:^VmCont = VmCont; return cb.store_long_bool(15, 4) && cb.store_long_bool(push_val, 32) && next->serialize_ref(cb); @@ -353,6 +377,10 @@ Ref ArgContExt::deserialize(CellSlice& cs, int mode) { : Ref{}; } +std::string ArgContExt::type() const { + return "vmc_envelope"; +} + int RepeatCont::jump(VmState* st) const & { VM_LOG(st) << "repeat " << count << " more times (slow)\n"; if (count <= 0) { @@ -401,6 +429,10 @@ Ref RepeatCont::deserialize(CellSlice& cs, int mode) { } } +std::string RepeatCont::type() const { + return "vmc_repeat"; +} + int VmState::repeat(Ref body, Ref after, long long count) { if (count <= 0) { body.clear(); @@ -444,6 +476,10 @@ Ref AgainCont::deserialize(CellSlice& cs, int mode) { } } +std::string AgainCont::type() const { + return "vmc_again"; +} + int VmState::again(Ref body) { return jump(Ref{true, std::move(body)}); } @@ -493,6 +529,10 @@ Ref UntilCont::deserialize(CellSlice& cs, int mode) { } } +std::string UntilCont::type() const { + return "vmc_until"; +} + int VmState::until(Ref body, Ref after) { if (!body->has_c0()) { set_c0(Ref{true, body, std::move(after)}); @@ -575,6 +615,10 @@ Ref WhileCont::deserialize(CellSlice& cs, int mode) { } } +std::string WhileCont::type() const { + return chkcond ? "vmc_while_cond" : "vmc_while_body"; +} + int VmState::loop_while(Ref cond, Ref body, Ref after) { if (!cond->has_c0()) { set_c0(Ref{true, cond, std::move(body), std::move(after), true}); @@ -610,4 +654,8 @@ Ref OrdCont::deserialize(CellSlice& cs, int mode) { : Ref{}; } +std::string OrdCont::type() const { + return "vmc_std"; +} + } // namespace vm diff --git a/crypto/vm/continuation.h b/crypto/vm/continuation.h index 37abe8699..8208fc16a 100644 --- a/crypto/vm/continuation.h +++ b/crypto/vm/continuation.h @@ -191,8 +191,11 @@ class Continuation : public td::CntObject { return (cont = deserialize(cs, mode)).not_null(); } static bool deserialize_to(Ref cell, Ref& cont, int mode = 0); + virtual std::string type() const = 0; }; +std::ostream& operator<<(std::ostream& os, const Continuation& cont); + class QuitCont : public Continuation { int exit_code; @@ -205,6 +208,7 @@ class QuitCont : public Continuation { } bool serialize(CellBuilder& cb) const override; static Ref deserialize(CellSlice& cs, int mode = 0); + std::string type() const override; }; class ExcQuitCont : public Continuation { @@ -214,6 +218,7 @@ class ExcQuitCont : public Continuation { int jump(VmState* st) const & override; bool serialize(CellBuilder& cb) const override; static Ref deserialize(CellSlice& cs, int mode = 0); + std::string type() const override; }; class PushIntCont : public Continuation { @@ -228,6 +233,7 @@ class PushIntCont : public Continuation { int jump_w(VmState* st) & override; bool serialize(CellBuilder& cb) const override; static Ref deserialize(CellSlice& cs, int mode = 0); + std::string type() const override; }; class RepeatCont : public Continuation { @@ -243,6 +249,7 @@ class RepeatCont : public Continuation { int jump_w(VmState* st) & override; bool serialize(CellBuilder& cb) const override; static Ref deserialize(CellSlice& cs, int mode = 0); + std::string type() const override; }; class AgainCont : public Continuation { @@ -256,6 +263,7 @@ class AgainCont : public Continuation { int jump_w(VmState* st) & override; bool serialize(CellBuilder& cb) const override; static Ref deserialize(CellSlice& cs, int mode = 0); + std::string type() const override; }; class UntilCont : public Continuation { @@ -269,6 +277,7 @@ class UntilCont : public Continuation { int jump_w(VmState* st) & override; bool serialize(CellBuilder& cb) const override; static Ref deserialize(CellSlice& cs, int mode = 0); + std::string type() const override; }; class WhileCont : public Continuation { @@ -284,6 +293,7 @@ class WhileCont : public Continuation { int jump_w(VmState* st) & override; bool serialize(CellBuilder& cb) const override; static Ref deserialize(CellSlice& cs, int mode = 0); + std::string type() const override; }; class ArgContExt : public Continuation { @@ -315,6 +325,7 @@ class ArgContExt : public Continuation { } bool serialize(CellBuilder& cb) const override; static Ref deserialize(CellSlice& cs, int mode = 0); + std::string type() const override; }; class OrdCont : public Continuation { @@ -369,6 +380,7 @@ class OrdCont : public Continuation { } bool serialize(CellBuilder& cb) const override; static Ref deserialize(CellSlice& cs, int mode = 0); + std::string type() const override; }; ControlData* force_cdata(Ref& cont); diff --git a/crypto/vm/log.h b/crypto/vm/log.h index b62ada5e2..dc0199b55 100644 --- a/crypto/vm/log.h +++ b/crypto/vm/log.h @@ -31,7 +31,7 @@ namespace vm { struct VmLog { td::LogInterface *log_interface{td::log_interface}; td::LogOptions log_options{td::log_options}; - enum { DumpStack = 2, ExecLocation = 4, GasRemaining = 8 }; + enum { DumpStack = 2, ExecLocation = 4, GasRemaining = 8, DumpStackVerbose = 16 }; int log_mask{1}; static VmLog Null() { VmLog res; diff --git a/crypto/vm/stack.cpp b/crypto/vm/stack.cpp index e82b25de9..18589812a 100644 --- a/crypto/vm/stack.cpp +++ b/crypto/vm/stack.cpp @@ -21,6 +21,8 @@ #include "vm/box.hpp" #include "vm/atom.h" #include "vm/vmstate.h" +#include "vm/boc.h" +#include "td/utils/misc.h" namespace td { template class td::Cnt; @@ -81,7 +83,7 @@ std::string StackEntry::to_lisp_string() const { return std::move(os).str(); } -void StackEntry::dump(std::ostream& os) const { +void StackEntry::dump(std::ostream& os, bool verbose) const { switch (tp) { case t_null: os << "(null)"; @@ -91,14 +93,23 @@ void StackEntry::dump(std::ostream& os) const { break; case t_cell: if (ref.not_null()) { - os << "C{" << static_cast>(ref)->get_hash().to_hex() << "}"; + if (verbose) { + std::string serialized = "???"; + auto boc = vm::std_boc_serialize(as_cell()); + if (boc.is_ok()) { + serialized = td::buffer_to_hex(boc.move_as_ok().as_slice()); + } + os << "C{" << serialized << "}"; + } else { + os << "C{" << *as_cell() << "}"; + } } else { os << "C{null}"; } break; case t_builder: if (ref.not_null()) { - os << "BC{" << static_cast>(ref)->to_hex() << "}"; + os << "BC{" << *as_builder() << "}"; } else { os << "BC{null}"; } @@ -149,12 +160,24 @@ void StackEntry::dump(std::ostream& os) const { os << "Object{" << (const void*)&*ref << "}"; break; } + case t_vmcont: { + if (ref.not_null()) { + if (verbose) { + os << "Cont{" << *as_cont() << "}"; + } else { + os << "Cont{" << as_cont()->type() << "}"; + } + } else { + os << "Cont{null}"; + } + break; + } default: os << "???"; } } -void StackEntry::print_list(std::ostream& os) const { +void StackEntry::print_list(std::ostream& os, bool verbose) const { switch (tp) { case t_null: os << "()"; @@ -163,7 +186,7 @@ void StackEntry::print_list(std::ostream& os) const { const auto& tuple = *static_cast>(ref); if (is_list()) { os << '('; - tuple[0].print_list(os); + tuple[0].print_list(os, verbose); print_list_tail(os, &tuple[1]); break; } @@ -172,7 +195,7 @@ void StackEntry::print_list(std::ostream& os) const { os << "[]"; } else if (n == 1) { os << "["; - tuple[0].print_list(os); + tuple[0].print_list(os, verbose); os << "]"; } else { os << "["; @@ -181,14 +204,14 @@ void StackEntry::print_list(std::ostream& os) const { if (c++) { os << " "; } - entry.print_list(os); + entry.print_list(os, verbose); } os << ']'; } break; } default: - dump(os); + dump(os, verbose); } } @@ -687,12 +710,12 @@ void Stack::dump(std::ostream& os, int mode) const { os << " [ "; if (mode & 2) { for (const auto& x : stack) { - x.print_list(os); + x.print_list(os, mode & 4); os << ' '; } } else { for (const auto& x : stack) { - x.dump(os); + x.dump(os, mode & 4); os << ' '; } } diff --git a/crypto/vm/stack.hpp b/crypto/vm/stack.hpp index bfc9e7acc..69ed107cd 100644 --- a/crypto/vm/stack.hpp +++ b/crypto/vm/stack.hpp @@ -292,8 +292,8 @@ class StackEntry { } bool for_each_scalar(const std::function& func) const; void for_each_scalar(const std::function& func) const; - void dump(std::ostream& os) const; - void print_list(std::ostream& os) const; + void dump(std::ostream& os, bool verbose = false) const; + void print_list(std::ostream& os, bool verbose = false) const; std::string to_string() const; std::string to_lisp_string() const; @@ -558,7 +558,7 @@ class Stack : public td::CntObject { } bool for_each_scalar(const std::function& func) const; void for_each_scalar(const std::function& func) const; - // mode: +1 = add eoln, +2 = Lisp-style lists + // mode: +1 = add eoln, +2 = Lisp-style lists, +4 = serialized bocs void dump(std::ostream& os, int mode = 1) const; bool serialize(vm::CellBuilder& cb, int mode = 0) const; bool deserialize(vm::CellSlice& cs, int mode = 0); diff --git a/crypto/vm/vm.cpp b/crypto/vm/vm.cpp index 3baba2790..fbea19522 100644 --- a/crypto/vm/vm.cpp +++ b/crypto/vm/vm.cpp @@ -435,7 +435,11 @@ int VmState::step() { CHECK(code.not_null() && stack.not_null()); if (log.log_mask & vm::VmLog::DumpStack) { std::stringstream ss; - stack->dump(ss, 3); + int mode = 3; + if (log.log_mask & vm::VmLog::DumpStackVerbose) { + mode += 4; + } + stack->dump(ss, mode); VM_LOG(this) << "stack:" << ss.str(); } if (stack_trace) { From c527bfecebb35788978b6c3ab1a6e4f6c7c458bd Mon Sep 17 00:00:00 2001 From: Marat <98183742+dungeon-master-666@users.noreply.github.com> Date: Wed, 24 May 2023 10:40:04 +0100 Subject: [PATCH 02/50] Emulator improvements (#687) * ticktock, unixtime, optional config * documentation * fix account.now * emulate tick/tock for emscripten * remove excessive check * limit stack serialization calls --- emulator/emulator-emscripten.cpp | 23 ++++++- emulator/emulator-extern.cpp | 109 +++++++++++++++++++++++++++---- emulator/emulator-extern.h | 33 ++++++++-- emulator/emulator_export_list | 1 + emulator/transaction-emulator.h | 4 ++ emulator/tvm-emulator.hpp | 4 +- 6 files changed, 154 insertions(+), 20 deletions(-) diff --git a/emulator/emulator-emscripten.cpp b/emulator/emulator-emscripten.cpp index 881664bdd..66e97f358 100644 --- a/emulator/emulator-emscripten.cpp +++ b/emulator/emulator-emscripten.cpp @@ -12,6 +12,8 @@ struct TransactionEmulationParams { uint64_t lt; td::optional rand_seed_hex; bool ignore_chksig; + bool is_tick_tock; + bool is_tock; bool debug_enabled; }; @@ -41,6 +43,16 @@ td::Result decode_transaction_emulation_params(const TRY_RESULT(debug_enabled, td::get_json_object_bool_field(obj, "debug_enabled", false)); params.debug_enabled = debug_enabled; + TRY_RESULT(is_tick_tock, td::get_json_object_bool_field(obj, "is_tick_tock", true, false)); + params.is_tick_tock = is_tick_tock; + + TRY_RESULT(is_tock, td::get_json_object_bool_field(obj, "is_tock", true, false)); + params.is_tock = is_tock; + + if (is_tock && !is_tick_tock) { + return td::Status::Error("Inconsistent parameters is_tick_tock=false, is_tock=true"); + } + return params; } @@ -137,7 +149,12 @@ const char *emulate(const char *config, const char* libs, int verbosity, const c return strdup(R"({"fail":true,"message":"Can't set params"})"); } - auto tx = transaction_emulator_emulate_transaction(em, account, message); + const char *result; + if (decoded_params.is_tick_tock) { + result = transaction_emulator_emulate_tick_tock_transaction(em, account, decoded_params.is_tock); + } else { + result = transaction_emulator_emulate_transaction(em, account, message); + } transaction_emulator_destroy(em); @@ -145,12 +162,12 @@ const char *emulate(const char *config, const char* libs, int verbosity, const c { td::JsonBuilder jb; auto json_obj = jb.enter_object(); - json_obj("output", td::JsonRaw(td::Slice(tx))); + json_obj("output", td::JsonRaw(td::Slice(result))); json_obj("logs", logger.get_string()); json_obj.leave(); output = strdup(jb.string_builder().as_cslice().c_str()); } - free((void*) tx); + free((void*) result); return output; } diff --git a/emulator/emulator-extern.cpp b/emulator/emulator-extern.cpp index 31a7b649d..c5717dcd3 100644 --- a/emulator/emulator-extern.cpp +++ b/emulator/emulator-extern.cpp @@ -8,6 +8,7 @@ #include "transaction-emulator.h" #include "tvm-emulator.hpp" #include "crypto/vm/stack.hpp" +#include "crypto/vm/memo.h" td::Result> boc_b64_to_cell(const char *boc) { TRY_RESULT_PREFIX(boc_decoded, td::base64_decode(td::Slice(boc)), "Can't decode base64 boc: "); @@ -42,6 +43,7 @@ const char *error_response(std::string&& error) { auto json_obj = jb.enter_object(); json_obj("success", td::JsonFalse()); json_obj("error", std::move(error)); + json_obj("external_not_accepted", td::JsonFalse()); json_obj.leave(); return strdup(jb.string_builder().as_cslice().c_str()); } @@ -51,6 +53,7 @@ const char *external_not_accepted_response(std::string&& vm_log, int vm_exit_cod auto json_obj = jb.enter_object(); json_obj("success", td::JsonFalse()); json_obj("error", "External message not accepted by smart contract"); + json_obj("external_not_accepted", td::JsonTrue()); json_obj("vm_log", std::move(vm_log)); json_obj("vm_exit_code", vm_exit_code); json_obj("elapsed_time", elapsed_time); @@ -131,13 +134,16 @@ const char *transaction_emulator_emulate_transaction(void *transaction_emulator, } auto account = block::Account(wc, addr.bits()); - ton::UnixTime now = (unsigned)std::time(nullptr); + ton::UnixTime now = emulator->get_unixtime(); + if (!now) { + now = (unsigned)std::time(nullptr); + } bool is_special = wc == ton::masterchainId && emulator->get_config().is_special_smartcontract(addr); if (!account.unpack(vm::load_cell_slice_ref(shard_account_cell.move_as_ok()), td::Ref(), now, is_special)) { ERROR_RESPONSE(PSTRING() << "Can't unpack shard account"); } - auto result = emulator->emulate_transaction(std::move(account), message_cell, 0, 0, block::transaction::Transaction::tr_ord); + auto result = emulator->emulate_transaction(std::move(account), message_cell, now, 0, block::transaction::Transaction::tr_ord); if (result.is_error()) { ERROR_RESPONSE(PSTRING() << "Emulate transaction failed: " << result.move_as_error()); } @@ -176,6 +182,79 @@ const char *transaction_emulator_emulate_transaction(void *transaction_emulator, std::move(actions_boc_b64), emulation_success.elapsed_time); } +const char *transaction_emulator_emulate_tick_tock_transaction(void *transaction_emulator, const char *shard_account_boc, bool is_tock) { + auto emulator = static_cast(transaction_emulator); + + auto shard_account_cell = boc_b64_to_cell(shard_account_boc); + if (shard_account_cell.is_error()) { + ERROR_RESPONSE(PSTRING() << "Can't deserialize shard account boc: " << shard_account_cell.move_as_error()); + } + auto shard_account_slice = vm::load_cell_slice(shard_account_cell.ok_ref()); + block::gen::ShardAccount::Record shard_account; + if (!tlb::unpack(shard_account_slice, shard_account)) { + ERROR_RESPONSE(PSTRING() << "Can't unpack shard account cell"); + } + + td::Ref addr_slice; + auto account_slice = vm::load_cell_slice(shard_account.account); + if (block::gen::t_Account.get_tag(account_slice) == block::gen::Account::account_none) { + ERROR_RESPONSE(PSTRING() << "Can't run tick/tock transaction on account_none"); + } + block::gen::Account::Record_account account_record; + if (!tlb::unpack(account_slice, account_record)) { + ERROR_RESPONSE(PSTRING() << "Can't unpack account cell"); + } + addr_slice = std::move(account_record.addr); + ton::WorkchainId wc; + ton::StdSmcAddress addr; + if (!block::tlb::t_MsgAddressInt.extract_std_address(addr_slice, wc, addr)) { + ERROR_RESPONSE(PSTRING() << "Can't extract account address"); + } + + auto account = block::Account(wc, addr.bits()); + ton::UnixTime now = emulator->get_unixtime(); + if (!now) { + now = (unsigned)std::time(nullptr); + } + bool is_special = wc == ton::masterchainId && emulator->get_config().is_special_smartcontract(addr); + if (!account.unpack(vm::load_cell_slice_ref(shard_account_cell.move_as_ok()), td::Ref(), now, is_special)) { + ERROR_RESPONSE(PSTRING() << "Can't unpack shard account"); + } + + auto trans_type = is_tock ? block::transaction::Transaction::tr_tock : block::transaction::Transaction::tr_tick; + auto result = emulator->emulate_transaction(std::move(account), {}, now, 0, trans_type); + if (result.is_error()) { + ERROR_RESPONSE(PSTRING() << "Emulate transaction failed: " << result.move_as_error()); + } + auto emulation_result = result.move_as_ok(); + + auto emulation_success = dynamic_cast(*emulation_result); + auto trans_boc_b64 = cell_to_boc_b64(std::move(emulation_success.transaction)); + if (trans_boc_b64.is_error()) { + ERROR_RESPONSE(PSTRING() << "Can't serialize Transaction to boc " << trans_boc_b64.move_as_error()); + } + + auto new_shard_account_cell = vm::CellBuilder().store_ref(emulation_success.account.total_state) + .store_bits(emulation_success.account.last_trans_hash_.as_bitslice()) + .store_long(emulation_success.account.last_trans_lt_).finalize(); + auto new_shard_account_boc_b64 = cell_to_boc_b64(std::move(new_shard_account_cell)); + if (new_shard_account_boc_b64.is_error()) { + ERROR_RESPONSE(PSTRING() << "Can't serialize ShardAccount to boc " << new_shard_account_boc_b64.move_as_error()); + } + + td::optional actions_boc_b64; + if (emulation_success.actions.not_null()) { + auto actions_boc_b64_result = cell_to_boc_b64(std::move(emulation_success.actions)); + if (actions_boc_b64_result.is_error()) { + ERROR_RESPONSE(PSTRING() << "Can't serialize actions list cell to boc " << actions_boc_b64_result.move_as_error()); + } + actions_boc_b64 = actions_boc_b64_result.move_as_ok(); + } + + return success_response(trans_boc_b64.move_as_ok(), new_shard_account_boc_b64.move_as_ok(), std::move(emulation_success.vm_log), + std::move(actions_boc_b64), emulation_success.elapsed_time); +} + bool transaction_emulator_set_unixtime(void *transaction_emulator, uint32_t unixtime) { auto emulator = static_cast(transaction_emulator); @@ -309,16 +388,19 @@ bool tvm_emulator_set_c7(void *tvm_emulator, const char *address, uint32_t unixt return false; } - auto config_params_cell = boc_b64_to_cell(config_boc); - if (config_params_cell.is_error()) { - LOG(ERROR) << "Can't deserialize config params boc: " << config_params_cell.move_as_error(); - return false; - } - auto global_config = std::make_shared(config_params_cell.move_as_ok(), td::Bits256::zero(), block::Config::needWorkchainInfo | block::Config::needSpecialSmc); - auto unpack_res = global_config->unpack(); - if (unpack_res.is_error()) { - LOG(ERROR) << "Can't unpack config params"; - return false; + std::shared_ptr global_config; + if (config_boc != nullptr) { + auto config_params_cell = boc_b64_to_cell(config_boc); + if (config_params_cell.is_error()) { + LOG(ERROR) << "Can't deserialize config params boc: " << config_params_cell.move_as_error(); + return false; + } + global_config = std::make_shared(config_params_cell.move_as_ok(), td::Bits256::zero(), block::Config::needWorkchainInfo | block::Config::needSpecialSmc); + auto unpack_res = global_config->unpack(); + if (unpack_res.is_error()) { + LOG(ERROR) << "Can't unpack config params"; + return false; + } } auto rand_seed_hex_slice = td::Slice(rand_seed_hex); @@ -365,6 +447,9 @@ const char *tvm_emulator_run_get_method(void *tvm_emulator, int method_id, const auto emulator = static_cast(tvm_emulator); auto result = emulator->run_get_method(method_id, stack); + vm::FakeVmStateLimits fstate(1000); // limit recursive (de)serialization calls + vm::VmStateInterface::Guard guard(&fstate); + vm::CellBuilder stack_cb; if (!result.stack->serialize(stack_cb)) { ERROR_RESPONSE(PSTRING() << "Couldn't serialize stack"); diff --git a/emulator/emulator-extern.h b/emulator/emulator-extern.h index db59a822d..c2b0bf9a2 100644 --- a/emulator/emulator-extern.h +++ b/emulator/emulator-extern.h @@ -80,8 +80,9 @@ EMULATOR_EXPORT bool transaction_emulator_set_debug_enabled(void *transaction_em * @return Json object with error: * { * "success": false, - * "error": "Error description" - * // and optional fields "vm_exit_code" and "vm_log" in case external message was not accepted. + * "error": "Error description", + * "external_not_accepted": false, + * // and optional fields "vm_exit_code", "vm_log", "elapsed_time" in case external message was not accepted. * } * Or success: * { @@ -89,11 +90,35 @@ EMULATOR_EXPORT bool transaction_emulator_set_debug_enabled(void *transaction_em * "transaction": "Base64 encoded Transaction boc", * "shard_account": "Base64 encoded new ShardAccount boc", * "vm_log": "execute DUP...", - * "actions": "Base64 encoded compute phase actions boc (OutList n)" + * "actions": "Base64 encoded compute phase actions boc (OutList n)", + * "elapsed_time": 0.02 * } */ EMULATOR_EXPORT const char *transaction_emulator_emulate_transaction(void *transaction_emulator, const char *shard_account_boc, const char *message_boc); +/** + * @brief Emulate tick tock transaction + * @param transaction_emulator Pointer to TransactionEmulator object + * @param shard_account_boc Base64 encoded BoC serialized ShardAccount of special account + * @param is_tock True for tock transactions, false for tick + * @return Json object with error: + * { + * "success": false, + * "error": "Error description", + * "external_not_accepted": false + * } + * Or success: + * { + * "success": true, + * "transaction": "Base64 encoded Transaction boc", + * "shard_account": "Base64 encoded new ShardAccount boc", + * "vm_log": "execute DUP...", + * "actions": "Base64 encoded compute phase actions boc (OutList n)", + * "elapsed_time": 0.02 + * } + */ +EMULATOR_EXPORT const char *transaction_emulator_emulate_tick_tock_transaction(void *transaction_emulator, const char *shard_account_boc, bool is_tock); + /** * @brief Destroy TransactionEmulator object * @param transaction_emulator Pointer to TransactionEmulator object @@ -129,7 +154,7 @@ EMULATOR_EXPORT bool tvm_emulator_set_libraries(void *tvm_emulator, const char * * @param unixtime Unix timestamp * @param balance Smart contract balance * @param rand_seed_hex Random seed as hex string of length 64 - * @param config Base64 encoded BoC serialized Config dictionary (Hashmap 32 ^Cell) + * @param config Base64 encoded BoC serialized Config dictionary (Hashmap 32 ^Cell). Optional. * @return true in case of success, false in case of error */ EMULATOR_EXPORT bool tvm_emulator_set_c7(void *tvm_emulator, const char *address, uint32_t unixtime, uint64_t balance, const char *rand_seed_hex, const char *config); diff --git a/emulator/emulator_export_list b/emulator/emulator_export_list index 64d4ff596..950c57a07 100644 --- a/emulator/emulator_export_list +++ b/emulator/emulator_export_list @@ -7,6 +7,7 @@ _transaction_emulator_set_config _transaction_emulator_set_libs _transaction_emulator_set_debug_enabled _transaction_emulator_emulate_transaction +_transaction_emulator_emulate_tick_tock_transaction _transaction_emulator_destroy _emulator_set_verbosity_level _tvm_emulator_create diff --git a/emulator/transaction-emulator.h b/emulator/transaction-emulator.h index 08343cb87..b26f4e8a8 100644 --- a/emulator/transaction-emulator.h +++ b/emulator/transaction-emulator.h @@ -59,6 +59,10 @@ class TransactionEmulator { return config_; } + ton::UnixTime get_unixtime() { + return unixtime_; + } + td::Result> emulate_transaction( block::Account&& account, td::Ref msg_root, ton::UnixTime utime, ton::LogicalTime lt, int trans_type); diff --git a/emulator/tvm-emulator.hpp b/emulator/tvm-emulator.hpp index 0236f0ca7..46e2538d4 100644 --- a/emulator/tvm-emulator.hpp +++ b/emulator/tvm-emulator.hpp @@ -28,7 +28,9 @@ class TvmEmulator { args_.set_now(unixtime); args_.set_balance(balance); args_.set_rand_seed(rand_seed); - args_.set_config(config); + if (config) { + args_.set_config(config); + } } void set_debug_enabled(bool debug_enabled) { From 8839e3a81427fbacb202a4b5156c5b062063e677 Mon Sep 17 00:00:00 2001 From: Marat <98183742+dungeon-master-666@users.noreply.github.com> Date: Wed, 24 May 2023 10:40:21 +0100 Subject: [PATCH 03/50] [tonlib] Limit stack serialization (#693) --- tonlib/tonlib/TonlibClient.cpp | 29 +++++++++++++++++++++++------ 1 file changed, 23 insertions(+), 6 deletions(-) diff --git a/tonlib/tonlib/TonlibClient.cpp b/tonlib/tonlib/TonlibClient.cpp index a2dfa9cfc..e29d0b088 100644 --- a/tonlib/tonlib/TonlibClient.cpp +++ b/tonlib/tonlib/TonlibClient.cpp @@ -4262,7 +4262,10 @@ bool is_list(vm::StackEntry entry) { entry = entry.as_tuple()->at(1); } }; -auto to_tonlib_api(const vm::StackEntry& entry) -> tonlib_api::object_ptr { +auto to_tonlib_api(const vm::StackEntry& entry, int& limit) -> td::Result> { + if (limit <= 0) { + return td::Status::Error(PSLICE() << "TVM stack size exceeds limit"); + } switch (entry.type()) { case vm::StackEntry::Type::t_int: return tonlib_api::make_object( @@ -4279,7 +4282,8 @@ auto to_tonlib_api(const vm::StackEntry& entry) -> tonlib_api::object_ptrat(0))); + TRY_RESULT(tl_entry, to_tonlib_api(node.as_tuple()->at(0), --limit)); + elements.push_back(std::move(tl_entry)); node = node.as_tuple()->at(1); } return tonlib_api::make_object( @@ -4287,7 +4291,8 @@ auto to_tonlib_api(const vm::StackEntry& entry) -> tonlib_api::object_ptr( tonlib_api::make_object(std::move(elements))); @@ -4299,6 +4304,16 @@ auto to_tonlib_api(const vm::StackEntry& entry) -> tonlib_api::object_ptr& stack) -> td::Result>> { + int stack_limit = 1000; + std::vector> tl_stack; + for (auto& entry: stack->as_span()) { + TRY_RESULT(tl_entry, to_tonlib_api(entry, --stack_limit)); + tl_stack.push_back(std::move(tl_entry)); + } + return tl_stack; +} + td::Result from_tonlib_api(tonlib_api::tvm_StackEntry& entry) { // TODO: error codes // downcast_call @@ -4510,10 +4525,12 @@ void TonlibClient::perform_smc_execution(td::Ref smc, ton::S auto res = smc->run_get_method(args); // smc.runResult gas_used:int53 stack:vector exit_code:int32 = smc.RunResult; - std::vector> res_stack; - for (auto& entry : res.stack->as_span()) { - res_stack.push_back(to_tonlib_api(entry)); + auto R = to_tonlib_api(res.stack); + if (R.is_error()) { + promise.set_error(R.move_as_error()); + return; } + auto res_stack = R.move_as_ok(); if (res.missing_library.not_null()) { td::Bits256 hash = res.missing_library; From d6b11d9d3613963291bcf11dc284776a76be3eb8 Mon Sep 17 00:00:00 2001 From: Marat <98183742+dungeon-master-666@users.noreply.github.com> Date: Wed, 24 May 2023 14:09:29 +0100 Subject: [PATCH 04/50] build fix (#707) --- crypto/vm/continuation.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/crypto/vm/continuation.cpp b/crypto/vm/continuation.cpp index dc3ad5e95..913869808 100644 --- a/crypto/vm/continuation.cpp +++ b/crypto/vm/continuation.cpp @@ -264,6 +264,7 @@ std::ostream& operator<<(std::ostream& os, const Continuation& cont) { os << td::buffer_to_hex(boc.move_as_ok().as_slice()); } } + return os; } bool QuitCont::serialize(CellBuilder& cb) const { From 9f93888cf402f8421fef38406b67886be043ac58 Mon Sep 17 00:00:00 2001 From: EmelyanenkoK Date: Wed, 24 May 2023 21:14:13 +0300 Subject: [PATCH 05/50] TVM Upgrade (#686) * New TVM instructions * Remove PREVBLOCKS * Separate target ton_crypto into TVM-related and -unrelared code * Add fine for failed "send message"; rework SENDMSG * Fix include * Fix bugs, improve action fines * Disable fines for special accounts * Handle msg_balance_remaining.grams == null in transaction.cpp * Bugfixes in SENDMSG * Fix fee calculation in SENDMSG * Fix CellStorageStat and transaction.cpp after merge * SETBOUNCEONACTIONPHASEFAIL instruction * ADDDIVMOD instructions * RUNVM, RUNVMX instructions * Changes in RUNVM * Tests for adddiv and runvm * HASHEXT instruction * Improve opcode-timing More iterations Don't measure preliminary run Remove logs and other excessive operations Add "error" to output * Increase RUNVM gas price * Optimize HASHEXT, adjust gas price * Add "bounce of action fail" flag to actions * Stack operations with unlimited arguments * Ristretto255 instructions * Adjust gas consumption * Optional fixed number of return values in RUNVM, fix exception handling * Adjust gas consumption * Simplify gas consumption logic * Support of secp256k1 and sodium libraries in builds (#11) * add support of secp256k1 library to the builds (linux, win) * add support of secp256k1 library to the builds (linux, win) * install secp256k1 via brew * install libsodium via brew; change sodium to upper case in FindSodium.cmake * install libsodium via brew; change sodium to upper case in FindSodium.cmake * simplify FindSodium.cmake * bug fixing * bug fixing * bug fixing * add macro SODIUM_STATIC * adjust build command for windows * put back original FindSodium.cmake * put back original FindSodium.cmake * fix sodium unzipped path for windows; add ninja * fix sodium unzipped path for windows; add ninja * fix sodium unzipped path for windows; add ninja * Win32 github build for secp256k1 * x64 architecture github build for secp256k1 * fix sodium linking on linux * enable docker buildx arm64 builds from forked repos * enable docker buildx arm64 builds from forked repos * enable docker buildx arm64 builds from forked repos * adjust mac builds for secp2561k and sodium * fix tonlib jni generation * minor fix * sync fixes across platforms * add libsodium build script for android and precompiled static libraries * build tonlib for android (fails) * FindSodium uppercase * remove system libsodium for android, use precompiled instead; specify SECP256K1_INCLUDE_DIR fir mac 12.6 * uppercase sodium * simplify FindSodium * fix windows build sodium path; use ninja for windows * simplify sodium 2 * adjust windows sodium paths; add paths to android jni * add ninja build windows * add ninja build windows * add ninja build windows 2 * remove win ninja * fix 1 * fix 2 * fix win 3 * fix linux compile 3 * fix jni 1 * fix jni 2 and mac * fix jni 3 * fix jni 4 * fix jni 5 * fix mac 6 * fix mac 7 and jni paths * fix jni 8 * rework sodium for android * rework sodium for android * rework sodium for android 2 * fixed sodium for android 2 * fixed sodium for android 3 * static secp256k1 for android * add precompiled arm secp256k1 * add precompiled arm secp256k1 * build native-lib with secp256k1 x86-64 (non arm) * update precompiled with NDK libsecp256k1.a * update precompiled with NDK libsecp256k1.a * update precompiled with NDK libsecp256k1.a * refactor llvm-strip location * refactor llvm-strip location * add native-lib.so for armv7a, armv8a * add native-lib.so for armv7a, armv8a * test armv7a, armv8a * armv7a - fails linking on sodium, test -> armv8a * works x86-64, armv7a - fails linking on sodium, armv8a - fails linking secp256k1 (incompatible with aarch64linux) * update libpsec256k1, sodium static libs * test x86 android native-lib * test armv7 android native-lib * test armv8 android native-lib * x86_64 and arm64 android native-lib works * x86_64 and arm64 android native-lib works * x86_64 and arm64 android native-lib works * test armv7 android native-lib * test all android native-libs * test all android native-libs * test all android native-libs * test all android native-libs - without SodiumAndroid * test all android native-libs - with FindSodiumAndroid.cmake * win, with Sodium via SODIUM_DIR * win, with Sodium via SODIUM_DIR env * win, with Sodium via SODIUM_DIR env * win, with Sodium via SODIUM_DIR env and SODIUM_USE_STATIC_LIBS * win, with Sodium via SODIUM_DIR, SODIUM_USE_STATIC_LIBS and SODIUM_INCLUDE_DIR * android, with FindSodium * android, with FindSodium with SODIUM_USE_STATIC_LIBS * remove if not apple * target_link_libraries(ton_crypto_core PUBLIC secp256k1) * android SECP256K1_INCLUDE_DIRS * android SECP256K1_INCLUDE_DIR * add libsecp256k1.a/so pre-compiled with ubuntu 22 x86-64 * add libsecp256k1.a/so pre-compiled with ubuntu 22 x86-64 * sodium dirs * sodium dirs * sodium dirs * remove NOT APPLE and SodiumAndroid * add NOT APPLE and remove SodiumAndroid * add NOT APPLE and remove SodiumAndroid * remove build scripts for 18.04, reduce CMakeLists.txt * remove build scripts for 18.04, reduce CMakeLists.txt * Fix cas consumption during library load * Fix fetch_config_params after merge * Add all ADDDIVMOD ops to Asm.fif * Save unpaid storage fee to due_payment * Add "set prev blocks info" to emulator * Adjusted builds (#13) * Update flake.nix Add libsodium * add libsecp256k1-dev and libsodium-dev into wasm build * make back emulator a shared library; put emulator to artifacts; compile wasm artifacts with sodium and secp256k1. * add secp256k1 to nix * compile emulator statically with nix * compile emulator statically with nix * compile emulator lib statically with nix * compile emulator lib statically with nix * add libemulator to artifacts * add shared libemulator library to artifacts * minor release fix * update set-output commands; add recent_changelog.md * releases fixes * releases fixes, multiline * releases fixes, multiline * releases fixes, multiline * put back multiline changelog * put back multiline changelog * ConfigParam 19 (global-id) and GLOBALID instruction * Fix gas consumption in HASHEXT * Add blst library * Add bls instructions * Allow passing long code to opcode-timing * Add bls testcase * More BLS instructions * Fix tests, add bls tests * Add more bls tests * Improve some bls operations * Adjust some BLS gas prices * Adjust BLS gas prices * Enable __BLST_PORTABLE__ flag only if PORTABLE flag is set * Add tests for BLS_PAIRING * GASCONSUMED instruction * Fix compilation against docker with blst library; (#14) * fix compilation against docker with blst library; add precompiled libblst.a to android builds * minor fix * Adjust BLKSWX gas * Fix comparison with NAN * Allow arbitrary integers for scalars in ristretto multiplication, fix test * Adjust nix builds according to PR 694 (#15) * integrate and test PR-694 * integrate and test PR-694, test 2 * Add P256_CHKSIGN (secp256r1) --------- Co-authored-by: SpyCheese Co-authored-by: neodiX42 --- .github/script/amd64-20.04.Dockerfile | 4 +- .github/script/amd64-22.04.Dockerfile | 4 +- .github/script/arm64-20.04.Dockerfile | 4 +- .github/script/arm64-22.04.Dockerfile | 4 +- .github/script/fift-func-wasm-build-ubuntu.sh | 44 +- .github/workflows/create-release.yml | 2 +- .github/workflows/macos-11.7-compile.yml | 7 +- .github/workflows/macos-12.6-compile.yml | 16 +- .github/workflows/ton-aarch64-linux.yml | 3 +- .github/workflows/ton-aarch64-macos.yml | 1 + .github/workflows/ton-ccpcheck.yml | 2 +- .github/workflows/ton-wasm-emscripten.yml | 2 +- .github/workflows/ton-x86-64-linux.yml | 3 +- .github/workflows/ton-x86-64-macos.yml | 1 + .github/workflows/tonlib-android-jni.yml | 17 +- .github/workflows/ubuntu-22.04-compile.yml | 6 +- .github/workflows/ubuntu-compile.yml | 6 +- .github/workflows/win-2019-compile.yml | 24 +- .gitmodules | 3 + CMake/BuildBLST.cmake | 30 + CMake/FindSecp256k1.cmake | 29 + CMake/FindSodium.cmake | 297 +++++ CMakeLists.txt | 2 + common/CMakeLists.txt | 3 +- common/global-version.h | 24 + crypto/CMakeLists.txt | 161 ++- crypto/block/block.tlb | 4 +- crypto/block/mc-config.cpp | 38 + crypto/block/mc-config.h | 1 + crypto/block/transaction.cpp | 227 +++- crypto/block/transaction.h | 32 +- crypto/ellcurve/p256.cpp | 91 ++ crypto/ellcurve/p256.h | 26 + crypto/ellcurve/secp256k1.cpp | 42 + crypto/ellcurve/secp256k1.h | 23 + crypto/fift/lib/Asm.fif | 113 +- crypto/fift/words.cpp | 7 +- crypto/keccak/keccak.cpp | 473 ++++++++ crypto/keccak/keccak.h | 41 + crypto/test/fift.cpp | 41 +- crypto/test/fift/adddiv.fif | 144 +++ crypto/test/fift/bls.fif | 954 ++++++++++++++++ crypto/test/fift/bls_ops.fif | 215 ++++ crypto/test/fift/deep_stack_ops.fif | 27 + crypto/test/fift/hash_ext.fif | 98 ++ crypto/test/fift/rist255.fif | 89 ++ crypto/test/fift/tvm_runvm.fif | 228 ++++ crypto/vm/Hasher.cpp | 148 +++ crypto/vm/Hasher.h | 58 + crypto/vm/arithops.cpp | 206 +++- crypto/vm/bls.cpp | 334 ++++++ crypto/vm/bls.h | 65 ++ crypto/vm/boc.h | 3 + crypto/vm/contops.cpp | 75 +- crypto/vm/opctable.cpp | 20 + crypto/vm/opctable.h | 18 + crypto/vm/stack.cpp | 2 +- crypto/vm/stack.hpp | 2 +- crypto/vm/stackops.cpp | 39 +- crypto/vm/tonops.cpp | 1012 ++++++++++++++++- crypto/vm/tupleops.cpp | 12 +- crypto/vm/vm.cpp | 175 ++- crypto/vm/vm.h | 94 +- doc/GlobalVersions.md | 39 + docker/Dockerfile | 2 +- emulator/CMakeLists.txt | 2 + emulator/emulator-extern.cpp | 27 + emulator/emulator-extern.h | 8 + emulator/emulator_export_list | 1 + emulator/transaction-emulator.cpp | 6 +- emulator/transaction-emulator.h | 10 +- example/android/CMakeLists.txt | 3 - example/android/README.md | 4 + example/android/build-all.sh | 11 + example/android/build.sh | 49 +- .../android/third_party/blst/armv7/libblst.a | Bin 0 -> 287466 bytes .../android/third_party/blst/armv8/libblst.a | Bin 0 -> 254832 bytes .../android/third_party/blst/i686/libblst.a | Bin 0 -> 337346 bytes .../android/third_party/blst/x86-64/libblst.a | Bin 0 -> 251402 bytes .../android/third_party/libsodium/build.sh | 31 + .../include/sodium.h | 69 ++ .../include/sodium/core.h | 28 + .../include/sodium/crypto_aead_aes256gcm.h | 179 +++ .../sodium/crypto_aead_chacha20poly1305.h | 180 +++ .../sodium/crypto_aead_xchacha20poly1305.h | 100 ++ .../include/sodium/crypto_auth.h | 46 + .../include/sodium/crypto_auth_hmacsha256.h | 70 ++ .../include/sodium/crypto_auth_hmacsha512.h | 68 ++ .../sodium/crypto_auth_hmacsha512256.h | 65 ++ .../include/sodium/crypto_box.h | 177 +++ .../crypto_box_curve25519xchacha20poly1305.h | 164 +++ .../crypto_box_curve25519xsalsa20poly1305.h | 112 ++ .../include/sodium/crypto_core_ed25519.h | 100 ++ .../include/sodium/crypto_core_hchacha20.h | 36 + .../include/sodium/crypto_core_hsalsa20.h | 36 + .../include/sodium/crypto_core_ristretto255.h | 100 ++ .../include/sodium/crypto_core_salsa20.h | 36 + .../include/sodium/crypto_core_salsa2012.h | 36 + .../include/sodium/crypto_core_salsa208.h | 40 + .../include/sodium/crypto_generichash.h | 84 ++ .../sodium/crypto_generichash_blake2b.h | 118 ++ .../include/sodium/crypto_hash.h | 40 + .../include/sodium/crypto_hash_sha256.h | 60 + .../include/sodium/crypto_hash_sha512.h | 60 + .../include/sodium/crypto_kdf.h | 53 + .../include/sodium/crypto_kdf_blake2b.h | 44 + .../include/sodium/crypto_kx.h | 66 ++ .../include/sodium/crypto_onetimeauth.h | 65 ++ .../sodium/crypto_onetimeauth_poly1305.h | 72 ++ .../include/sodium/crypto_pwhash.h | 147 +++ .../include/sodium/crypto_pwhash_argon2i.h | 122 ++ .../include/sodium/crypto_pwhash_argon2id.h | 122 ++ .../crypto_pwhash_scryptsalsa208sha256.h | 120 ++ .../include/sodium/crypto_scalarmult.h | 46 + .../sodium/crypto_scalarmult_curve25519.h | 42 + .../sodium/crypto_scalarmult_ed25519.h | 51 + .../sodium/crypto_scalarmult_ristretto255.h | 43 + .../include/sodium/crypto_secretbox.h | 93 ++ .../crypto_secretbox_xchacha20poly1305.h | 70 ++ .../crypto_secretbox_xsalsa20poly1305.h | 69 ++ .../crypto_secretstream_xchacha20poly1305.h | 108 ++ .../include/sodium/crypto_shorthash.h | 41 + .../sodium/crypto_shorthash_siphash24.h | 50 + .../include/sodium/crypto_sign.h | 107 ++ .../include/sodium/crypto_sign_ed25519.h | 124 ++ .../crypto_sign_edwards25519sha512batch.h | 55 + .../include/sodium/crypto_stream.h | 59 + .../include/sodium/crypto_stream_chacha20.h | 106 ++ .../include/sodium/crypto_stream_salsa20.h | 61 + .../include/sodium/crypto_stream_salsa2012.h | 53 + .../include/sodium/crypto_stream_salsa208.h | 56 + .../include/sodium/crypto_stream_xchacha20.h | 61 + .../include/sodium/crypto_stream_xsalsa20.h | 61 + .../include/sodium/crypto_verify_16.h | 23 + .../include/sodium/crypto_verify_32.h | 23 + .../include/sodium/crypto_verify_64.h | 23 + .../include/sodium/export.h | 57 + .../include/sodium/randombytes.h | 72 ++ .../sodium/randombytes_internal_random.h | 22 + .../include/sodium/randombytes_sysrandom.h | 19 + .../include/sodium/runtime.h | 52 + .../include/sodium/utils.h | 179 +++ .../include/sodium/version.h | 33 + .../libsodium-android-armv7-a/lib/libsodium.a | Bin 0 -> 433614 bytes .../lib/libsodium.la | 41 + .../lib/libsodium.so | Bin 0 -> 314464 bytes .../lib/pkgconfig/libsodium.pc | 12 + .../include/sodium.h | 69 ++ .../include/sodium/core.h | 28 + .../include/sodium/crypto_aead_aes256gcm.h | 179 +++ .../sodium/crypto_aead_chacha20poly1305.h | 180 +++ .../sodium/crypto_aead_xchacha20poly1305.h | 100 ++ .../include/sodium/crypto_auth.h | 46 + .../include/sodium/crypto_auth_hmacsha256.h | 70 ++ .../include/sodium/crypto_auth_hmacsha512.h | 68 ++ .../sodium/crypto_auth_hmacsha512256.h | 65 ++ .../include/sodium/crypto_box.h | 177 +++ .../crypto_box_curve25519xchacha20poly1305.h | 164 +++ .../crypto_box_curve25519xsalsa20poly1305.h | 112 ++ .../include/sodium/crypto_core_ed25519.h | 100 ++ .../include/sodium/crypto_core_hchacha20.h | 36 + .../include/sodium/crypto_core_hsalsa20.h | 36 + .../include/sodium/crypto_core_ristretto255.h | 100 ++ .../include/sodium/crypto_core_salsa20.h | 36 + .../include/sodium/crypto_core_salsa2012.h | 36 + .../include/sodium/crypto_core_salsa208.h | 40 + .../include/sodium/crypto_generichash.h | 84 ++ .../sodium/crypto_generichash_blake2b.h | 118 ++ .../include/sodium/crypto_hash.h | 40 + .../include/sodium/crypto_hash_sha256.h | 60 + .../include/sodium/crypto_hash_sha512.h | 60 + .../include/sodium/crypto_kdf.h | 53 + .../include/sodium/crypto_kdf_blake2b.h | 44 + .../include/sodium/crypto_kx.h | 66 ++ .../include/sodium/crypto_onetimeauth.h | 65 ++ .../sodium/crypto_onetimeauth_poly1305.h | 72 ++ .../include/sodium/crypto_pwhash.h | 147 +++ .../include/sodium/crypto_pwhash_argon2i.h | 122 ++ .../include/sodium/crypto_pwhash_argon2id.h | 122 ++ .../crypto_pwhash_scryptsalsa208sha256.h | 120 ++ .../include/sodium/crypto_scalarmult.h | 46 + .../sodium/crypto_scalarmult_curve25519.h | 42 + .../sodium/crypto_scalarmult_ed25519.h | 51 + .../sodium/crypto_scalarmult_ristretto255.h | 43 + .../include/sodium/crypto_secretbox.h | 93 ++ .../crypto_secretbox_xchacha20poly1305.h | 70 ++ .../crypto_secretbox_xsalsa20poly1305.h | 69 ++ .../crypto_secretstream_xchacha20poly1305.h | 108 ++ .../include/sodium/crypto_shorthash.h | 41 + .../sodium/crypto_shorthash_siphash24.h | 50 + .../include/sodium/crypto_sign.h | 107 ++ .../include/sodium/crypto_sign_ed25519.h | 124 ++ .../crypto_sign_edwards25519sha512batch.h | 55 + .../include/sodium/crypto_stream.h | 59 + .../include/sodium/crypto_stream_chacha20.h | 106 ++ .../include/sodium/crypto_stream_salsa20.h | 61 + .../include/sodium/crypto_stream_salsa2012.h | 53 + .../include/sodium/crypto_stream_salsa208.h | 56 + .../include/sodium/crypto_stream_xchacha20.h | 61 + .../include/sodium/crypto_stream_xsalsa20.h | 61 + .../include/sodium/crypto_verify_16.h | 23 + .../include/sodium/crypto_verify_32.h | 23 + .../include/sodium/crypto_verify_64.h | 23 + .../include/sodium/export.h | 57 + .../include/sodium/randombytes.h | 72 ++ .../sodium/randombytes_internal_random.h | 22 + .../include/sodium/randombytes_sysrandom.h | 19 + .../include/sodium/runtime.h | 52 + .../include/sodium/utils.h | 179 +++ .../include/sodium/version.h | 33 + .../libsodium-android-armv8-a/lib/libsodium.a | Bin 0 -> 433990 bytes .../lib/libsodium.la | 41 + .../lib/libsodium.so | Bin 0 -> 283928 bytes .../lib/pkgconfig/libsodium.pc | 12 + .../libsodium-android-i686/include/sodium.h | 69 ++ .../include/sodium/core.h | 28 + .../include/sodium/crypto_aead_aes256gcm.h | 179 +++ .../sodium/crypto_aead_chacha20poly1305.h | 180 +++ .../sodium/crypto_aead_xchacha20poly1305.h | 100 ++ .../include/sodium/crypto_auth.h | 46 + .../include/sodium/crypto_auth_hmacsha256.h | 70 ++ .../include/sodium/crypto_auth_hmacsha512.h | 68 ++ .../sodium/crypto_auth_hmacsha512256.h | 65 ++ .../include/sodium/crypto_box.h | 177 +++ .../crypto_box_curve25519xchacha20poly1305.h | 164 +++ .../crypto_box_curve25519xsalsa20poly1305.h | 112 ++ .../include/sodium/crypto_core_ed25519.h | 100 ++ .../include/sodium/crypto_core_hchacha20.h | 36 + .../include/sodium/crypto_core_hsalsa20.h | 36 + .../include/sodium/crypto_core_ristretto255.h | 100 ++ .../include/sodium/crypto_core_salsa20.h | 36 + .../include/sodium/crypto_core_salsa2012.h | 36 + .../include/sodium/crypto_core_salsa208.h | 40 + .../include/sodium/crypto_generichash.h | 84 ++ .../sodium/crypto_generichash_blake2b.h | 118 ++ .../include/sodium/crypto_hash.h | 40 + .../include/sodium/crypto_hash_sha256.h | 60 + .../include/sodium/crypto_hash_sha512.h | 60 + .../include/sodium/crypto_kdf.h | 53 + .../include/sodium/crypto_kdf_blake2b.h | 44 + .../include/sodium/crypto_kx.h | 66 ++ .../include/sodium/crypto_onetimeauth.h | 65 ++ .../sodium/crypto_onetimeauth_poly1305.h | 72 ++ .../include/sodium/crypto_pwhash.h | 147 +++ .../include/sodium/crypto_pwhash_argon2i.h | 122 ++ .../include/sodium/crypto_pwhash_argon2id.h | 122 ++ .../crypto_pwhash_scryptsalsa208sha256.h | 120 ++ .../include/sodium/crypto_scalarmult.h | 46 + .../sodium/crypto_scalarmult_curve25519.h | 42 + .../sodium/crypto_scalarmult_ed25519.h | 51 + .../sodium/crypto_scalarmult_ristretto255.h | 43 + .../include/sodium/crypto_secretbox.h | 93 ++ .../crypto_secretbox_xchacha20poly1305.h | 70 ++ .../crypto_secretbox_xsalsa20poly1305.h | 69 ++ .../crypto_secretstream_xchacha20poly1305.h | 108 ++ .../include/sodium/crypto_shorthash.h | 41 + .../sodium/crypto_shorthash_siphash24.h | 50 + .../include/sodium/crypto_sign.h | 107 ++ .../include/sodium/crypto_sign_ed25519.h | 124 ++ .../crypto_sign_edwards25519sha512batch.h | 55 + .../include/sodium/crypto_stream.h | 59 + .../include/sodium/crypto_stream_chacha20.h | 106 ++ .../include/sodium/crypto_stream_salsa20.h | 61 + .../include/sodium/crypto_stream_salsa2012.h | 53 + .../include/sodium/crypto_stream_salsa208.h | 56 + .../include/sodium/crypto_stream_xchacha20.h | 61 + .../include/sodium/crypto_stream_xsalsa20.h | 61 + .../include/sodium/crypto_verify_16.h | 23 + .../include/sodium/crypto_verify_32.h | 23 + .../include/sodium/crypto_verify_64.h | 23 + .../include/sodium/export.h | 57 + .../include/sodium/randombytes.h | 72 ++ .../sodium/randombytes_internal_random.h | 22 + .../include/sodium/randombytes_sysrandom.h | 19 + .../include/sodium/runtime.h | 52 + .../include/sodium/utils.h | 179 +++ .../include/sodium/version.h | 33 + .../libsodium-android-i686/lib/libsodium.a | Bin 0 -> 567114 bytes .../libsodium-android-i686/lib/libsodium.la | 41 + .../libsodium-android-i686/lib/libsodium.so | Bin 0 -> 454172 bytes .../lib/pkgconfig/libsodium.pc | 12 + .../include/sodium.h | 69 ++ .../include/sodium/core.h | 28 + .../include/sodium/crypto_aead_aes256gcm.h | 179 +++ .../sodium/crypto_aead_chacha20poly1305.h | 180 +++ .../sodium/crypto_aead_xchacha20poly1305.h | 100 ++ .../include/sodium/crypto_auth.h | 46 + .../include/sodium/crypto_auth_hmacsha256.h | 70 ++ .../include/sodium/crypto_auth_hmacsha512.h | 68 ++ .../sodium/crypto_auth_hmacsha512256.h | 65 ++ .../include/sodium/crypto_box.h | 177 +++ .../crypto_box_curve25519xchacha20poly1305.h | 164 +++ .../crypto_box_curve25519xsalsa20poly1305.h | 112 ++ .../include/sodium/crypto_core_ed25519.h | 100 ++ .../include/sodium/crypto_core_hchacha20.h | 36 + .../include/sodium/crypto_core_hsalsa20.h | 36 + .../include/sodium/crypto_core_ristretto255.h | 100 ++ .../include/sodium/crypto_core_salsa20.h | 36 + .../include/sodium/crypto_core_salsa2012.h | 36 + .../include/sodium/crypto_core_salsa208.h | 40 + .../include/sodium/crypto_generichash.h | 84 ++ .../sodium/crypto_generichash_blake2b.h | 118 ++ .../include/sodium/crypto_hash.h | 40 + .../include/sodium/crypto_hash_sha256.h | 60 + .../include/sodium/crypto_hash_sha512.h | 60 + .../include/sodium/crypto_kdf.h | 53 + .../include/sodium/crypto_kdf_blake2b.h | 44 + .../include/sodium/crypto_kx.h | 66 ++ .../include/sodium/crypto_onetimeauth.h | 65 ++ .../sodium/crypto_onetimeauth_poly1305.h | 72 ++ .../include/sodium/crypto_pwhash.h | 147 +++ .../include/sodium/crypto_pwhash_argon2i.h | 122 ++ .../include/sodium/crypto_pwhash_argon2id.h | 122 ++ .../crypto_pwhash_scryptsalsa208sha256.h | 120 ++ .../include/sodium/crypto_scalarmult.h | 46 + .../sodium/crypto_scalarmult_curve25519.h | 42 + .../sodium/crypto_scalarmult_ed25519.h | 51 + .../sodium/crypto_scalarmult_ristretto255.h | 43 + .../include/sodium/crypto_secretbox.h | 93 ++ .../crypto_secretbox_xchacha20poly1305.h | 70 ++ .../crypto_secretbox_xsalsa20poly1305.h | 69 ++ .../crypto_secretstream_xchacha20poly1305.h | 108 ++ .../include/sodium/crypto_shorthash.h | 41 + .../sodium/crypto_shorthash_siphash24.h | 50 + .../include/sodium/crypto_sign.h | 107 ++ .../include/sodium/crypto_sign_ed25519.h | 124 ++ .../crypto_sign_edwards25519sha512batch.h | 55 + .../include/sodium/crypto_stream.h | 59 + .../include/sodium/crypto_stream_chacha20.h | 106 ++ .../include/sodium/crypto_stream_salsa20.h | 61 + .../include/sodium/crypto_stream_salsa2012.h | 53 + .../include/sodium/crypto_stream_salsa208.h | 56 + .../include/sodium/crypto_stream_xchacha20.h | 61 + .../include/sodium/crypto_stream_xsalsa20.h | 61 + .../include/sodium/crypto_verify_16.h | 23 + .../include/sodium/crypto_verify_32.h | 23 + .../include/sodium/crypto_verify_64.h | 23 + .../include/sodium/export.h | 57 + .../include/sodium/randombytes.h | 72 ++ .../sodium/randombytes_internal_random.h | 22 + .../include/sodium/randombytes_sysrandom.h | 19 + .../include/sodium/runtime.h | 52 + .../include/sodium/utils.h | 179 +++ .../include/sodium/version.h | 33 + .../lib/libsodium.a | Bin 0 -> 579332 bytes .../lib/libsodium.la | 41 + .../lib/libsodium.so | Bin 0 -> 400864 bytes .../lib/pkgconfig/libsodium.pc | 12 + .../secp256k1/armv7/libsecp256k1.a | Bin 0 -> 134986 bytes .../secp256k1/armv7/libsecp256k1.so | Bin 0 -> 136228 bytes .../secp256k1/armv8/libsecp256k1.a | Bin 0 -> 167026 bytes .../secp256k1/armv8/libsecp256k1.so | Bin 0 -> 164768 bytes .../android/third_party/secp256k1/build.sh | 32 + .../third_party/secp256k1/i686/libsecp256k1.a | Bin 0 -> 427778 bytes .../secp256k1/i686/libsecp256k1.so | Bin 0 -> 386152 bytes .../third_party/secp256k1/include/secp256k1.h | 708 ++++++++++++ .../secp256k1/include/secp256k1_ecdh.h | 55 + .../include/secp256k1_preallocated.h | 128 +++ .../secp256k1/include/secp256k1_recovery.h | 110 ++ .../third_party/secp256k1/libsecp256k1.a | Bin 0 -> 698458 bytes .../third_party/secp256k1/libsecp256k1.so | Bin 0 -> 488416 bytes .../secp256k1/x86-64/libsecp256k1.a | Bin 0 -> 763762 bytes .../secp256k1/x86-64/libsecp256k1.so | Bin 0 -> 657040 bytes flake.nix | 9 +- test/regression-tests.ans | 7 + third-party/blst | 1 + tonlib/CMakeLists.txt | 4 +- tonlib/tonlib/TonlibClient.cpp | 15 +- utils/opcode-timing.cpp | 111 +- validator/impl/collator-impl.h | 3 +- validator/impl/collator.cpp | 4 +- validator/impl/liteserver.cpp | 1 + validator/impl/validate-query.cpp | 17 +- validator/impl/validate-query.hpp | 3 +- 374 files changed, 25799 insertions(+), 386 deletions(-) create mode 100644 CMake/BuildBLST.cmake create mode 100644 CMake/FindSecp256k1.cmake create mode 100644 CMake/FindSodium.cmake create mode 100644 common/global-version.h create mode 100644 crypto/ellcurve/p256.cpp create mode 100644 crypto/ellcurve/p256.h create mode 100644 crypto/ellcurve/secp256k1.cpp create mode 100644 crypto/ellcurve/secp256k1.h create mode 100644 crypto/keccak/keccak.cpp create mode 100644 crypto/keccak/keccak.h create mode 100644 crypto/test/fift/adddiv.fif create mode 100644 crypto/test/fift/bls.fif create mode 100644 crypto/test/fift/bls_ops.fif create mode 100644 crypto/test/fift/deep_stack_ops.fif create mode 100644 crypto/test/fift/hash_ext.fif create mode 100644 crypto/test/fift/rist255.fif create mode 100644 crypto/test/fift/tvm_runvm.fif create mode 100644 crypto/vm/Hasher.cpp create mode 100644 crypto/vm/Hasher.h create mode 100644 crypto/vm/bls.cpp create mode 100644 crypto/vm/bls.h create mode 100644 doc/GlobalVersions.md create mode 100644 example/android/third_party/blst/armv7/libblst.a create mode 100644 example/android/third_party/blst/armv8/libblst.a create mode 100644 example/android/third_party/blst/i686/libblst.a create mode 100644 example/android/third_party/blst/x86-64/libblst.a create mode 100644 example/android/third_party/libsodium/build.sh create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/core.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_aead_aes256gcm.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_aead_chacha20poly1305.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_aead_xchacha20poly1305.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_auth.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_auth_hmacsha256.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_auth_hmacsha512.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_auth_hmacsha512256.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_box.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_box_curve25519xchacha20poly1305.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_box_curve25519xsalsa20poly1305.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_core_ed25519.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_core_hchacha20.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_core_hsalsa20.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_core_ristretto255.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_core_salsa20.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_core_salsa2012.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_core_salsa208.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_generichash.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_generichash_blake2b.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_hash.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_hash_sha256.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_hash_sha512.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_kdf.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_kdf_blake2b.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_kx.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_onetimeauth.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_onetimeauth_poly1305.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_pwhash.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_pwhash_argon2i.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_pwhash_argon2id.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_pwhash_scryptsalsa208sha256.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_scalarmult.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_scalarmult_curve25519.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_scalarmult_ed25519.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_scalarmult_ristretto255.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_secretbox.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_secretbox_xchacha20poly1305.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_secretbox_xsalsa20poly1305.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_secretstream_xchacha20poly1305.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_shorthash.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_shorthash_siphash24.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_sign.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_sign_ed25519.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_sign_edwards25519sha512batch.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_stream.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_stream_chacha20.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_stream_salsa20.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_stream_salsa2012.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_stream_salsa208.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_stream_xchacha20.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_stream_xsalsa20.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_verify_16.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_verify_32.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_verify_64.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/export.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/randombytes.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/randombytes_internal_random.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/randombytes_sysrandom.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/runtime.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/utils.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/version.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/lib/libsodium.a create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/lib/libsodium.la create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/lib/libsodium.so create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/lib/pkgconfig/libsodium.pc create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/core.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_aead_aes256gcm.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_aead_chacha20poly1305.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_aead_xchacha20poly1305.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_auth.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_auth_hmacsha256.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_auth_hmacsha512.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_auth_hmacsha512256.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_box.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_box_curve25519xchacha20poly1305.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_box_curve25519xsalsa20poly1305.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_core_ed25519.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_core_hchacha20.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_core_hsalsa20.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_core_ristretto255.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_core_salsa20.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_core_salsa2012.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_core_salsa208.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_generichash.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_generichash_blake2b.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_hash.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_hash_sha256.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_hash_sha512.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_kdf.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_kdf_blake2b.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_kx.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_onetimeauth.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_onetimeauth_poly1305.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_pwhash.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_pwhash_argon2i.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_pwhash_argon2id.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_pwhash_scryptsalsa208sha256.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_scalarmult.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_scalarmult_curve25519.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_scalarmult_ed25519.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_scalarmult_ristretto255.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_secretbox.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_secretbox_xchacha20poly1305.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_secretbox_xsalsa20poly1305.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_secretstream_xchacha20poly1305.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_shorthash.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_shorthash_siphash24.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_sign.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_sign_ed25519.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_sign_edwards25519sha512batch.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_stream.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_stream_chacha20.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_stream_salsa20.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_stream_salsa2012.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_stream_salsa208.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_stream_xchacha20.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_stream_xsalsa20.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_verify_16.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_verify_32.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_verify_64.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/export.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/randombytes.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/randombytes_internal_random.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/randombytes_sysrandom.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/runtime.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/utils.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/version.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/lib/libsodium.a create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/lib/libsodium.la create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/lib/libsodium.so create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/lib/pkgconfig/libsodium.pc create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/core.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_aead_aes256gcm.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_aead_chacha20poly1305.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_aead_xchacha20poly1305.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_auth.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_auth_hmacsha256.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_auth_hmacsha512.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_auth_hmacsha512256.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_box.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_box_curve25519xchacha20poly1305.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_box_curve25519xsalsa20poly1305.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_core_ed25519.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_core_hchacha20.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_core_hsalsa20.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_core_ristretto255.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_core_salsa20.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_core_salsa2012.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_core_salsa208.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_generichash.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_generichash_blake2b.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_hash.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_hash_sha256.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_hash_sha512.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_kdf.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_kdf_blake2b.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_kx.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_onetimeauth.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_onetimeauth_poly1305.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_pwhash.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_pwhash_argon2i.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_pwhash_argon2id.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_pwhash_scryptsalsa208sha256.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_scalarmult.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_scalarmult_curve25519.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_scalarmult_ed25519.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_scalarmult_ristretto255.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_secretbox.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_secretbox_xchacha20poly1305.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_secretbox_xsalsa20poly1305.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_secretstream_xchacha20poly1305.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_shorthash.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_shorthash_siphash24.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_sign.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_sign_ed25519.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_sign_edwards25519sha512batch.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_stream.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_stream_chacha20.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_stream_salsa20.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_stream_salsa2012.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_stream_salsa208.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_stream_xchacha20.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_stream_xsalsa20.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_verify_16.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_verify_32.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_verify_64.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/export.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/randombytes.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/randombytes_internal_random.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/randombytes_sysrandom.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/runtime.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/utils.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/version.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/lib/libsodium.a create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/lib/libsodium.la create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/lib/libsodium.so create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/lib/pkgconfig/libsodium.pc create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/core.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_aead_aes256gcm.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_aead_chacha20poly1305.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_aead_xchacha20poly1305.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_auth.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_auth_hmacsha256.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_auth_hmacsha512.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_auth_hmacsha512256.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_box.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_box_curve25519xchacha20poly1305.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_box_curve25519xsalsa20poly1305.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_core_ed25519.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_core_hchacha20.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_core_hsalsa20.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_core_ristretto255.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_core_salsa20.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_core_salsa2012.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_core_salsa208.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_generichash.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_generichash_blake2b.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_hash.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_hash_sha256.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_hash_sha512.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_kdf.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_kdf_blake2b.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_kx.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_onetimeauth.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_onetimeauth_poly1305.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_pwhash.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_pwhash_argon2i.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_pwhash_argon2id.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_pwhash_scryptsalsa208sha256.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_scalarmult.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_scalarmult_curve25519.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_scalarmult_ed25519.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_scalarmult_ristretto255.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_secretbox.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_secretbox_xchacha20poly1305.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_secretbox_xsalsa20poly1305.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_secretstream_xchacha20poly1305.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_shorthash.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_shorthash_siphash24.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_sign.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_sign_ed25519.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_sign_edwards25519sha512batch.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_stream.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_stream_chacha20.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_stream_salsa20.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_stream_salsa2012.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_stream_salsa208.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_stream_xchacha20.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_stream_xsalsa20.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_verify_16.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_verify_32.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_verify_64.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/export.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/randombytes.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/randombytes_internal_random.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/randombytes_sysrandom.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/runtime.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/utils.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/version.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/lib/libsodium.a create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/lib/libsodium.la create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/lib/libsodium.so create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/lib/pkgconfig/libsodium.pc create mode 100644 example/android/third_party/secp256k1/armv7/libsecp256k1.a create mode 100644 example/android/third_party/secp256k1/armv7/libsecp256k1.so create mode 100644 example/android/third_party/secp256k1/armv8/libsecp256k1.a create mode 100644 example/android/third_party/secp256k1/armv8/libsecp256k1.so create mode 100644 example/android/third_party/secp256k1/build.sh create mode 100644 example/android/third_party/secp256k1/i686/libsecp256k1.a create mode 100644 example/android/third_party/secp256k1/i686/libsecp256k1.so create mode 100644 example/android/third_party/secp256k1/include/secp256k1.h create mode 100644 example/android/third_party/secp256k1/include/secp256k1_ecdh.h create mode 100644 example/android/third_party/secp256k1/include/secp256k1_preallocated.h create mode 100644 example/android/third_party/secp256k1/include/secp256k1_recovery.h create mode 100644 example/android/third_party/secp256k1/libsecp256k1.a create mode 100644 example/android/third_party/secp256k1/libsecp256k1.so create mode 100644 example/android/third_party/secp256k1/x86-64/libsecp256k1.a create mode 100644 example/android/third_party/secp256k1/x86-64/libsecp256k1.so create mode 160000 third-party/blst diff --git a/.github/script/amd64-20.04.Dockerfile b/.github/script/amd64-20.04.Dockerfile index cab9caa54..40d980e5e 100644 --- a/.github/script/amd64-20.04.Dockerfile +++ b/.github/script/amd64-20.04.Dockerfile @@ -2,13 +2,13 @@ FROM ubuntu:20.04 RUN apt update RUN DEBIAN_FRONTEND=noninteractive TZ=Etc/UTC apt-get -y install tzdata -RUN apt install -y build-essential cmake clang openssl libssl-dev zlib1g-dev gperf wget git curl libreadline-dev ccache libmicrohttpd-dev ninja-build pkg-config +RUN apt install -y build-essential cmake clang openssl libssl-dev zlib1g-dev gperf wget git curl libreadline-dev ccache libmicrohttpd-dev ninja-build libsecp256k1-dev libsodium-dev pkg-config WORKDIR / ARG BRANCH ARG REPO -RUN git clone --recurse-submodules https://github.com/$REPO && cd ton && git checkout $BRANCH +RUN git clone --recurse-submodules https://github.com/$REPO ton && cd ton && git checkout $BRANCH && git submodule update WORKDIR /ton RUN mkdir /ton/build diff --git a/.github/script/amd64-22.04.Dockerfile b/.github/script/amd64-22.04.Dockerfile index 1ed30e77e..44c9c40b7 100644 --- a/.github/script/amd64-22.04.Dockerfile +++ b/.github/script/amd64-22.04.Dockerfile @@ -2,13 +2,13 @@ FROM ubuntu:22.04 RUN apt update RUN DEBIAN_FRONTEND=noninteractive TZ=Etc/UTC apt-get -y install tzdata -RUN apt install -y build-essential cmake clang openssl libssl-dev zlib1g-dev gperf wget git curl libreadline-dev ccache libmicrohttpd-dev ninja-build pkg-config +RUN apt install -y build-essential cmake clang openssl libssl-dev zlib1g-dev gperf wget git curl libreadline-dev ccache libmicrohttpd-dev ninja-build libsecp256k1-dev libsodium-dev pkg-config WORKDIR / ARG BRANCH ARG REPO -RUN git clone --recurse-submodules https://github.com/$REPO && cd ton && git checkout $BRANCH +RUN git clone --recurse-submodules https://github.com/$REPO ton && cd ton && git checkout $BRANCH && git submodule update WORKDIR /ton RUN mkdir /ton/build diff --git a/.github/script/arm64-20.04.Dockerfile b/.github/script/arm64-20.04.Dockerfile index 9066c0f45..1f57dc401 100644 --- a/.github/script/arm64-20.04.Dockerfile +++ b/.github/script/arm64-20.04.Dockerfile @@ -2,13 +2,13 @@ FROM ubuntu:20.04 RUN apt update RUN DEBIAN_FRONTEND=noninteractive TZ=Etc/UTC apt-get -y install tzdata -RUN apt install -y build-essential cmake clang openssl libssl-dev zlib1g-dev gperf wget git curl libreadline-dev ccache libmicrohttpd-dev ninja-build pkg-config +RUN apt install -y build-essential cmake clang openssl libssl-dev zlib1g-dev gperf wget git curl libreadline-dev ccache libmicrohttpd-dev ninja-build libsecp256k1-dev libsodium-dev pkg-config WORKDIR / ARG BRANCH ARG REPO -RUN git clone --recurse-submodules https://github.com/$REPO && cd ton && git checkout $BRANCH +RUN git clone --recurse-submodules https://github.com/$REPO ton && cd ton && git checkout $BRANCH && git submodule update WORKDIR /ton RUN mkdir /ton/build diff --git a/.github/script/arm64-22.04.Dockerfile b/.github/script/arm64-22.04.Dockerfile index e2cbfadce..2b595839f 100644 --- a/.github/script/arm64-22.04.Dockerfile +++ b/.github/script/arm64-22.04.Dockerfile @@ -2,13 +2,13 @@ FROM ubuntu:22.04 RUN apt update RUN DEBIAN_FRONTEND=noninteractive TZ=Etc/UTC apt-get -y install tzdata -RUN apt install -y build-essential cmake clang openssl libssl-dev zlib1g-dev gperf wget git curl libreadline-dev ccache libmicrohttpd-dev ninja-build pkg-config +RUN apt install -y build-essential cmake clang openssl libssl-dev zlib1g-dev gperf wget git curl libreadline-dev ccache libmicrohttpd-dev ninja-build libsecp256k1-dev libsodium-dev pkg-config WORKDIR / ARG BRANCH ARG REPO -RUN git clone --recurse-submodules https://github.com/$REPO && cd ton && git checkout $BRANCH +RUN git clone --recurse-submodules https://github.com/$REPO ton && cd ton && git checkout $BRANCH && git submodule update WORKDIR /ton RUN mkdir /ton/build diff --git a/.github/script/fift-func-wasm-build-ubuntu.sh b/.github/script/fift-func-wasm-build-ubuntu.sh index b02fe3ee2..95de71f95 100755 --- a/.github/script/fift-func-wasm-build-ubuntu.sh +++ b/.github/script/fift-func-wasm-build-ubuntu.sh @@ -8,7 +8,7 @@ export CXX=$(which clang++) export CCACHE_DISABLE=1 cd ../.. -rm -rf openssl zlib emsdk build +rm -rf openssl zlib emsdk secp256k1 libsodium build echo `pwd` git clone https://github.com/openssl/openssl.git @@ -24,13 +24,23 @@ cd zlib ZLIB_DIR=`pwd` cd .. +git clone https://github.com/bitcoin-core/secp256k1.git +cd secp256k1 +./autogen.sh +SECP256K1_DIR=`pwd` +cd .. + +git clone https://github.com/jedisct1/libsodium --branch stable +cd libsodium +SODIUM_DIR=`pwd` +cd .. + mkdir build cd build cmake -GNinja -DCMAKE_BUILD_TYPE=Release -DZLIB_LIBRARY=/usr/lib/x86_64-linux-gnu/libz.so -DZLIB_INCLUDE_DIR=$ZLIB_DIR -DOPENSSL_ROOT_DIR=$OPENSSL_DIR -DOPENSSL_INCLUDE_DIR=$OPENSSL_DIR/include -DOPENSSL_CRYPTO_LIBRARY=$OPENSSL_DIR/libcrypto.so -DOPENSSL_SSL_LIBRARY=$OPENSSL_DIR/libssl.so -DTON_USE_ABSEIL=OFF .. test $? -eq 0 || { echo "Can't configure TON build"; exit 1; } - ninja fift smc-envelope test $? -eq 0 || { echo "Can't compile fift "; exit 1; } @@ -50,13 +60,6 @@ export CC=$(which emcc) export CXX=$(which em++) export CCACHE_DISABLE=1 -cd ../zlib - -emconfigure ./configure --static -emmake make -j16 -test $? -eq 0 || { echo "Can't compile zlib with emmake "; exit 1; } -ZLIB_DIR=`pwd` - cd ../openssl make clean @@ -67,11 +70,30 @@ sed -i 's/-O3/-Os/g' Makefile emmake make depend emmake make -j16 test $? -eq 0 || { echo "Can't compile OpenSSL with emmake "; exit 1; } + +cd ../zlib + +emconfigure ./configure --static +emmake make -j16 +test $? -eq 0 || { echo "Can't compile zlib with emmake "; exit 1; } +ZLIB_DIR=`pwd` + +cd ../secp256k1 + +emconfigure ./configure --enable-module-recovery +emmake make -j16 +test $? -eq 0 || { echo "Can't compile secp256k1 with emmake "; exit 1; } + +cd ../libsodium + +emconfigure ./configure --disable-ssp +emmake make -j16 +test $? -eq 0 || { echo "Can't compile libsodium with emmake "; exit 1; } + cd ../build -emcmake cmake -DUSE_EMSCRIPTEN=ON -DCMAKE_BUILD_TYPE=Release -DZLIB_LIBRARY=$ZLIB_DIR/libz.a -DZLIB_INCLUDE_DIR=$ZLIB_DIR -DOPENSSL_ROOT_DIR=$OPENSSL_DIR -DOPENSSL_INCLUDE_DIR=$OPENSSL_DIR/include -DOPENSSL_CRYPTO_LIBRARY=$OPENSSL_DIR/libcrypto.a -DOPENSSL_SSL_LIBRARY=$OPENSSL_DIR/libssl.a -DCMAKE_TOOLCHAIN_FILE=$EMSDK_DIR/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake -DCMAKE_CXX_FLAGS="-sUSE_ZLIB=1" .. +emcmake cmake -DUSE_EMSCRIPTEN=ON -DCMAKE_BUILD_TYPE=Release -DZLIB_LIBRARY=$ZLIB_DIR/libz.a -DZLIB_INCLUDE_DIR=$ZLIB_DIR -DOPENSSL_ROOT_DIR=$OPENSSL_DIR -DOPENSSL_INCLUDE_DIR=$OPENSSL_DIR/include -DOPENSSL_CRYPTO_LIBRARY=$OPENSSL_DIR/libcrypto.a -DOPENSSL_SSL_LIBRARY=$OPENSSL_DIR/libssl.a -DCMAKE_TOOLCHAIN_FILE=$EMSDK_DIR/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake -DCMAKE_CXX_FLAGS="-sUSE_ZLIB=1" -DSECP256K1_INCLUDE_DIR=$SECP256K1_DIR/include -DSECP256K1_LIBRARY=$SECP256K1_DIR/.libs/libsecp256k1.a -DSODIUM_INCLUDE_DIR=$SODIUM_DIR/src/libsodium/include -DSODIUM_LIBRARY_RELEASE=$SODIUM_DIR/src/libsodium/.libs/libsodium.a -DSODIUM_LIBRARY_DEBUG=$SODIUM_DIR/src/libsodium/.libs/libsodium.a -DSODIUM_USE_STATIC_LIBS=ON .. test $? -eq 0 || { echo "Can't configure TON with with emmake "; exit 1; } cp -R ../crypto/smartcont ../crypto/fift/lib crypto emmake make -j16 funcfiftlib func fift tlbc emulator-emscripten - diff --git a/.github/workflows/create-release.yml b/.github/workflows/create-release.yml index cb6651220..855600806 100644 --- a/.github/workflows/create-release.yml +++ b/.github/workflows/create-release.yml @@ -359,7 +359,7 @@ jobs: uses: svenstaro/upload-release-action@v2 with: repo_token: ${{ secrets.GITHUB_TOKEN }} - file: artifacts/ton-x86_64-linux-binaries/libtonlibjson.so.0.5 + file: artifacts/ton-x86_64-linux-binaries/libtonlibjson.so asset_name: tonlibjson-linux-x86_64.so tag: ${{ steps.tag.outputs.TAG }} diff --git a/.github/workflows/macos-11.7-compile.yml b/.github/workflows/macos-11.7-compile.yml index b1c97d3d0..910b16fc1 100644 --- a/.github/workflows/macos-11.7-compile.yml +++ b/.github/workflows/macos-11.7-compile.yml @@ -23,12 +23,12 @@ jobs: - name: Build all run: | export NONINTERACTIVE=1 - brew install ninja libmicrohttpd pkg-config + brew install ninja secp256k1 libsodium libmicrohttpd pkg-config rootPath=`pwd` mkdir build cd build cmake -GNinja -DOPENSSL_FOUND=1 -DOPENSSL_INCLUDE_DIR=$rootPath/openssl_1_1_1/include -DOPENSSL_CRYPTO_LIBRARY=$rootPath/openssl_1_1_1/libcrypto.a -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=11.7 -DCMAKE_CXX_FLAGS="-stdlib=libc++" -DCMAKE_BUILD_TYPE=Release .. - ninja storage-daemon storage-daemon-cli blockchain-explorer fift func tonlib tonlibjson tonlib-cli validator-engine lite-client pow-miner validator-engine-console generate-random-id json2tlo dht-server http-proxy rldp-http-proxy adnl-proxy create-state create-hardfork tlbc + ninja storage-daemon storage-daemon-cli blockchain-explorer fift func tonlib tonlibjson tonlib-cli validator-engine lite-client pow-miner validator-engine-console generate-random-id json2tlo dht-server http-proxy rldp-http-proxy adnl-proxy create-state create-hardfork tlbc emulator - name: Find & copy binaries run: | @@ -42,7 +42,7 @@ jobs: cp build/crypto/tlbc artifacts/ cp build/validator-engine-console/validator-engine-console artifacts/ cp build/tonlib/tonlib-cli artifacts/ - cp build/tonlib/libtonlibjson.0.5.dylib artifacts/ + cp build/tonlib/libtonlibjson.0.5.dylib artifacts/libtonlibjson.dylib cp build/http/http-proxy artifacts/ cp build/rldp-http-proxy/rldp-http-proxy artifacts/ cp build/dht-server/dht-server artifacts/ @@ -51,6 +51,7 @@ jobs: cp build/utils/generate-random-id artifacts/ cp build/utils/json2tlo artifacts/ cp build/adnl/adnl-proxy artifacts/ + cp build/emulator/*emulator.* artifacts/ chmod +x artifacts/* rsync -r crypto/smartcont artifacts/ rsync -r crypto/fift/lib artifacts/ diff --git a/.github/workflows/macos-12.6-compile.yml b/.github/workflows/macos-12.6-compile.yml index c7e2e99b8..368abf02c 100644 --- a/.github/workflows/macos-12.6-compile.yml +++ b/.github/workflows/macos-12.6-compile.yml @@ -14,12 +14,23 @@ jobs: submodules: 'recursive' - name: Compile OpenSSL run: | + export NONINTERACTIVE=1 + brew install ninja libsodium automake git clone https://github.com/openssl/openssl openssl_1_1_1 cd openssl_1_1_1 git checkout OpenSSL_1_1_1-stable ./Configure --prefix=/usr/local/macos darwin64-x86_64-cc -static -mmacosx-version-min=12.6 make build_libs -j4 + - name: Compile Secp256k1 + run: | + git clone https://github.com/libbitcoin/secp256k1.git + cd secp256k1 + ./autogen.sh + ./configure --enable-module-recovery + make + make install + - name: Build all run: | export NONINTERACTIVE=1 @@ -28,7 +39,7 @@ jobs: mkdir build cd build cmake -GNinja -DOPENSSL_FOUND=1 -DOPENSSL_INCLUDE_DIR=$rootPath/openssl_1_1_1/include -DOPENSSL_CRYPTO_LIBRARY=$rootPath/openssl_1_1_1/libcrypto.a -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=12.6 -DCMAKE_CXX_FLAGS="-stdlib=libc++" -DCMAKE_BUILD_TYPE=Release .. - ninja storage-daemon storage-daemon-cli blockchain-explorer fift func tonlib tonlibjson tonlib-cli validator-engine lite-client pow-miner validator-engine-console generate-random-id json2tlo dht-server http-proxy rldp-http-proxy adnl-proxy create-state create-hardfork tlbc + ninja storage-daemon storage-daemon-cli blockchain-explorer fift func tonlib tonlibjson tonlib-cli validator-engine lite-client pow-miner validator-engine-console generate-random-id json2tlo dht-server http-proxy rldp-http-proxy adnl-proxy create-state create-hardfork tlbc emulator - name: Find & copy binaries run: | @@ -42,7 +53,7 @@ jobs: cp build/crypto/tlbc artifacts/ cp build/validator-engine-console/validator-engine-console artifacts/ cp build/tonlib/tonlib-cli artifacts/ - cp build/tonlib/libtonlibjson.0.5.dylib artifacts/ + cp build/tonlib/libtonlibjson.0.5.dylib artifacts/libtonlibjson.dylib cp build/http/http-proxy artifacts/ cp build/rldp-http-proxy/rldp-http-proxy artifacts/ cp build/dht-server/dht-server artifacts/ @@ -51,6 +62,7 @@ jobs: cp build/utils/generate-random-id artifacts/ cp build/utils/json2tlo artifacts/ cp build/adnl/adnl-proxy artifacts/ + cp build/emulator/*emulator.* artifacts/ chmod +x artifacts/* rsync -r crypto/smartcont artifacts/ rsync -r crypto/fift/lib artifacts/ diff --git a/.github/workflows/ton-aarch64-linux.yml b/.github/workflows/ton-aarch64-linux.yml index ac0d68a53..3c600bee5 100644 --- a/.github/workflows/ton-aarch64-linux.yml +++ b/.github/workflows/ton-aarch64-linux.yml @@ -30,7 +30,8 @@ jobs: mkdir artifacts cp $PWD/result-aarch64-linux/bin/* artifacts/ chmod +x artifacts/* - cp $PWD/result-aarch64-linux/lib/libtonlibjson.so.0.5 artifacts/ + cp $PWD/result-aarch64-linux/lib/libtonlibjson.so.0.5 artifacts/libtonlibjson.so + cp $PWD/result-aarch64-linux/lib/libemulator.so artifacts/ cp -R crypto/smartcont artifacts/ cp -R crypto/fift/lib artifacts/ diff --git a/.github/workflows/ton-aarch64-macos.yml b/.github/workflows/ton-aarch64-macos.yml index 8ef4b2b20..75fcec789 100644 --- a/.github/workflows/ton-aarch64-macos.yml +++ b/.github/workflows/ton-aarch64-macos.yml @@ -28,6 +28,7 @@ jobs: cp $PWD/result-aarch64-darwin/bin/* artifacts/ chmod +x artifacts/* cp $PWD/result-aarch64-darwin/lib/libtonlibjson* artifacts/ + cp $PWD/result-aarch64-darwin/lib/libemulator* artifacts/ cp -R crypto/smartcont artifacts/ cp -R crypto/fift/lib artifacts/ diff --git a/.github/workflows/ton-ccpcheck.yml b/.github/workflows/ton-ccpcheck.yml index c22956386..8e9d6ad2f 100644 --- a/.github/workflows/ton-ccpcheck.yml +++ b/.github/workflows/ton-ccpcheck.yml @@ -1,4 +1,4 @@ -name: TON ccpcheck +name: TON Ccpcheck on: [push,workflow_dispatch,workflow_call] diff --git a/.github/workflows/ton-wasm-emscripten.yml b/.github/workflows/ton-wasm-emscripten.yml index 1ce83ccc2..40a658189 100644 --- a/.github/workflows/ton-wasm-emscripten.yml +++ b/.github/workflows/ton-wasm-emscripten.yml @@ -15,7 +15,7 @@ jobs: - name: Install libraries run: | sudo apt update - sudo apt install -y build-essential git make cmake ninja-build clang libgflags-dev zlib1g-dev libssl-dev libreadline-dev libmicrohttpd-dev pkg-config libgsl-dev python3 python3-dev python3-pip nodejs + sudo apt install -y build-essential git make cmake ninja-build clang libgflags-dev zlib1g-dev libssl-dev libreadline-dev libmicrohttpd-dev pkg-config libgsl-dev python3 python3-dev python3-pip nodejs libsecp256k1-dev libsodium-dev - name: Configure & Build run: | diff --git a/.github/workflows/ton-x86-64-linux.yml b/.github/workflows/ton-x86-64-linux.yml index 7043d054d..e939f22f8 100644 --- a/.github/workflows/ton-x86-64-linux.yml +++ b/.github/workflows/ton-x86-64-linux.yml @@ -29,7 +29,8 @@ jobs: mkdir artifacts cp $PWD/result-x86_64/bin/* artifacts/ chmod +x artifacts/* - cp $PWD/result-x86_64/lib/libtonlibjson.so.0.5 artifacts/ + cp $PWD/result-x86_64/lib/libtonlibjson.so.0.5 artifacts/libtonlibjson.so + cp $PWD/result-x86_64/lib/libemulator.so artifacts/ cp -R crypto/smartcont artifacts/ cp -R crypto/fift/lib artifacts/ diff --git a/.github/workflows/ton-x86-64-macos.yml b/.github/workflows/ton-x86-64-macos.yml index 8175a366f..44c2d2aa5 100644 --- a/.github/workflows/ton-x86-64-macos.yml +++ b/.github/workflows/ton-x86-64-macos.yml @@ -26,6 +26,7 @@ jobs: cp $PWD/result-x86_64-darwin/bin/* artifacts/ chmod +x artifacts/* cp $PWD/result-x86_64-darwin/lib/libtonlibjson.dylib artifacts/ + cp $PWD/result-x86_64-darwin/lib/libemulator.dylib artifacts/ cp -R crypto/smartcont artifacts/ cp -R crypto/fift/lib artifacts/ diff --git a/.github/workflows/tonlib-android-jni.yml b/.github/workflows/tonlib-android-jni.yml index cdc16841c..cdf410b4c 100644 --- a/.github/workflows/tonlib-android-jni.yml +++ b/.github/workflows/tonlib-android-jni.yml @@ -29,18 +29,23 @@ jobs: export JAVA_INCLUDE_PATH2=${JAVA_HOME}/include/linux export ANDROID_NDK_ROOT=$(pwd)/android-ndk-r25b + export NDK_PLATFORM="android-21" + export ANDROID_PLATFORM="android-21" export OPENSSL_DIR=$(pwd)/example/android/third_party/crypto rm -rf example/android/src/drinkless/org/ton/TonApi.java cd example/android/ - cmake -GNinja -DTON_ONLY_TONLIB=ON . + + sudo apt install -y libtool autoconf libsodium-dev libsecp256k1-dev + + cmake -GNinja -DTON_ONLY_TONLIB=ON . + ninja prepare_cross_compiling + + sudo apt remove -y libsodium-dev libsecp256k1-dev + rm CMakeCache.txt ./build-all.sh - ../../android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-strip libs/x86/libnative-lib.so - ../../android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-strip libs/x86_64/libnative-lib.so - ../../android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-strip libs/armeabi-v7a/libnative-lib.so - ../../android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-strip libs/arm64-v8a/libnative-lib.so find . -name "*.debug" -type f -delete - name: Find & copy binaries @@ -52,5 +57,5 @@ jobs: - name: Upload artifacts uses: actions/upload-artifact@master with: - name: Tonlib JNI libraries for Android + name: tonlib-android-jni path: artifacts \ No newline at end of file diff --git a/.github/workflows/ubuntu-22.04-compile.yml b/.github/workflows/ubuntu-22.04-compile.yml index 8032e498a..397116ff6 100644 --- a/.github/workflows/ubuntu-22.04-compile.yml +++ b/.github/workflows/ubuntu-22.04-compile.yml @@ -16,7 +16,7 @@ jobs: - name: Install libraries run: | sudo apt update - sudo apt install -y build-essential git make cmake clang libgflags-dev zlib1g-dev libssl-dev libreadline-dev libmicrohttpd-dev pkg-config libgsl-dev python3 python3-dev ninja-build + sudo apt install -y build-essential git make cmake clang libgflags-dev zlib1g-dev libssl-dev libreadline-dev libmicrohttpd-dev pkg-config libgsl-dev python3 python3-dev ninja-build libsecp256k1-dev libsodium-dev - name: Show CPU flags run: | @@ -40,12 +40,12 @@ jobs: cd build cmake -GNinja -DOPENSSL_FOUND=1 -DOPENSSL_INCLUDE_DIR=$rootPath/openssl_1_1_1/include -DOPENSSL_CRYPTO_LIBRARY=$rootPath/openssl_1_1_1/libcrypto.a -DCMAKE_BUILD_TYPE=Release -DPORTABLE=1 -DTON_ARCH= -DCMAKE_CXX_FLAGS="-mavx2" .. - ninja storage-daemon storage-daemon-cli fift func tonlib tonlibjson tonlib-cli validator-engine lite-client pow-miner validator-engine-console generate-random-id json2tlo dht-server http-proxy rldp-http-proxy adnl-proxy create-state + ninja storage-daemon storage-daemon-cli fift func tonlib tonlibjson tonlib-cli validator-engine lite-client pow-miner validator-engine-console generate-random-id json2tlo dht-server http-proxy rldp-http-proxy adnl-proxy create-state emulator - name: Find & copy binaries run: | mkdir artifacts - cp build/storage/storage-daemon/storage-daemon build/storage/storage-daemon/storage-daemon-cli build/crypto/fift build/crypto/tlbc build/crypto/func build/crypto/create-state build/validator-engine-console/validator-engine-console build/tonlib/tonlib-cli build/tonlib/libtonlibjson.so.0.5 build/http/http-proxy build/rldp-http-proxy/rldp-http-proxy build/dht-server/dht-server build/lite-client/lite-client build/validator-engine/validator-engine build/utils/generate-random-id build/utils/json2tlo build/adnl/adnl-proxy artifacts + cp build/storage/storage-daemon/storage-daemon build/storage/storage-daemon/storage-daemon-cli build/crypto/fift build/crypto/tlbc build/crypto/func build/crypto/create-state build/validator-engine-console/validator-engine-console build/tonlib/tonlib-cli build/tonlib/libtonlibjson.so.0.5 build/http/http-proxy build/rldp-http-proxy/rldp-http-proxy build/dht-server/dht-server build/lite-client/lite-client build/validator-engine/validator-engine build/utils/generate-random-id build/utils/json2tlo build/adnl/adnl-proxy build/emulator/libemulator.* artifacts chmod +x artifacts/* cp -R crypto/smartcont artifacts/ cp -R crypto/fift/lib artifacts/ diff --git a/.github/workflows/ubuntu-compile.yml b/.github/workflows/ubuntu-compile.yml index b303e143b..171ba46d8 100644 --- a/.github/workflows/ubuntu-compile.yml +++ b/.github/workflows/ubuntu-compile.yml @@ -19,7 +19,7 @@ jobs: - name: Install libraries run: | sudo apt update - sudo apt install -y build-essential git make cmake clang libgflags-dev zlib1g-dev libssl-dev libreadline-dev libmicrohttpd-dev pkg-config libgsl-dev python3 python3-dev ninja-build + sudo apt install -y build-essential git make cmake clang libgflags-dev zlib1g-dev libssl-dev libreadline-dev libmicrohttpd-dev pkg-config libgsl-dev python3 python3-dev ninja-build libsecp256k1-dev libsodium-dev - name: Show CPU flags run: | @@ -44,12 +44,12 @@ jobs: buildPath=`pwd` cmake -GNinja -DOPENSSL_FOUND=1 -DOPENSSL_INCLUDE_DIR=$buildPath/openssl_1_1_1/include -DOPENSSL_CRYPTO_LIBRARY=$buildPath/openssl_1_1_1/libcrypto.a -DCMAKE_BUILD_TYPE=Release -DPORTABLE=1 -DTON_ARCH= -DCMAKE_CXX_FLAGS="-mavx2" .. - ninja storage-daemon storage-daemon-cli fift func tonlib tonlibjson tonlib-cli validator-engine lite-client pow-miner validator-engine-console generate-random-id json2tlo dht-server http-proxy rldp-http-proxy adnl-proxy create-state create-hardfork + ninja storage-daemon storage-daemon-cli fift func tonlib tonlibjson tonlib-cli validator-engine lite-client pow-miner validator-engine-console generate-random-id json2tlo dht-server http-proxy rldp-http-proxy adnl-proxy create-state create-hardfork emulator - name: Find & copy binaries run: | mkdir artifacts-${{ matrix.os }} - cp build-${{ matrix.os }}/storage/storage-daemon/storage-daemon build-${{ matrix.os }}/storage/storage-daemon/storage-daemon-cli build-${{ matrix.os }}/crypto/fift build-${{ matrix.os }}/crypto/tlbc build-${{ matrix.os }}/crypto/func build-${{ matrix.os }}/crypto/create-state build-${{ matrix.os }}/validator-engine-console/validator-engine-console build-${{ matrix.os }}/tonlib/tonlib-cli build-${{ matrix.os }}/tonlib/libtonlibjson.so.0.5 build-${{ matrix.os }}/http/http-proxy build-${{ matrix.os }}/rldp-http-proxy/rldp-http-proxy build-${{ matrix.os }}/dht-server/dht-server build-${{ matrix.os }}/lite-client/lite-client build-${{ matrix.os }}/validator-engine/validator-engine build-${{ matrix.os }}/utils/generate-random-id build-${{ matrix.os }}/utils/json2tlo build-${{ matrix.os }}/adnl/adnl-proxy artifacts-${{ matrix.os }} + cp build-${{ matrix.os }}/storage/storage-daemon/storage-daemon build-${{ matrix.os }}/storage/storage-daemon/storage-daemon-cli build-${{ matrix.os }}/crypto/fift build-${{ matrix.os }}/crypto/tlbc build-${{ matrix.os }}/crypto/func build-${{ matrix.os }}/crypto/create-state build-${{ matrix.os }}/validator-engine-console/validator-engine-console build-${{ matrix.os }}/tonlib/tonlib-cli build-${{ matrix.os }}/tonlib/libtonlibjson.so.0.5 build-${{ matrix.os }}/http/http-proxy build-${{ matrix.os }}/rldp-http-proxy/rldp-http-proxy build-${{ matrix.os }}/dht-server/dht-server build-${{ matrix.os }}/lite-client/lite-client build-${{ matrix.os }}/validator-engine/validator-engine build-${{ matrix.os }}/utils/generate-random-id build-${{ matrix.os }}/utils/json2tlo build-${{ matrix.os }}/adnl/adnl-proxy build-${{ matrix.os }}/emulator/libemulator.* artifacts-${{ matrix.os }} chmod +x artifacts-${{ matrix.os }}/* cp -R crypto/smartcont artifacts-${{ matrix.os }} cp -R crypto/fift/lib artifacts-${{ matrix.os }} diff --git a/.github/workflows/win-2019-compile.yml b/.github/workflows/win-2019-compile.yml index b0c999714..190c03e13 100644 --- a/.github/workflows/win-2019-compile.yml +++ b/.github/workflows/win-2019-compile.yml @@ -38,6 +38,17 @@ jobs: cd zlib\contrib\vstudio\vc14 msbuild zlibstat.vcxproj /p:Configuration=ReleaseWithoutAsm /p:platform=x64 -p:PlatformToolset=v142 + - name: Compile secp256k1 Win64 + run: | + git clone https://github.com/libbitcoin/secp256k1.git + cd secp256k1\builds\msvc\vs2017 + msbuild /p:Configuration=StaticRelease -p:PlatformToolset=v142 -p:Platform=x64 + + - name: Install pre-compiled libsodium Win64 + run: | + curl -Lo libsodium-1.0.18-stable-msvc.zip https://download.libsodium.org/libsodium/releases/libsodium-1.0.18-stable-msvc.zip + unzip libsodium-1.0.18-stable-msvc.zip + - name: Install pre-compiled OpenSSL Win64 run: | curl -Lo openssl-1.1.1o.zip https://github.com/neodiX42/precompiled-openssl-win64/raw/main/openssl-1.1.1o.zip @@ -48,14 +59,21 @@ jobs: curl -Lo libmicrohttpd-latest-w32-bin.zip https://ftpmirror.gnu.org/libmicrohttpd/libmicrohttpd-latest-w32-bin.zip unzip libmicrohttpd-latest-w32-bin.zip + - name: Install pre-compiled Readline Win64 + run: | + curl -Lo readline-5.0-1-lib.zip https://github.com/neodiX42/precompiled-openssl-win64/raw/main/readline-5.0-1-lib.zip + unzip readline-5.0-1-lib.zip + - name: Compile run: | set root=%cd% + set SODIUM_DIR=%root%\libsodium echo %root% + echo %SODIUM_DIR% mkdir build cd build - cmake -DPORTABLE=1 -DZLIB_FOUND=1 -DMHD_FOUND=1 -DMHD_LIBRARY=%root%\libmicrohttpd-0.9.75-w32-bin\x86_64\VS2019\Release-static\libmicrohttpd.lib -DMHD_INCLUDE_DIR=%root%\libmicrohttpd-0.9.75-w32-bin\x86_64\VS2019\Release-static -DZLIB_INCLUDE_DIR=%root%\zlib -DZLIB_LIBRARY=%root%\zlib\contrib\vstudio\vc14\x64\ZlibStatReleaseWithoutAsm\zlibstat.lib -DOPENSSL_FOUND=1 -DOPENSSL_INCLUDE_DIR=%root%/openssl-1.1/x64/include -DOPENSSL_CRYPTO_LIBRARY=%root%/openssl-1.1/x64/lib/libcrypto.lib -DCMAKE_CXX_FLAGS="/DTD_WINDOWS=1 /EHsc /bigobj /W0" .. - cmake --build . --target storage-daemon storage-daemon-cli blockchain-explorer fift func tonlib tonlibjson tonlib-cli validator-engine lite-client pow-miner validator-engine-console generate-random-id json2tlo dht-server http-proxy rldp-http-proxy adnl-proxy create-state create-hardfork --config Release + cmake -DCMAKE_BUILD_TYPE=Release -DSODIUM_USE_STATIC_LIBS=1 -DSECP256K1_INCLUDE_DIR=%root%\secp256k1\include -DSECP256K1_LIBRARY=%root%\secp256k1\bin\x64\Release\v142\static\secp256k1.lib -DREADLINE_INCLUDE_DIR=%root%\readline-5.0-1-lib\include\readline -DREADLINE_LIBRARY=%root%\readline-5.0-1-lib\lib\readline.lib -DPORTABLE=1 -DZLIB_FOUND=1 -DMHD_FOUND=1 -DMHD_LIBRARY=%root%\libmicrohttpd-0.9.75-w32-bin\x86_64\VS2019\Release-static\libmicrohttpd.lib -DMHD_INCLUDE_DIR=%root%\libmicrohttpd-0.9.75-w32-bin\x86_64\VS2019\Release-static -DZLIB_INCLUDE_DIR=%root%\zlib -DZLIB_LIBRARY=%root%\zlib\contrib\vstudio\vc14\x64\ZlibStatReleaseWithoutAsm\zlibstat.lib -DOPENSSL_FOUND=1 -DOPENSSL_INCLUDE_DIR=%root%/openssl-1.1/x64/include -DOPENSSL_CRYPTO_LIBRARY=%root%/openssl-1.1/x64/lib/libcrypto.lib -DCMAKE_CXX_FLAGS="/DTD_WINDOWS=1 /EHsc /bigobj /W0" .. + cmake --build . --target storage-daemon storage-daemon-cli blockchain-explorer fift func tonlib tonlibjson tonlib-cli validator-engine lite-client pow-miner validator-engine-console generate-random-id json2tlo dht-server http-proxy rldp-http-proxy adnl-proxy create-state create-hardfork emulator --config Release - name: Show executables run: | @@ -74,7 +92,7 @@ jobs: mkdir artifacts\smartcont mkdir artifacts\lib - for %%I in (build\storage\storage-daemon\Release\storage-daemon.exe build\storage\storage-daemon\Release\storage-daemon-cli.exe build\blockchain-explorer\blockchain-explorer.exe build\crypto\Release\fift.exe build\crypto\Release\tlbc.exe build\crypto\Release\func.exe build\crypto\Release\create-state.exe build\validator-engine-console\Release\validator-engine-console.exe build\tonlib\Release\tonlib-cli.exe build\tonlib\Release\tonlibjson.dll build\http\Release\http-proxy.exe build\rldp-http-proxy\Release\rldp-http-proxy.exe build\dht-server\Release\dht-server.exe build\lite-client\Release\lite-client.exe build\validator-engine\Release\validator-engine.exe build\utils\Release\generate-random-id.exe build\utils\Release\json2tlo.exe build\adnl\Release\adnl-proxy.exe) do copy %%I artifacts\ + for %%I in (build\storage\storage-daemon\Release\storage-daemon.exe build\storage\storage-daemon\Release\storage-daemon-cli.exe build\blockchain-explorer\blockchain-explorer.exe build\crypto\Release\fift.exe build\crypto\Release\tlbc.exe build\crypto\Release\func.exe build\crypto\Release\create-state.exe build\validator-engine-console\Release\validator-engine-console.exe build\tonlib\Release\tonlib-cli.exe build\tonlib\Release\tonlibjson.dll build\http\Release\http-proxy.exe build\rldp-http-proxy\Release\rldp-http-proxy.exe build\dht-server\Release\dht-server.exe build\lite-client\Release\lite-client.exe build\validator-engine\Release\validator-engine.exe build\utils\Release\generate-random-id.exe build\utils\Release\json2tlo.exe build\adnl\Release\adnl-proxy.exe build\emulator\Release\emulator.dll) do copy %%I artifacts\ xcopy /e /k /h /i crypto\smartcont artifacts\smartcont xcopy /e /k /h /i crypto\fift\lib artifacts\lib diff --git a/.gitmodules b/.gitmodules index e6a47e8bc..f201ed73c 100644 --- a/.gitmodules +++ b/.gitmodules @@ -10,3 +10,6 @@ [submodule "third-party/libraptorq"] path = third-party/libraptorq url = https://github.com/ton-blockchain/libRaptorQ +[submodule "third-party/blst"] + path = third-party/blst + url = https://github.com/supranational/blst.git diff --git a/CMake/BuildBLST.cmake b/CMake/BuildBLST.cmake new file mode 100644 index 000000000..1cf2366c6 --- /dev/null +++ b/CMake/BuildBLST.cmake @@ -0,0 +1,30 @@ +set(BLST_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/third-party/blst) +set(BLST_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/third-party/blst) +set(BLST_INCLUDE_DIR ${BLST_SOURCE_DIR}/bindings) + +if (NOT BLST_LIB) + if (WIN32) + set(BLST_LIB ${BLST_BINARY_DIR}/blst.lib) + set(BLST_BUILD_COMMAND ${BLST_SOURCE_DIR}/build.bat) + else() + set(BLST_LIB ${BLST_BINARY_DIR}/libblst.a) + if (PORTABLE) + set(BLST_BUILD_COMMAND ${BLST_SOURCE_DIR}/build.sh -D__BLST_PORTABLE__) + else() + set(BLST_BUILD_COMMAND ${BLST_SOURCE_DIR}/build.sh) + endif() + endif() + + file(MAKE_DIRECTORY ${BLST_BINARY_DIR}) + add_custom_command( + WORKING_DIRECTORY ${BLST_BINARY_DIR} + COMMAND ${BLST_BUILD_COMMAND} + COMMENT "Build blst" + DEPENDS ${BLST_SOURCE_DIR} + OUTPUT ${BLST_LIB} + ) +else() + message(STATUS "Use BLST: ${BLST_LIB}") +endif() + +add_custom_target(blst DEPENDS ${BLST_LIB}) diff --git a/CMake/FindSecp256k1.cmake b/CMake/FindSecp256k1.cmake new file mode 100644 index 000000000..11603f153 --- /dev/null +++ b/CMake/FindSecp256k1.cmake @@ -0,0 +1,29 @@ +# - Try to find SECP256K1 +# Once done this will define +# +# SECP256K1_FOUND - system has SECP256K1 +# SECP256K1_INCLUDE_DIRS - the SECP256K1 include directory +# SECP256K1_LIBRARY - Link these to use SECP256K1 + +find_path( + SECP256K1_INCLUDE_DIR + NAMES secp256k1_recovery.h + DOC "secp256k1_recovery.h include dir" +) + +find_library( + SECP256K1_LIBRARY + NAMES secp256k1 libsecp256k1 + DOC "secp256k1 library" +) + +if (SECP256K1_LIBRARY) + message(STATUS "Found Secp256k1: ${SECP256K1_LIBRARY}") +endif() + +set(SECP256K1_INCLUDE_DIRS ${SECP256K1_INCLUDE_DIR}) +set(SECP256K1_LIBRARIES ${SECP256K1_LIBRARY}) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(Secp256k1 DEFAULT_MSG SECP256K1_INCLUDE_DIR SECP256K1_LIBRARY) +mark_as_advanced(SECP256K1_INCLUDE_DIR SECP256K1_LIBRARY) diff --git a/CMake/FindSodium.cmake b/CMake/FindSodium.cmake new file mode 100644 index 000000000..0053ac54f --- /dev/null +++ b/CMake/FindSodium.cmake @@ -0,0 +1,297 @@ +# Written in 2016 by Henrik Steffen Gaßmann +# +# To the extent possible under law, the author(s) have dedicated all +# copyright and related and neighboring rights to this software to the +# public domain worldwide. This software is distributed without any warranty. +# +# You should have received a copy of the CC0 Public Domain Dedication +# along with this software. If not, see +# +# http://creativecommons.org/publicdomain/zero/1.0/ +# +######################################################################## +# Tries to find the local libsodium installation. +# +# On Windows the SODIUM_DIR environment variable is used as a default +# hint which can be overridden by setting the corresponding cmake variable. +# +# Once done the following variables will be defined: +# +# SODIUM_FOUND +# SODIUM_INCLUDE_DIR +# SODIUM_LIBRARY_DEBUG +# SODIUM_LIBRARY_RELEASE +# +# +# Furthermore an imported "sodium" target is created. +# + +if (CMAKE_C_COMPILER_ID STREQUAL "GNU" + OR CMAKE_C_COMPILER_ID STREQUAL "Clang") + set(_GCC_COMPATIBLE 1) +endif() + +# static library option +if (NOT DEFINED SODIUM_USE_STATIC_LIBS) + option(SODIUM_USE_STATIC_LIBS "enable to statically link against sodium" OFF) +endif() +if(NOT (SODIUM_USE_STATIC_LIBS EQUAL SODIUM_USE_STATIC_LIBS_LAST)) + unset(sodium_LIBRARY CACHE) + unset(SODIUM_LIBRARY_DEBUG CACHE) + unset(SODIUM_LIBRARY_RELEASE CACHE) + unset(sodium_DLL_DEBUG CACHE) + unset(sodium_DLL_RELEASE CACHE) + set(SODIUM_USE_STATIC_LIBS_LAST ${SODIUM_USE_STATIC_LIBS} CACHE INTERNAL "internal change tracking variable") +endif() + + +######################################################################## +# UNIX +if (UNIX) + # import pkg-config + find_package(PkgConfig QUIET) + if (PKG_CONFIG_FOUND) + pkg_check_modules(sodium_PKG QUIET libsodium) + endif() + + if(SODIUM_USE_STATIC_LIBS) + foreach(_libname ${sodium_PKG_STATIC_LIBRARIES}) + if (NOT _libname MATCHES "^lib.*\\.a$") # ignore strings already ending with .a + list(INSERT sodium_PKG_STATIC_LIBRARIES 0 "lib${_libname}.a") + endif() + endforeach() + list(REMOVE_DUPLICATES sodium_PKG_STATIC_LIBRARIES) + + # if pkgconfig for libsodium doesn't provide + # static lib info, then override PKG_STATIC here.. + if (NOT sodium_PKG_STATIC_FOUND) + set(sodium_PKG_STATIC_LIBRARIES libsodium.a) + endif() + + set(XPREFIX sodium_PKG_STATIC) + else() + if (NOT sodium_PKG_FOUND) + set(sodium_PKG_LIBRARIES sodium) + endif() + + set(XPREFIX sodium_PKG) + endif() + + find_path(SODIUM_INCLUDE_DIR sodium.h + HINTS ${${XPREFIX}_INCLUDE_DIRS} + ) + find_library(SODIUM_LIBRARY_DEBUG NAMES ${${XPREFIX}_LIBRARIES} + HINTS ${${XPREFIX}_LIBRARY_DIRS} + ) + find_library(SODIUM_LIBRARY_RELEASE NAMES ${${XPREFIX}_LIBRARIES} + HINTS ${${XPREFIX}_LIBRARY_DIRS} + ) + + ######################################################################## + # Windows +elseif (WIN32) + set(SODIUM_DIR "$ENV{SODIUM_DIR}" CACHE FILEPATH "sodium install directory") + mark_as_advanced(SODIUM_DIR) + + find_path(SODIUM_INCLUDE_DIR + NAMES sodium.h + HINTS ${SODIUM_DIR} + PATH_SUFFIXES include + ) + + if (MSVC) + # detect target architecture + file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/arch.cpp" [=[ + #if defined _M_IX86 + #error ARCH_VALUE x86_32 + #elif defined _M_X64 + #error ARCH_VALUE x86_64 + #endif + #error ARCH_VALUE unknown + ]=]) + try_compile(_UNUSED_VAR "${CMAKE_CURRENT_BINARY_DIR}" "${CMAKE_CURRENT_BINARY_DIR}/arch.cpp" + OUTPUT_VARIABLE _COMPILATION_LOG + ) + string(REGEX REPLACE ".*ARCH_VALUE ([a-zA-Z0-9_]+).*" "\\1" _TARGET_ARCH "${_COMPILATION_LOG}") + + # construct library path + if (_TARGET_ARCH STREQUAL "x86_32") + string(APPEND _PLATFORM_PATH "Win32") + elseif(_TARGET_ARCH STREQUAL "x86_64") + string(APPEND _PLATFORM_PATH "x64") + else() + message(FATAL_ERROR "the ${_TARGET_ARCH} architecture is not supported by Findsodium.cmake.") + endif() + string(APPEND _PLATFORM_PATH "/$$CONFIG$$") + + if (MSVC_VERSION LESS 1900) + math(EXPR _VS_VERSION "${MSVC_VERSION} / 10 - 60") + else() + math(EXPR _VS_VERSION "${MSVC_VERSION} / 10 - 50") + endif() + string(APPEND _PLATFORM_PATH "/v${_VS_VERSION}") + + if (SODIUM_USE_STATIC_LIBS) + string(APPEND _PLATFORM_PATH "/static") + else() + string(APPEND _PLATFORM_PATH "/dynamic") + endif() + + string(REPLACE "$$CONFIG$$" "Debug" _DEBUG_PATH_SUFFIX "${_PLATFORM_PATH}") + string(REPLACE "$$CONFIG$$" "Release" _RELEASE_PATH_SUFFIX "${_PLATFORM_PATH}") + + find_library(SODIUM_LIBRARY_DEBUG libsodium.lib + HINTS ${SODIUM_DIR} + PATH_SUFFIXES ${_DEBUG_PATH_SUFFIX} + ) + find_library(SODIUM_LIBRARY_RELEASE libsodium.lib + HINTS ${SODIUM_DIR} + PATH_SUFFIXES ${_RELEASE_PATH_SUFFIX} + ) + if (NOT SODIUM_USE_STATIC_LIBS) + set(CMAKE_FIND_LIBRARY_SUFFIXES_BCK ${CMAKE_FIND_LIBRARY_SUFFIXES}) + set(CMAKE_FIND_LIBRARY_SUFFIXES ".dll") + find_library(sodium_DLL_DEBUG libsodium + HINTS ${SODIUM_DIR} + PATH_SUFFIXES ${_DEBUG_PATH_SUFFIX} + ) + find_library(sodium_DLL_RELEASE libsodium + HINTS ${SODIUM_DIR} + PATH_SUFFIXES ${_RELEASE_PATH_SUFFIX} + ) + set(CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES_BCK}) + endif() + + elseif(_GCC_COMPATIBLE) + if (SODIUM_USE_STATIC_LIBS) + find_library(SODIUM_LIBRARY_DEBUG libsodium.a + HINTS ${SODIUM_DIR} + PATH_SUFFIXES lib + ) + find_library(SODIUM_LIBRARY_RELEASE libsodium.a + HINTS ${SODIUM_DIR} + PATH_SUFFIXES lib + ) + else() + find_library(SODIUM_LIBRARY_DEBUG libsodium.dll.a + HINTS ${SODIUM_DIR} + PATH_SUFFIXES lib + ) + find_library(SODIUM_LIBRARY_RELEASE libsodium.dll.a + HINTS ${SODIUM_DIR} + PATH_SUFFIXES lib + ) + + file(GLOB _DLL + LIST_DIRECTORIES false + RELATIVE "${SODIUM_DIR}/bin" + "${SODIUM_DIR}/bin/libsodium*.dll" + ) + find_library(sodium_DLL_DEBUG ${_DLL} libsodium + HINTS ${SODIUM_DIR} + PATH_SUFFIXES bin + ) + find_library(sodium_DLL_RELEASE ${_DLL} libsodium + HINTS ${SODIUM_DIR} + PATH_SUFFIXES bin + ) + endif() + else() + message(FATAL_ERROR "this platform is not supported by FindSodium.cmake") + endif() + + + ######################################################################## + # unsupported +else() + message(FATAL_ERROR "this platform is not supported by FindSodium.cmake") +endif() + + +######################################################################## +# common stuff + +# extract sodium version +if (SODIUM_INCLUDE_DIR) + set(_VERSION_HEADER "${_INCLUDE_DIR}/sodium/version.h") + if (EXISTS _VERSION_HEADER) + file(READ "${_VERSION_HEADER}" _VERSION_HEADER_CONTENT) + string(REGEX REPLACE ".*#[ \t]*define[ \t]*SODIUM_VERSION_STRING[ \t]*\"([^\n]*)\".*" "\\1" + sodium_VERSION "${_VERSION_HEADER_CONTENT}") + set(sodium_VERSION "${sodium_VERSION}" PARENT_SCOPE) + endif() +endif() + +# communicate results +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args( + Sodium # The name must be either uppercase or match the filename case. + REQUIRED_VARS + SODIUM_LIBRARY_RELEASE + SODIUM_LIBRARY_DEBUG + SODIUM_INCLUDE_DIR + VERSION_VAR + sodium_VERSION +) + +if(SODIUM_FOUND) + set(SODIUM_LIBRARIES + optimized ${SODIUM_LIBRARY_RELEASE} debug ${SODIUM_LIBRARY_DEBUG}) +endif() + +# mark file paths as advanced +mark_as_advanced(SODIUM_INCLUDE_DIR) +mark_as_advanced(SODIUM_LIBRARY_DEBUG) +mark_as_advanced(SODIUM_LIBRARY_RELEASE) +if (WIN32) + mark_as_advanced(sodium_DLL_DEBUG) + mark_as_advanced(sodium_DLL_RELEASE) +endif() + +# create imported target +if(SODIUM_USE_STATIC_LIBS) + set(_LIB_TYPE STATIC) +else() + set(_LIB_TYPE SHARED) +endif() + +if(NOT TARGET sodium) + add_library(sodium ${_LIB_TYPE} IMPORTED) +endif() + +set_target_properties(sodium PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "${SODIUM_INCLUDE_DIR}" + IMPORTED_LINK_INTERFACE_LANGUAGES "C" + ) + +if (SODIUM_USE_STATIC_LIBS) + set_target_properties(sodium PROPERTIES + INTERFACE_COMPILE_DEFINITIONS "SODIUM_STATIC" + IMPORTED_LOCATION "${SODIUM_LIBRARY_RELEASE}" + IMPORTED_LOCATION_DEBUG "${SODIUM_LIBRARY_DEBUG}" + ) +else() + if (UNIX) + set_target_properties(sodium PROPERTIES + IMPORTED_LOCATION "${SODIUM_LIBRARY_RELEASE}" + IMPORTED_LOCATION_DEBUG "${SODIUM_LIBRARY_DEBUG}" + ) + elseif (WIN32) + set_target_properties(sodium PROPERTIES + IMPORTED_IMPLIB "${SODIUM_LIBRARY_RELEASE}" + IMPORTED_IMPLIB_DEBUG "${SODIUM_LIBRARY_DEBUG}" + ) + if (NOT (sodium_DLL_DEBUG MATCHES ".*-NOTFOUND")) + set_target_properties(sodium PROPERTIES + IMPORTED_LOCATION_DEBUG "${sodium_DLL_DEBUG}" + ) + endif() + if (NOT (sodium_DLL_RELEASE MATCHES ".*-NOTFOUND")) + set_target_properties(sodium PROPERTIES + IMPORTED_LOCATION_RELWITHDEBINFO "${sodium_DLL_RELEASE}" + IMPORTED_LOCATION_MINSIZEREL "${sodium_DLL_RELEASE}" + IMPORTED_LOCATION_RELEASE "${sodium_DLL_RELEASE}" + ) + endif() + endif() +endif() \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt index aafc79b6a..4b6f0dc9f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -182,6 +182,8 @@ endif() message("Add ton") set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMake" ${CMAKE_MODULE_PATH}) +include(BuildBLST) + # Configure CCache if available find_program(CCACHE_FOUND ccache) #set(CCACHE_FOUND 0) diff --git a/common/CMakeLists.txt b/common/CMakeLists.txt index 8fd70f7b0..96d92371a 100644 --- a/common/CMakeLists.txt +++ b/common/CMakeLists.txt @@ -8,7 +8,8 @@ set(COMMON_SOURCE errorlog.h errorlog.cpp -) + + global-version.h) add_library(common STATIC ${COMMON_SOURCE}) diff --git a/common/global-version.h b/common/global-version.h new file mode 100644 index 000000000..01c1795df --- /dev/null +++ b/common/global-version.h @@ -0,0 +1,24 @@ +/* + This file is part of TON Blockchain Library. + + TON Blockchain Library is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version. + + TON Blockchain Library 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 Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with TON Blockchain Library. If not, see . +*/ +#pragma once + +namespace ton { + +// See doc/GlobalVersions.md +const int SUPPORTED_VERSION = 4; + +} diff --git a/crypto/CMakeLists.txt b/crypto/CMakeLists.txt index 598169f79..cdd5d57b4 100644 --- a/crypto/CMakeLists.txt +++ b/crypto/CMakeLists.txt @@ -4,7 +4,7 @@ if (NOT OPENSSL_FOUND) find_package(OpenSSL REQUIRED) endif() -set(TON_CRYPTO_SOURCE +set(TON_CRYPTO_CORE_SOURCE Ed25519.cpp common/bigint.cpp common/refcnt.cpp @@ -19,26 +19,8 @@ set(TON_CRYPTO_SOURCE openssl/bignum.cpp openssl/residue.cpp openssl/rand.cpp - vm/stack.cpp - vm/atom.cpp - vm/continuation.cpp - vm/dict.cpp - vm/memo.cpp - vm/dispatch.cpp - vm/opctable.cpp - vm/cp0.cpp - vm/stackops.cpp - vm/tupleops.cpp - vm/arithops.cpp - vm/cellops.cpp - vm/contops.cpp - vm/dictops.cpp - vm/debugops.cpp - vm/tonops.cpp vm/boc.cpp vm/large-boc-serializer.cpp - vm/utils.cpp - vm/vm.cpp tl/tlblib.cpp Ed25519.h @@ -66,34 +48,10 @@ set(TON_CRYPTO_SOURCE tl/tlbc-data.h tl/tlblib.hpp - vm/arithops.h - vm/atom.h - vm/boc.h - vm/boc-writers.h - vm/box.hpp - vm/cellops.h - vm/continuation.h - vm/contops.h - vm/cp0.h - vm/debugops.h - vm/dict.h - vm/dictops.h - vm/excno.hpp - vm/fmt.hpp - vm/log.h - vm/memo.h - vm/opctable.h - vm/stack.hpp - vm/stackops.h - vm/tupleops.h - vm/tonops.h - vm/vmstate.h - vm/utils.h - vm/vm.h - - vm/cells.h - vm/cellslice.h + keccak/keccak.h + keccak/keccak.cpp + vm/dict.cpp vm/cells/Cell.cpp vm/cells/CellBuilder.cpp vm/cells/CellHash.cpp @@ -106,6 +64,7 @@ set(TON_CRYPTO_SOURCE vm/cells/MerkleProof.cpp vm/cells/MerkleUpdate.cpp + vm/dict.h vm/cells/Cell.h vm/cells/CellBuilder.h vm/cells/CellHash.h @@ -124,9 +83,64 @@ set(TON_CRYPTO_SOURCE vm/cells/VirtualCell.h vm/cells/VirtualizationParameters.h + vm/cells.h + vm/cellslice.h + vm/db/StaticBagOfCellsDb.h vm/db/StaticBagOfCellsDb.cpp -) + + vm/Hasher.h + vm/Hasher.cpp + + ellcurve/secp256k1.h + ellcurve/secp256k1.cpp + ellcurve/p256.h + ellcurve/p256.cpp) + +set(TON_CRYPTO_SOURCE + vm/stack.cpp + vm/atom.cpp + vm/continuation.cpp + vm/memo.cpp + vm/dispatch.cpp + vm/opctable.cpp + vm/cp0.cpp + vm/stackops.cpp + vm/tupleops.cpp + vm/arithops.cpp + vm/cellops.cpp + vm/contops.cpp + vm/dictops.cpp + vm/debugops.cpp + vm/tonops.cpp + vm/utils.cpp + vm/vm.cpp + vm/bls.cpp + + vm/arithops.h + vm/atom.h + vm/boc.h + vm/boc-writers.h + vm/box.hpp + vm/cellops.h + vm/continuation.h + vm/contops.h + vm/cp0.h + vm/debugops.h + vm/dictops.h + vm/excno.hpp + vm/fmt.hpp + vm/log.h + vm/memo.h + vm/opctable.h + vm/stack.hpp + vm/stackops.h + vm/tupleops.h + vm/tonops.h + vm/vmstate.h + vm/utils.h + vm/vm.h + vm/bls.h) set(TON_DB_SOURCE vm/db/DynamicBagOfCellsDb.cpp @@ -271,17 +285,25 @@ set(BIGINT_TEST_SOURCE set(USE_EMSCRIPTEN ${USE_EMSCRIPTEN} PARENT_SCOPE) +add_library(ton_crypto_core STATIC ${TON_CRYPTO_CORE_SOURCE}) +target_include_directories(ton_crypto_core PUBLIC $ + $) +target_link_libraries(ton_crypto_core PUBLIC ${OPENSSL_CRYPTO_LIBRARY} tdutils tddb_utils) +if (NOT WIN32) + target_link_libraries(ton_crypto_core PUBLIC dl z) +endif() +target_include_directories(ton_crypto_core SYSTEM PUBLIC $) add_library(ton_crypto STATIC ${TON_CRYPTO_SOURCE}) target_include_directories(ton_crypto PUBLIC $ $) -target_link_libraries(ton_crypto PUBLIC ${OPENSSL_CRYPTO_LIBRARY} tdutils tddb_utils) +target_link_libraries(ton_crypto PUBLIC ${OPENSSL_CRYPTO_LIBRARY} tdutils tddb_utils ton_crypto_core ton_block) if (USE_EMSCRIPTEN) target_link_options(ton_crypto PRIVATE -fexceptions) target_compile_options(ton_crypto PRIVATE -fexceptions) endif() if (NOT WIN32) - find_library(DL dl) + find_library(DL dl) if (DL) target_link_libraries(ton_crypto PUBLIC dl z) else() @@ -290,6 +312,39 @@ if (NOT WIN32) endif() target_include_directories(ton_crypto SYSTEM PUBLIC $) +add_dependencies(ton_crypto blst) +target_include_directories(ton_crypto PRIVATE ${BLST_INCLUDE_DIR}) +target_link_libraries(ton_crypto PRIVATE ${BLST_LIB}) + +if (NOT USE_EMSCRIPTEN) + find_package(Secp256k1 REQUIRED) +endif() + +if (MSVC) + find_package(Sodium REQUIRED) + target_compile_definitions(ton_crypto PUBLIC SODIUM_STATIC) + target_include_directories(ton_crypto_core PUBLIC $) + target_link_libraries(ton_crypto PUBLIC ${SECP256K1_LIBRARIES}) +elseif (ANDROID) + target_include_directories(ton_crypto_core PUBLIC $) + target_link_libraries(ton_crypto PUBLIC $) +else() + if (NOT USE_EMSCRIPTEN) + find_package(Sodium REQUIRED) + target_include_directories(ton_crypto_core PUBLIC $) + target_link_libraries(ton_crypto PUBLIC ${SECP256K1_LIBRARIES}) + else() + target_include_directories(ton_crypto_core PUBLIC $) + target_link_libraries(ton_crypto PUBLIC ${SECP256K1_LIBRARY}) + endif() + if (NOT APPLE AND NOT USE_EMSCRIPTEN) + target_link_libraries(ton_crypto_core PUBLIC secp256k1) + endif() +endif() + +target_include_directories(ton_crypto_core PUBLIC $) +target_link_libraries(ton_crypto PUBLIC ${SODIUM_LIBRARY_RELEASE}) + add_library(ton_db STATIC ${TON_DB_SOURCE}) target_include_directories(ton_db PUBLIC $ $) @@ -316,12 +371,12 @@ endif() add_library(src_parser ${PARSER_SOURCE}) target_include_directories(src_parser PUBLIC $) -target_link_libraries(src_parser PUBLIC ton_crypto) +target_link_libraries(src_parser PUBLIC ton_crypto_core) add_library(ton_block ${BLOCK_SOURCE}) target_include_directories(ton_block PUBLIC $ $ $) -target_link_libraries(ton_block PUBLIC ton_crypto tdutils tdactor tl_api) +target_link_libraries(ton_block PUBLIC ton_crypto_core tdutils tdactor tl_api) add_executable(func func/func-main.cpp ${FUNC_LIB_SOURCE}) target_include_directories(func PUBLIC $) @@ -347,12 +402,12 @@ if (USE_EMSCRIPTEN) target_link_options(funcfiftlib PRIVATE -sALLOW_TABLE_GROWTH=1) target_link_options(funcfiftlib PRIVATE --embed-file ${CMAKE_CURRENT_SOURCE_DIR}/fift/lib@/fiftlib) target_link_options(funcfiftlib PRIVATE -fexceptions) - target_compile_options(funcfiftlib PRIVATE -fexceptions) + target_compile_options(funcfiftlib PRIVATE -fexceptions -fno-stack-protector) endif() add_executable(tlbc tl/tlbc.cpp) target_include_directories(tlbc PUBLIC $) -target_link_libraries(tlbc PUBLIC ton_crypto src_parser) +target_link_libraries(tlbc PUBLIC ton_crypto_core src_parser) if (WINGETOPT_FOUND) target_link_libraries_system(tlbc wingetopt) endif() diff --git a/crypto/block/block.tlb b/crypto/block/block.tlb index 6b9473ca6..7fa7f750e 100644 --- a/crypto/block/block.tlb +++ b/crypto/block/block.tlb @@ -384,7 +384,7 @@ action_reserve_currency#36e6b809 mode:(## 8) currency:CurrencyCollection = OutAction; libref_hash$0 lib_hash:bits256 = LibRef; libref_ref$1 library:^Cell = LibRef; -action_change_library#26fa1dd4 mode:(## 7) { mode <= 2 } +action_change_library#26fa1dd4 mode:(## 7) libref:LibRef = OutAction; out_list_node$_ prev:^Cell action:OutAction = OutListNode; @@ -686,6 +686,8 @@ _#cc utime_since:uint32 bit_price_ps:uint64 cell_price_ps:uint64 mc_bit_price_ps:uint64 mc_cell_price_ps:uint64 = StoragePrices; _ (Hashmap 32 StoragePrices) = ConfigParam 18; +_ global_id:int32 = ConfigParam 19; + gas_prices#dd gas_price:uint64 gas_limit:uint64 gas_credit:uint64 block_gas_limit:uint64 freeze_due_limit:uint64 delete_due_limit:uint64 = GasLimitsPrices; diff --git a/crypto/block/mc-config.cpp b/crypto/block/mc-config.cpp index e94ff0a43..2cf8b1d9a 100644 --- a/crypto/block/mc-config.cpp +++ b/crypto/block/mc-config.cpp @@ -2220,4 +2220,42 @@ Ref ConfigInfo::lookup_library(td::ConstBitPtr root_hash) const { return lib; } +td::Result> ConfigInfo::get_prev_blocks_info() const { + // [ wc:Integer shard:Integer seqno:Integer root_hash:Integer file_hash:Integer] = BlockId; + // [ last_mc_blocks:[BlockId...] + // prev_key_block:BlockId ] : PrevBlocksInfo + auto block_id_to_tuple = [](const ton::BlockIdExt& block_id) -> vm::Ref { + td::RefInt256 shard = td::make_refint(block_id.id.shard); + if (shard->sgn() < 0) { + shard &= ((td::make_refint(1) << 64) - 1); + } + return vm::make_tuple_ref( + td::make_refint(block_id.id.workchain), + std::move(shard), + td::make_refint(block_id.id.seqno), + td::bits_to_refint(block_id.root_hash.bits(), 256), + td::bits_to_refint(block_id.file_hash.bits(), 256)); + }; + std::vector last_mc_blocks; + + last_mc_blocks.push_back(block_id_to_tuple(block_id)); + for (ton::BlockSeqno seqno = block_id.id.seqno; seqno > 0 && last_mc_blocks.size() < 16; ) { + --seqno; + ton::BlockIdExt block_id; + if (!get_old_mc_block_id(seqno, block_id)) { + return td::Status::Error("cannot fetch old mc block"); + } + last_mc_blocks.push_back(block_id_to_tuple(block_id)); + } + + ton::BlockIdExt last_key_block; + ton::LogicalTime last_key_block_lt; + if (!get_last_key_block(last_key_block, last_key_block_lt)) { + return td::Status::Error("cannot fetch last key block"); + } + return vm::make_tuple_ref( + td::make_cnt_ref>(std::move(last_mc_blocks)), + block_id_to_tuple(last_key_block)); +} + } // namespace block diff --git a/crypto/block/mc-config.h b/crypto/block/mc-config.h index c56be4747..799bf6bf2 100644 --- a/crypto/block/mc-config.h +++ b/crypto/block/mc-config.h @@ -738,6 +738,7 @@ class ConfigInfo : public Config, public ShardConfig { ton::CatchainSeqno* cc_seqno_delta = nullptr) const; std::vector compute_validator_set_cc(ton::ShardIdFull shard, ton::UnixTime time, ton::CatchainSeqno* cc_seqno_delta = nullptr) const; + td::Result> get_prev_blocks_info() const; static td::Result> extract_config(std::shared_ptr static_boc, int mode = 0); static td::Result> extract_config(Ref mc_state_root, int mode = 0); diff --git a/crypto/block/transaction.cpp b/crypto/block/transaction.cpp index fe3599936..92a5bfe2b 100644 --- a/crypto/block/transaction.cpp +++ b/crypto/block/transaction.cpp @@ -478,7 +478,7 @@ void add_partial_storage_payment(td::BigInt256& payment, ton::UnixTime delta, co b.mul_short(prices.bit_price); } b += c; - b.mul_short(delta); + b.mul_short(delta).normalize(); CHECK(b.sgn() >= 0); payment += b; } @@ -506,8 +506,7 @@ td::RefInt256 StoragePrices::compute_storage_fees(ton::UnixTime now, const std:: } upto = valid_until; } - total.unique_write().rshift(16, 1); // divide by 2^16 with ceil rounding to obtain nanograms - return total; + return td::rshift(total, 16, 1); // divide by 2^16 with ceil rounding to obtain nanograms } td::RefInt256 Account::compute_storage_fees(ton::UnixTime now, const std::vector& pricing) const { @@ -731,6 +730,9 @@ bool Transaction::prepare_storage_phase(const StoragePhaseConfig& cfg, bool forc } break; } + if (cfg.enable_due_payment) { + due_payment = total_due; + } } } if (adjust_msg_value && msg_balance_remaining.grams > balance.grams) { @@ -924,7 +926,7 @@ Ref Transaction::prepare_vm_c7(const ComputePhaseConfig& cfg) const { throw CollatorError{"cannot generate valid SmartContractInfo"}; return {}; } - auto tuple = vm::make_tuple_ref( + std::vector tuple = { td::make_refint(0x076ef1ea), // [ magic:0x076ef1ea td::zero_refint(), // actions:Integer td::zero_refint(), // msgs_sent:Integer @@ -933,10 +935,27 @@ Ref Transaction::prepare_vm_c7(const ComputePhaseConfig& cfg) const { td::make_refint(start_lt), // trans_lt:Integer std::move(rand_seed_int), // rand_seed:Integer balance.as_vm_tuple(), // balance_remaining:[Integer (Maybe Cell)] - my_addr, // myself:MsgAddressInt - vm::StackEntry::maybe(cfg.global_config)); // global_config:(Maybe Cell) ] = SmartContractInfo; - LOG(DEBUG) << "SmartContractInfo initialized with " << vm::StackEntry(tuple).to_string(); - return vm::make_tuple_ref(std::move(tuple)); + my_addr, // myself:MsgAddressInt + vm::StackEntry::maybe(cfg.global_config) // global_config:(Maybe Cell) ] = SmartContractInfo; + }; + if (cfg.global_version >= 4) { + tuple.push_back(new_code); // code:Cell + if (msg_balance_remaining.is_valid()) { + tuple.push_back(msg_balance_remaining.as_vm_tuple()); // in_msg_value:[Integer (Maybe Cell)] + } else { + tuple.push_back(block::CurrencyCollection::zero().as_vm_tuple()); + } + tuple.push_back(storage_phase->fees_collected); // storage_fees:Integer + + // See crypto/block/mc-config.cpp#2115 (get_prev_blocks_info) + // [ wc:Integer shard:Integer seqno:Integer root_hash:Integer file_hash:Integer] = BlockId; + // [ last_mc_blocks:[BlockId...] + // prev_key_block:BlockId ] : PrevBlocksInfo + tuple.push_back(cfg.prev_blocks_info.not_null() ? vm::StackEntry(cfg.prev_blocks_info) : vm::StackEntry()); + } + auto tuple_ref = td::make_cnt_ref>(std::move(tuple)); + LOG(DEBUG) << "SmartContractInfo initialized with " << vm::StackEntry(tuple_ref).to_string(); + return vm::make_tuple_ref(std::move(tuple_ref)); } int output_actions_count(Ref list) { @@ -1093,6 +1112,7 @@ bool Transaction::prepare_compute_phase(const ComputePhaseConfig& cfg) { } vm::VmState vm{new_code, std::move(stack), gas, 1, new_data, vm_log, compute_vm_libraries(cfg)}; vm.set_max_data_depth(cfg.max_vm_data_depth); + vm.set_global_version(cfg.global_version); vm.set_c7(prepare_vm_c7(cfg)); // tuple with SmartContractInfo vm.set_chksig_always_succeed(cfg.ignore_chksig); // vm.incr_stack_trace(1); // enable stack dump after each step @@ -1174,6 +1194,7 @@ bool Transaction::prepare_action_phase(const ActionPhaseConfig& cfg) { ap.total_fwd_fees = td::zero_refint(); ap.total_action_fees = td::zero_refint(); ap.reserved_balance.set_zero(); + ap.action_fine = td::zero_refint(); td::Ref old_code = new_code, old_data = new_data, old_library = new_library; auto enforce_state_limits = [&]() { @@ -1240,6 +1261,7 @@ bool Transaction::prepare_action_phase(const ActionPhaseConfig& cfg) { int tag = block::gen::t_OutAction.get_tag(cs); CHECK(tag >= 0); int err_code = 34; + ap.need_bounce_on_fail = false; switch (tag) { case block::gen::OutAction::action_set_code: err_code = try_action_set_code(cs, ap, cfg); @@ -1270,12 +1292,24 @@ bool Transaction::prepare_action_phase(const ActionPhaseConfig& cfg) { ap.no_funds = true; } LOG(DEBUG) << "invalid action " << ap.result_arg << " in action list: error code " << ap.result_code; - // This is reuqired here because changes to libraries are applied even if action phase fails + // This is reuqired here because changes to libraries are applied even if actipn phase fails enforce_state_limits(); + if (cfg.action_fine_enabled) { + ap.action_fine = std::min(ap.action_fine, balance.grams); + ap.total_action_fees = ap.action_fine; + balance.grams -= ap.action_fine; + total_fees += ap.action_fine; + } + if (ap.need_bounce_on_fail) { + ap.bounce = true; + } return true; } } + if (cfg.action_fine_enabled) { + ap.total_action_fees += ap.action_fine; + } end_lt = ap.end_lt; if (ap.new_code.not_null()) { new_code = ap.new_code; @@ -1321,7 +1355,17 @@ int Transaction::try_action_change_library(vm::CellSlice& cs, ActionPhase& ap, c if (!tlb::unpack_exact(cs, rec)) { return -1; } - // mode: +0 = remove library, +1 = add private library, +2 = add public library + // mode: +0 = remove library, +1 = add private library, +2 = add public library, +16 - bounce on fail + if (rec.mode & 16) { + if (!cfg.bounce_on_fail_enabled) { + return -1; + } + ap.need_bounce_on_fail = true; + rec.mode &= ~16; + } + if (rec.mode > 2) { + return -1; + } Ref lib_ref = rec.libref->prefetch_ref(); ton::Bits256 hash; if (lib_ref.not_null()) { @@ -1535,9 +1579,22 @@ bool Transaction::check_rewrite_dest_addr(Ref& dest_addr, const A int Transaction::try_action_send_msg(const vm::CellSlice& cs0, ActionPhase& ap, const ActionPhaseConfig& cfg, int redoing) { block::gen::OutAction::Record_action_send_msg act_rec; - // mode: +128 = attach all remaining balance, +64 = attach all remaining balance of the inbound message, +32 = delete smart contract if balance becomes zero, +1 = pay message fees, +2 = skip if message cannot be sent + // mode: + // +128 = attach all remaining balance + // +64 = attach all remaining balance of the inbound message + // +32 = delete smart contract if balance becomes zero + // +1 = pay message fees + // +2 = skip if message cannot be sent + // +16 = bounce if action fails vm::CellSlice cs{cs0}; - if (!tlb::unpack_exact(cs, act_rec) || (act_rec.mode & ~0xe3) || (act_rec.mode & 0xc0) == 0xc0) { + if (!tlb::unpack_exact(cs, act_rec)) { + return -1; + } + if ((act_rec.mode & 16) && cfg.bounce_on_fail_enabled) { + act_rec.mode &= ~16; + ap.need_bounce_on_fail = true; + } + if ((act_rec.mode & ~0xe3) || (act_rec.mode & 0xc0) == 0xc0) { return -1; } bool skip_invalid = (act_rec.mode & 2); @@ -1564,7 +1621,7 @@ int Transaction::try_action_send_msg(const vm::CellSlice& cs0, ActionPhase& ap, && cb.store_long_bool(3, 2) // (just (right ... )) && cb.store_ref_bool(std::move(cell)) // z:^StateInit && cb.finalize_to(cell)); - msg.init = vm::load_cell_slice_ref(std::move(cell)); + msg.init = vm::load_cell_slice_ref(cell); } else { redoing = 2; } @@ -1581,7 +1638,7 @@ int Transaction::try_action_send_msg(const vm::CellSlice& cs0, ActionPhase& ap, && cb.store_long_bool(1, 1) // (right ... ) && cb.store_ref_bool(std::move(cell)) // x:^X && cb.finalize_to(cell)); - msg.body = vm::load_cell_slice_ref(std::move(cell)); + msg.body = vm::load_cell_slice_ref(cell); } block::gen::CommonMsgInfoRelaxed::Record_int_msg_info info; @@ -1629,30 +1686,84 @@ int Transaction::try_action_send_msg(const vm::CellSlice& cs0, ActionPhase& ap, // fetch message pricing info const MsgPrices& msg_prices = cfg.fetch_msg_prices(to_mc || account.is_masterchain()); + // If action fails, account is required to pay fine_per_cell for every visited cell + // Number of visited cells is limited depending on available funds + unsigned max_cells = cfg.size_limits.max_msg_cells; + td::uint64 fine_per_cell = 0; + if (cfg.action_fine_enabled && !account.is_special) { + fine_per_cell = (msg_prices.cell_price >> 16) / 4; + td::RefInt256 funds = ap.remaining_balance.grams; + if (!ext_msg && !(act_rec.mode & 0x80) && !(act_rec.mode & 1)) { + if (!block::tlb::t_CurrencyCollection.validate_csr(info.value)) { + LOG(DEBUG) << "invalid value:CurrencyCollection in proposed outbound message"; + return skip_invalid ? 0 : 37; + } + block::CurrencyCollection value; + CHECK(value.unpack(info.value)); + CHECK(value.grams.not_null()); + td::RefInt256 new_funds = value.grams; + if (act_rec.mode & 0x40) { + if (msg_balance_remaining.is_valid()) { + new_funds += msg_balance_remaining.grams; + } + if (compute_phase) { + new_funds -= compute_phase->gas_fees; + } + new_funds -= ap.action_fine; + if (new_funds->sgn() < 0) { + LOG(DEBUG) + << "not enough value to transfer with the message: all of the inbound message value has been consumed"; + return skip_invalid ? 0 : 37; + } + } + funds = std::min(funds, new_funds); + } + if (funds->cmp(max_cells * fine_per_cell) < 0) { + max_cells = static_cast((funds / td::make_refint(fine_per_cell))->to_long()); + } + } // compute size of message - vm::CellStorageStat sstat; // for message size + vm::CellStorageStat sstat(max_cells); // for message size // preliminary storage estimation of the resulting message unsigned max_merkle_depth = 0; - auto add_used_storage = [&](const auto& x, unsigned skip_root_count) { + auto add_used_storage = [&](const auto& x, unsigned skip_root_count) -> td::Status { if (x.not_null()) { - auto res = sstat.add_used_storage(x, true, skip_root_count).move_as_ok(); + TRY_RESULT(res, sstat.add_used_storage(x, true, skip_root_count)); max_merkle_depth = std::max(max_merkle_depth, res.max_merkle_depth); } + return td::Status::OK(); }; add_used_storage(msg.init, 3); // message init add_used_storage(msg.body, 3); // message body (the root cell itself is not counted) if (!ext_msg) { add_used_storage(info.value->prefetch_ref(), 0); } - LOG(DEBUG) << "storage paid for a message: " << sstat.cells << " cells, " << sstat.bits << " bits"; - if (sstat.bits > cfg.size_limits.max_msg_bits || sstat.cells > cfg.size_limits.max_msg_cells) { + auto collect_fine = [&] { + if (cfg.action_fine_enabled && !account.is_special) { + td::uint64 fine = fine_per_cell * std::min(max_cells, sstat.cells); + if (ap.remaining_balance.grams->cmp(fine) < 0) { + fine = ap.remaining_balance.grams->to_long(); + } + ap.action_fine += fine; + ap.remaining_balance.grams -= fine; + } + }; + if (sstat.cells > max_cells && max_cells < cfg.size_limits.max_msg_cells) { + LOG(DEBUG) << "not enough funds to process a message (max_cells=" << max_cells << ")"; + collect_fine(); + return skip_invalid ? 0 : 40; + } + if (sstat.bits > cfg.size_limits.max_msg_bits || sstat.cells > max_cells) { LOG(DEBUG) << "message too large, invalid"; + collect_fine(); return skip_invalid ? 0 : 40; } if (max_merkle_depth > max_allowed_merkle_depth) { LOG(DEBUG) << "message has too big merkle depth, invalid"; + collect_fine(); return skip_invalid ? 0 : 40; } + LOG(DEBUG) << "storage paid for a message: " << sstat.cells << " cells, " << sstat.bits << " bits"; // compute forwarding fees auto fees_c = msg_prices.compute_fwd_ihr_fees(sstat.cells, sstat.bits, info.ihr_disabled); @@ -1681,6 +1792,7 @@ int Transaction::try_action_send_msg(const vm::CellSlice& cs0, ActionPhase& ap, // ... if (!block::tlb::t_CurrencyCollection.validate_csr(info.value)) { LOG(DEBUG) << "invalid value:CurrencyCollection in proposed outbound message"; + collect_fine(); return skip_invalid ? 0 : 37; } if (info.ihr_disabled) { @@ -1699,11 +1811,15 @@ int Transaction::try_action_send_msg(const vm::CellSlice& cs0, ActionPhase& ap, } else if (act_rec.mode & 0x40) { // attach all remaining balance of the inbound message (in addition to the original value) req += msg_balance_remaining; - if (!(act_rec.mode & 1) && compute_phase) { - req -= compute_phase->gas_fees; + if (!(act_rec.mode & 1)) { + req -= ap.action_fine; + if (compute_phase) { + req -= compute_phase->gas_fees; + } if (!req.is_valid()) { LOG(DEBUG) << "not enough value to transfer with the message: all of the inbound message value has been consumed"; + collect_fine(); return skip_invalid ? 0 : 37; } } @@ -1719,6 +1835,7 @@ int Transaction::try_action_send_msg(const vm::CellSlice& cs0, ActionPhase& ap, // receiver pays the fees (but cannot) LOG(DEBUG) << "not enough value attached to the message to pay forwarding fees : have " << req.grams << ", need " << fees_total; + collect_fine(); return skip_invalid ? 0 : 37; // not enough grams } else { // decrease message value @@ -1729,6 +1846,7 @@ int Transaction::try_action_send_msg(const vm::CellSlice& cs0, ActionPhase& ap, if (ap.remaining_balance.grams < req_grams_brutto) { LOG(DEBUG) << "not enough grams to transfer with the message : remaining balance is " << ap.remaining_balance.to_str() << ", need " << req_grams_brutto << " (including forwarding fees)"; + collect_fine(); return skip_invalid ? 0 : 37; // not enough grams } @@ -1738,6 +1856,7 @@ int Transaction::try_action_send_msg(const vm::CellSlice& cs0, ActionPhase& ap, LOG(DEBUG) << "not enough extra currency to send with the message: " << block::CurrencyCollection{0, req.extra}.to_str() << " required, only " << block::CurrencyCollection{0, ap.remaining_balance.extra}.to_str() << " available"; + collect_fine(); return skip_invalid ? 0 : 38; // not enough (extra) funds } if (ap.remaining_balance.extra.not_null() || req.extra.not_null()) { @@ -1760,7 +1879,11 @@ int Transaction::try_action_send_msg(const vm::CellSlice& cs0, ActionPhase& ap, vm::CellBuilder cb; if (!tlb::type_pack(cb, block::gen::t_MessageRelaxed_Any, msg)) { LOG(DEBUG) << "outbound message does not fit into a cell after rewriting"; - return redoing < 2 ? -2 : (skip_invalid ? 0 : 39); + if (redoing == 2) { + collect_fine(); + return skip_invalid ? 0 : 39; + } + return -2; } new_msg_bits = cb.size(); @@ -1782,6 +1905,7 @@ int Transaction::try_action_send_msg(const vm::CellSlice& cs0, ActionPhase& ap, // external messages also have forwarding fees if (ap.remaining_balance.grams < fwd_fee) { LOG(DEBUG) << "not enough funds to pay for an outbound external message"; + collect_fine(); return skip_invalid ? 0 : 37; // not enough grams } // repack message @@ -1795,7 +1919,11 @@ int Transaction::try_action_send_msg(const vm::CellSlice& cs0, ActionPhase& ap, vm::CellBuilder cb; if (!tlb::type_pack(cb, block::gen::t_MessageRelaxed_Any, msg)) { LOG(DEBUG) << "outbound message does not fit into a cell after rewriting"; - return redoing < 2 ? -2 : (skip_invalid ? 0 : 39); + if (redoing == 2) { + collect_fine(); + return (skip_invalid ? 0 : 39); + } + return -2; } new_msg_bits = cb.size(); @@ -1810,12 +1938,14 @@ int Transaction::try_action_send_msg(const vm::CellSlice& cs0, ActionPhase& ap, if (!block::tlb::t_Message.validate_ref(new_msg)) { LOG(ERROR) << "generated outbound message is not a valid (Message Any) according to hand-written check"; + collect_fine(); return -1; } if (!block::gen::t_Message_Any.validate_ref(new_msg)) { LOG(ERROR) << "generated outbound message is not a valid (Message Any) according to automated check"; block::gen::t_Message_Any.print_ref(std::cerr, new_msg); vm::load_cell_slice(new_msg).print_rec(std::cerr); + collect_fine(); return -1; } if (verbosity > 2) { @@ -1843,7 +1973,14 @@ int Transaction::try_action_send_msg(const vm::CellSlice& cs0, ActionPhase& ap, int Transaction::try_action_reserve_currency(vm::CellSlice& cs, ActionPhase& ap, const ActionPhaseConfig& cfg) { block::gen::OutAction::Record_action_reserve_currency rec; - if (!tlb::unpack_exact(cs, rec) || (rec.mode & ~15)) { + if (!tlb::unpack_exact(cs, rec)) { + return -1; + } + if ((rec.mode & 16) && cfg.bounce_on_fail_enabled) { + rec.mode &= ~16; + ap.need_bounce_on_fail = true; + } + if (rec.mode & ~15) { return -1; } int mode = rec.mode; @@ -1990,6 +2127,9 @@ bool Transaction::prepare_bounce_phase(const ActionPhaseConfig& cfg) { if (compute_phase && compute_phase->gas_fees.not_null()) { msg_balance.grams -= compute_phase->gas_fees; } + if (action_phase && action_phase->action_fine.not_null()) { + msg_balance.grams -= action_phase->action_fine; + } if ((msg_balance.grams < 0) || (msg_balance.grams->signed_fits_bits(64) && msg_balance.grams->to_long() < (long long)bp.fwd_fees)) { // not enough funds @@ -2570,17 +2710,27 @@ bool Account::libraries_changed() const { } } -td::Status FetchConfigParams::fetch_config_params(const block::Config& config, - Ref* old_mparams, - std::vector* storage_prices, - block::StoragePhaseConfig* storage_phase_cfg, - td::BitArray<256>* rand_seed, - block::ComputePhaseConfig* compute_phase_cfg, - block::ActionPhaseConfig* action_phase_cfg, - td::RefInt256* masterchain_create_fee, - td::RefInt256* basechain_create_fee, - ton::WorkchainId wc, - ton::UnixTime now) { +td::Status FetchConfigParams::fetch_config_params( + const block::ConfigInfo& config, Ref* old_mparams, std::vector* storage_prices, + StoragePhaseConfig* storage_phase_cfg, td::BitArray<256>* rand_seed, ComputePhaseConfig* compute_phase_cfg, + ActionPhaseConfig* action_phase_cfg, td::RefInt256* masterchain_create_fee, td::RefInt256* basechain_create_fee, + ton::WorkchainId wc, ton::UnixTime now) { + auto prev_blocks_info = config.get_prev_blocks_info(); + if (prev_blocks_info.is_error()) { + return prev_blocks_info.move_as_error_prefix( + td::Status::Error(-668, "cannot fetch prev blocks info from masterchain configuration: ")); + } + return fetch_config_params(config, prev_blocks_info.move_as_ok(), old_mparams, storage_prices, storage_phase_cfg, + rand_seed, compute_phase_cfg, action_phase_cfg, masterchain_create_fee, + basechain_create_fee, wc, now); +} + +td::Status FetchConfigParams::fetch_config_params( + const block::Config& config, td::Ref prev_blocks_info, Ref* old_mparams, + std::vector* storage_prices, StoragePhaseConfig* storage_phase_cfg, + td::BitArray<256>* rand_seed, ComputePhaseConfig* compute_phase_cfg, ActionPhaseConfig* action_phase_cfg, + td::RefInt256* masterchain_create_fee, td::RefInt256* basechain_create_fee, ton::WorkchainId wc, + ton::UnixTime now) { *old_mparams = config.get_config_param(9); { auto res = config.get_storage_prices(); @@ -2605,9 +2755,14 @@ td::Status FetchConfigParams::fetch_config_params(const block::Config& config, storage_phase_cfg->delete_due_limit)) { return td::Status::Error(-668, "cannot unpack current gas prices and limits from masterchain configuration"); } + storage_phase_cfg->enable_due_payment = config.get_global_version() >= 4; compute_phase_cfg->block_rand_seed = *rand_seed; compute_phase_cfg->max_vm_data_depth = size_limits.max_vm_data_depth; compute_phase_cfg->global_config = config.get_root_cell(); + compute_phase_cfg->global_version = config.get_global_version(); + if (compute_phase_cfg->global_version >= 4) { + compute_phase_cfg->prev_blocks_info = std::move(prev_blocks_info); + } compute_phase_cfg->suspended_addresses = config.get_suspended_addresses(now); } { @@ -2630,6 +2785,8 @@ td::Status FetchConfigParams::fetch_config_params(const block::Config& config, action_phase_cfg->workchains = &config.get_workchain_list(); action_phase_cfg->bounce_msg_body = (config.has_capability(ton::capBounceMsgBody) ? 256 : 0); action_phase_cfg->size_limits = size_limits; + action_phase_cfg->action_fine_enabled = config.get_global_version() >= 4; + action_phase_cfg->bounce_on_fail_enabled = config.get_global_version() >= 4; action_phase_cfg->mc_blackhole_addr = config.get_burning_config().blackhole_addr; } { diff --git a/crypto/block/transaction.h b/crypto/block/transaction.h index bc5adff2a..3ae8cdf88 100644 --- a/crypto/block/transaction.h +++ b/crypto/block/transaction.h @@ -80,6 +80,7 @@ struct StoragePhaseConfig { const std::vector* pricing{nullptr}; td::RefInt256 freeze_due_limit; td::RefInt256 delete_due_limit; + bool enable_due_payment{false}; StoragePhaseConfig() = default; StoragePhaseConfig(const std::vector* _pricing, td::RefInt256 freeze_limit = {}, td::RefInt256 delete_limit = {}) @@ -112,8 +113,11 @@ struct ComputePhaseConfig { bool ignore_chksig{false}; bool with_vm_log{false}; td::uint16 max_vm_data_depth = 512; + int global_version = 0; + Ref prev_blocks_info; std::unique_ptr suspended_addresses; int vm_log_verbosity = 0; + ComputePhaseConfig(td::uint64 _gas_price = 0, td::uint64 _gas_limit = 0, td::uint64 _gas_credit = 0) : gas_price(_gas_price), gas_limit(_gas_limit), special_gas_limit(_gas_limit), gas_credit(_gas_credit) { compute_threshold(); @@ -153,6 +157,8 @@ struct ActionPhaseConfig { MsgPrices fwd_mc; // from/to masterchain SizeLimitsConfig size_limits; const WorkchainSet* workchains{nullptr}; + bool action_fine_enabled{false}; + bool bounce_on_fail_enabled{false}; td::optional mc_blackhole_addr; const MsgPrices& fetch_msg_prices(bool is_masterchain) const { return is_masterchain ? fwd_mc : fwd_std; @@ -210,6 +216,9 @@ struct ActionPhase { std::vector> out_msgs; ton::LogicalTime end_lt; unsigned long long tot_msg_bits{0}, tot_msg_cells{0}; + td::RefInt256 action_fine; + bool need_bounce_on_fail = false; + bool bounce = false; }; struct BouncePhase { @@ -402,17 +411,18 @@ struct Transaction { } // namespace transaction struct FetchConfigParams { -static td::Status fetch_config_params(const block::Config& config, - Ref* old_mparams, - std::vector* storage_prices, - StoragePhaseConfig* storage_phase_cfg, - td::BitArray<256>* rand_seed, - ComputePhaseConfig* compute_phase_cfg, - ActionPhaseConfig* action_phase_cfg, - td::RefInt256* masterchain_create_fee, - td::RefInt256* basechain_create_fee, - ton::WorkchainId wc, - ton::UnixTime now); + static td::Status fetch_config_params(const block::ConfigInfo& config, Ref* old_mparams, + std::vector* storage_prices, + StoragePhaseConfig* storage_phase_cfg, td::BitArray<256>* rand_seed, + ComputePhaseConfig* compute_phase_cfg, ActionPhaseConfig* action_phase_cfg, + td::RefInt256* masterchain_create_fee, td::RefInt256* basechain_create_fee, + ton::WorkchainId wc, ton::UnixTime now); + static td::Status fetch_config_params(const block::Config& config, Ref prev_blocks_info, + Ref* old_mparams, std::vector* storage_prices, + StoragePhaseConfig* storage_phase_cfg, td::BitArray<256>* rand_seed, + ComputePhaseConfig* compute_phase_cfg, ActionPhaseConfig* action_phase_cfg, + td::RefInt256* masterchain_create_fee, td::RefInt256* basechain_create_fee, + ton::WorkchainId wc, ton::UnixTime now); }; } // namespace block diff --git a/crypto/ellcurve/p256.cpp b/crypto/ellcurve/p256.cpp new file mode 100644 index 000000000..de5393723 --- /dev/null +++ b/crypto/ellcurve/p256.cpp @@ -0,0 +1,91 @@ +/* + This file is part of TON Blockchain Library. + + TON Blockchain Library is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version. + + TON Blockchain Library 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 Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with TON Blockchain Library. If not, see . +*/ + +#include "p256.h" +#include "td/utils/check.h" +#include "td/utils/misc.h" +#include +#include +#include + +namespace td { + +td::Status p256_check_signature(td::Slice data, td::Slice public_key, td::Slice signature) { + CHECK(public_key.size() == 33); + CHECK(signature.size() == 64); + + EVP_PKEY_CTX* pctx = EVP_PKEY_CTX_new_id(EVP_PKEY_EC, nullptr); + if (pctx == nullptr) { + return td::Status::Error("Can't create EVP_PKEY_CTX"); + } + SCOPE_EXIT { + EVP_PKEY_CTX_free(pctx); + }; + if (EVP_PKEY_paramgen_init(pctx) <= 0) { + return td::Status::Error("EVP_PKEY_paramgen_init failed"); + } + if (EVP_PKEY_CTX_set_ec_paramgen_curve_nid(pctx, NID_X9_62_prime256v1) <= 0) { + return td::Status::Error("EVP_PKEY_CTX_set_ec_paramgen_curve_nid failed"); + } + EVP_PKEY* pkey = nullptr; + if (EVP_PKEY_paramgen(pctx, &pkey) <= 0) { + return td::Status::Error("EVP_PKEY_paramgen failed"); + } + SCOPE_EXIT { + EVP_PKEY_free(pkey); + }; + if (EVP_PKEY_set1_tls_encodedpoint(pkey, public_key.ubegin(), public_key.size()) <= 0) { + return td::Status::Error("Failed to import public key"); + } + EVP_MD_CTX* md_ctx = EVP_MD_CTX_new(); + if (md_ctx == nullptr) { + return td::Status::Error("Can't create EVP_MD_CTX"); + } + SCOPE_EXIT { + EVP_MD_CTX_free(md_ctx); + }; + if (EVP_DigestVerifyInit(md_ctx, nullptr, nullptr, nullptr, pkey) <= 0) { + return td::Status::Error("Can't init DigestVerify"); + } + ECDSA_SIG* sig = ECDSA_SIG_new(); + SCOPE_EXIT { + ECDSA_SIG_free(sig); + }; + unsigned char buf[33]; + buf[0] = 0; + std::copy(signature.ubegin(), signature.ubegin() + 32, buf + 1); + BIGNUM* r = BN_bin2bn(buf, 33, nullptr); + std::copy(signature.ubegin() + 32, signature.ubegin() + 64, buf + 1); + BIGNUM* s = BN_bin2bn(buf, 33, nullptr); + if (ECDSA_SIG_set0(sig, r, s) != 1) { + return td::Status::Error("Invalid signature"); + } + unsigned char* signature_encoded = nullptr; + int signature_len = i2d_ECDSA_SIG(sig, &signature_encoded); + if (signature_len <= 0) { + return td::Status::Error("Invalid signature"); + } + SCOPE_EXIT { + OPENSSL_free(signature_encoded); + }; + if (EVP_DigestVerify(md_ctx, signature_encoded, signature_len, data.ubegin(), data.size()) == 1) { + return td::Status::OK(); + } + return td::Status::Error("Wrong signature"); +} + +} // namespace td diff --git a/crypto/ellcurve/p256.h b/crypto/ellcurve/p256.h new file mode 100644 index 000000000..22d08be43 --- /dev/null +++ b/crypto/ellcurve/p256.h @@ -0,0 +1,26 @@ +/* + This file is part of TON Blockchain Library. + + TON Blockchain Library is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version. + + TON Blockchain Library 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 Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with TON Blockchain Library. If not, see . +*/ +#pragma once + +#include "td/utils/Slice.h" +#include "td/utils/Status.h" + +namespace td { + +td::Status p256_check_signature(td::Slice data, td::Slice public_key, td::Slice signature); + +} diff --git a/crypto/ellcurve/secp256k1.cpp b/crypto/ellcurve/secp256k1.cpp new file mode 100644 index 000000000..e890117a4 --- /dev/null +++ b/crypto/ellcurve/secp256k1.cpp @@ -0,0 +1,42 @@ +/* + This file is part of TON Blockchain Library. + + TON Blockchain Library is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version. + + TON Blockchain Library 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 Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with TON Blockchain Library. If not, see . +*/ + +#include "secp256k1.h" +#include "td/utils/check.h" +#include +#include + +namespace td { + +bool ecrecover(const unsigned char* hash, const unsigned char* signature, unsigned char* public_key) { + static secp256k1_context* ctx = secp256k1_context_create(SECP256K1_CONTEXT_VERIFY); + secp256k1_ecdsa_recoverable_signature ecdsa_signature; + if (signature[64] > 3 || + !secp256k1_ecdsa_recoverable_signature_parse_compact(ctx, &ecdsa_signature, signature, signature[64])) { + return false; + } + secp256k1_pubkey pubkey; + if (!secp256k1_ecdsa_recover(ctx, &pubkey, &ecdsa_signature, hash)) { + return false; + } + size_t len = 65; + secp256k1_ec_pubkey_serialize(ctx, public_key, &len, &pubkey, SECP256K1_EC_UNCOMPRESSED); + CHECK(len == 65); + return true; +} + +} diff --git a/crypto/ellcurve/secp256k1.h b/crypto/ellcurve/secp256k1.h new file mode 100644 index 000000000..80ab6a873 --- /dev/null +++ b/crypto/ellcurve/secp256k1.h @@ -0,0 +1,23 @@ +/* + This file is part of TON Blockchain Library. + + TON Blockchain Library is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version. + + TON Blockchain Library 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 Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with TON Blockchain Library. If not, see . +*/ +#pragma once + +namespace td { + +bool ecrecover(const unsigned char* hash, const unsigned char* signature, unsigned char* public_key); + +} diff --git a/crypto/fift/lib/Asm.fif b/crypto/fift/lib/Asm.fif index 64b850096..d9cee5d83 100644 --- a/crypto/fift/lib/Asm.fif +++ b/crypto/fift/lib/Asm.fif @@ -32,6 +32,7 @@ false @was-split ! { 1 { or abort"invalid version" + dup dup 0 < swap 999 > or abort"invalid version" } cond } : parse-version-level diff --git a/crypto/fift/words.cpp b/crypto/fift/words.cpp index b5e6dbd69..56dd4de22 100644 --- a/crypto/fift/words.cpp +++ b/crypto/fift/words.cpp @@ -46,6 +46,7 @@ #include "vm/db/TonDb.h" // only for interpret_db_run_vm{,_parallel} #include "block/block.h" +#include "common/global-version.h" #include "td/utils/filesystem.h" #include "td/utils/misc.h" @@ -2658,13 +2659,15 @@ std::vector> get_vm_libraries() { // +128 = pop hard gas limit (enabled by ACCEPT) from stack as well // +256 = enable stack trace // +512 = enable debug instructions +// +1024 = load global_version from stack void interpret_run_vm(IntCtx& ctx, int mode) { if (mode < 0) { - mode = ctx.stack.pop_smallint_range(0x3ff); + mode = ctx.stack.pop_smallint_range(0x7ff); } bool with_data = mode & 4; Ref c7; Ref data, actions; + int global_version = (mode & 1024) ? ctx.stack.pop_smallint_range(ton::SUPPORTED_VERSION) : ton::SUPPORTED_VERSION; long long gas_max = (mode & 128) ? ctx.stack.pop_long_range(vm::GasLimits::infty) : vm::GasLimits::infty; long long gas_limit = (mode & 8) ? ctx.stack.pop_long_range(vm::GasLimits::infty) : vm::GasLimits::infty; if (!(mode & 128)) { @@ -2683,7 +2686,7 @@ void interpret_run_vm(IntCtx& ctx, int mode) { auto log = create_vm_log((mode & 64) && ctx.error_stream ? &ostream_logger : nullptr); vm::GasLimits gas{gas_limit, gas_max}; int res = vm::run_vm_code(cs, ctx.stack, (mode & 3) | ((mode & 0x300) >> 6), &data, log, nullptr, &gas, - get_vm_libraries(), std::move(c7), &actions); + get_vm_libraries(), std::move(c7), &actions, global_version); ctx.stack.push_smallint(res); if (with_data) { ctx.stack.push_cell(std::move(data)); diff --git a/crypto/keccak/keccak.cpp b/crypto/keccak/keccak.cpp new file mode 100644 index 000000000..aac48ddc4 --- /dev/null +++ b/crypto/keccak/keccak.cpp @@ -0,0 +1,473 @@ +/* + * An implementation of the SHA3 (Keccak) hash function family. + * + * Algorithm specifications: http://keccak.noekeon.org/ + * NIST Announcement: + * http://csrc.nist.gov/groups/ST/hash/sha-3/winner_sha-3.html + * + * Written in 2013 by Fabrizio Tarizzo + * + * =================================================================== + * The contents of this file are dedicated to the public domain. To + * the extent that dedication to the public domain is not available, + * everyone is granted a worldwide, perpetual, royalty-free, + * non-exclusive license to exercise all rights associated with the + * contents of this file for any purpose whatsoever. + * No rights are reserved. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * =================================================================== +*/ + +#include +#include +#include +#include + +#define KECCAK_F1600_STATE 200 +#define MIN(x, y) ((x) < (y) ? (x) : (y)) +#define MAX(x, y) ((x) < (y) ? (x) : (y)) + +/** Standard errors common to all ciphers **/ +#define ERR_NULL 1 +#define ERR_MEMORY 2 +#define ERR_NOT_ENOUGH_DATA 3 +#define ERR_ENCRYPT 4 +#define ERR_DECRYPT 5 +#define ERR_KEY_SIZE 6 +#define ERR_NONCE_SIZE 7 +#define ERR_NR_ROUNDS 8 +#define ERR_DIGEST_SIZE 9 +#define ERR_MAX_DATA 10 +#define ERR_MAX_OFFSET 11 +#define ERR_BLOCK_SIZE 12 +#define ERR_TAG_SIZE 13 +#define ERR_VALUE 14 +#define ERR_EC_POINT 15 +#define ERR_EC_CURVE 16 +#define ERR_MODULUS 17 +#define ERR_UNKNOWN 32 + +typedef struct +{ + uint64_t state[25]; + + /* The buffer is as long as the state, + * but only 'rate' bytes will be used. + */ + uint8_t buf[KECCAK_F1600_STATE]; + + /* When absorbing, this is the number of bytes in buf that + * are coming from the message and outstanding. + * When squeezing, this is the remaining number of bytes + * that can be used as digest. + */ + unsigned valid_bytes; + + /* All values in bytes */ + unsigned capacity; + unsigned rate; + + uint8_t squeezing; + uint8_t rounds; +} keccak_state; + +#undef ROL64 +#define ROL64(x,y) ((((x) << (y)) | (x) >> (64-(y))) & 0xFFFFFFFFFFFFFFFFULL) + +static void keccak_function (uint64_t *state, unsigned rounds); + +int keccak_reset(keccak_state *state) +{ + if (NULL == state) + return ERR_NULL; + + memset(state->state, 0, sizeof(state->state)); + memset(state->buf, 0, sizeof(state->buf)); + state->valid_bytes = 0; + state->squeezing = 0; + + return 0; +} + +static void keccak_absorb_internal (keccak_state *self) +{ + unsigned i,j; + uint64_t d; + + for (i=j=0; j < self->rate; ++i, j += 8) { + d = *(const uint64_t*)(self->buf + j); + self->state[i] ^= d; + } +} + +static void +keccak_squeeze_internal (keccak_state *self) +{ + unsigned i, j; + + for (i=j=0; j < self->rate; ++i, j += 8) { + *(uint64_t*)(self->buf+j) = self->state[i]; + } +} + +int keccak_init (keccak_state **state, + size_t capacity_bytes, + uint8_t rounds) +{ + keccak_state *ks; + + if (NULL == state) { + return ERR_NULL; + } + + *state = ks = (keccak_state*) calloc(1, sizeof(keccak_state)); + if (NULL == ks) + return ERR_MEMORY; + + if (capacity_bytes >= KECCAK_F1600_STATE) + return ERR_DIGEST_SIZE; + + if ((rounds != 12) && (rounds != 24)) + return ERR_NR_ROUNDS; + + ks->capacity = (unsigned)capacity_bytes; + + ks->rate = KECCAK_F1600_STATE - ks->capacity; + + ks->squeezing = 0; + ks->rounds = rounds; + + return 0; +} + +int keccak_destroy(keccak_state *state) +{ + free(state); + return 0; +} + +int keccak_absorb (keccak_state *self, + const uint8_t *in, + size_t length) +{ + if (NULL==self || NULL==in) + return ERR_NULL; + + if (self->squeezing != 0) + return ERR_UNKNOWN; + + while (length > 0) { + unsigned tc; + unsigned left; + + left = self->rate - self->valid_bytes; + tc = (unsigned) MIN(length, left); + memcpy(self->buf + self->valid_bytes, in, tc); + + self->valid_bytes += tc; + in += tc; + length -= tc; + + if (self->valid_bytes == self->rate) { + keccak_absorb_internal (self); + keccak_function(self->state, self->rounds); + self->valid_bytes = 0; + } + } + + return 0; +} + +static void keccak_finish (keccak_state *self, uint8_t padding) +{ + assert(self->squeezing == 0); + assert(self->valid_bytes < self->rate); + + /* Padding */ + memset(self->buf + self->valid_bytes, 0, self->rate - self->valid_bytes); + self->buf[self->valid_bytes] = padding; + self->buf[self->rate-1] |= 0x80; + + /* Final absorb */ + keccak_absorb_internal (self); + keccak_function (self->state, self->rounds); + + /* First squeeze */ + self->squeezing = 1; + keccak_squeeze_internal (self); + self->valid_bytes = self->rate; +} + +int keccak_squeeze (keccak_state *self, uint8_t *out, size_t length, uint8_t padding) +{ + if ((NULL == self) || (NULL == out)) + return ERR_NULL; + + if (self->squeezing == 0) { + keccak_finish (self, padding); + } + + assert(self->squeezing == 1); + assert(self->valid_bytes > 0); + assert(self->valid_bytes <= self->rate); + + while (length > 0) { + unsigned tc; + + tc = (unsigned)MIN(self->valid_bytes, length); + memcpy(out, self->buf + (self->rate - self->valid_bytes), tc); + + self->valid_bytes -= tc; + out += tc; + length -= tc; + + if (self->valid_bytes == 0) { + keccak_function (self->state, self->rounds); + keccak_squeeze_internal (self); + self->valid_bytes = self->rate; + } + } + + return 0; +} + +int keccak_digest(keccak_state *state, uint8_t *digest, size_t len, uint8_t padding) +{ + keccak_state tmp; + + if ((NULL==state) || (NULL==digest)) + return ERR_NULL; + + if (2*len != state->capacity) + return ERR_UNKNOWN; + + tmp = *state; + return keccak_squeeze(&tmp, digest, len, padding); +} + +int keccak_copy(const keccak_state *src, keccak_state *dst) +{ + if (NULL == src || NULL == dst) { + return ERR_NULL; + } + + *dst = *src; + return 0; +} + +/* Keccak core function */ + +#define KECCAK_ROUNDS 24 + +#define ROT_01 36 +#define ROT_02 3 +#define ROT_03 41 +#define ROT_04 18 +#define ROT_05 1 +#define ROT_06 44 +#define ROT_07 10 +#define ROT_08 45 +#define ROT_09 2 +#define ROT_10 62 +#define ROT_11 6 +#define ROT_12 43 +#define ROT_13 15 +#define ROT_14 61 +#define ROT_15 28 +#define ROT_16 55 +#define ROT_17 25 +#define ROT_18 21 +#define ROT_19 56 +#define ROT_20 27 +#define ROT_21 20 +#define ROT_22 39 +#define ROT_23 8 +#define ROT_24 14 + +static const uint64_t roundconstants[KECCAK_ROUNDS] = { + 0x0000000000000001ULL, + 0x0000000000008082ULL, + 0x800000000000808aULL, + 0x8000000080008000ULL, + 0x000000000000808bULL, + 0x0000000080000001ULL, + 0x8000000080008081ULL, + 0x8000000000008009ULL, + 0x000000000000008aULL, + 0x0000000000000088ULL, + 0x0000000080008009ULL, + 0x000000008000000aULL, + 0x000000008000808bULL, + 0x800000000000008bULL, + 0x8000000000008089ULL, + 0x8000000000008003ULL, + 0x8000000000008002ULL, + 0x8000000000000080ULL, + 0x000000000000800aULL, + 0x800000008000000aULL, + 0x8000000080008081ULL, + 0x8000000000008080ULL, + 0x0000000080000001ULL, + 0x8000000080008008ULL +}; + +static void keccak_function (uint64_t *state, unsigned rounds) +{ + unsigned i; + unsigned start_round; + + /* Temporary variables to avoid indexing overhead */ + uint64_t a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12; + uint64_t a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24; + + uint64_t b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12; + uint64_t b13, b14, b15, b16, b17, b18, b19, b20, b21, b22, b23, b24; + + uint64_t c0, c1, c2, c3, c4, d; + + a0 = state[0]; + a1 = state[1]; + a2 = state[2]; + a3 = state[3]; + a4 = state[4]; + a5 = state[5]; + a6 = state[6]; + a7 = state[7]; + a8 = state[8]; + a9 = state[9]; + a10 = state[10]; + a11 = state[11]; + a12 = state[12]; + a13 = state[13]; + a14 = state[14]; + a15 = state[15]; + a16 = state[16]; + a17 = state[17]; + a18 = state[18]; + a19 = state[19]; + a20 = state[20]; + a21 = state[21]; + a22 = state[22]; + a23 = state[23]; + a24 = state[24]; + + if (rounds == 24) + start_round = 0; + else /* rounds == 12 */ + start_round = 12; + + for (i = start_round; i < KECCAK_ROUNDS; ++i) { + /* + Uses temporary variables and loop unrolling to + avoid array indexing and inner loops overhead + */ + + /* Prepare column parity for Theta step */ + c0 = a0 ^ a5 ^ a10 ^ a15 ^ a20; + c1 = a1 ^ a6 ^ a11 ^ a16 ^ a21; + c2 = a2 ^ a7 ^ a12 ^ a17 ^ a22; + c3 = a3 ^ a8 ^ a13 ^ a18 ^ a23; + c4 = a4 ^ a9 ^ a14 ^ a19 ^ a24; + + /* Theta + Rho + Pi steps */ + d = c4 ^ ROL64(c1, 1); + b0 = d ^ a0; + b16 = ROL64(d ^ a5, ROT_01); + b7 = ROL64(d ^ a10, ROT_02); + b23 = ROL64(d ^ a15, ROT_03); + b14 = ROL64(d ^ a20, ROT_04); + + d = c0 ^ ROL64(c2, 1); + b10 = ROL64(d ^ a1, ROT_05); + b1 = ROL64(d ^ a6, ROT_06); + b17 = ROL64(d ^ a11, ROT_07); + b8 = ROL64(d ^ a16, ROT_08); + b24 = ROL64(d ^ a21, ROT_09); + + d = c1 ^ ROL64(c3, 1); + b20 = ROL64(d ^ a2, ROT_10); + b11 = ROL64(d ^ a7, ROT_11); + b2 = ROL64(d ^ a12, ROT_12); + b18 = ROL64(d ^ a17, ROT_13); + b9 = ROL64(d ^ a22, ROT_14); + + d = c2 ^ ROL64(c4, 1); + b5 = ROL64(d ^ a3, ROT_15); + b21 = ROL64(d ^ a8, ROT_16); + b12 = ROL64(d ^ a13, ROT_17); + b3 = ROL64(d ^ a18, ROT_18); + b19 = ROL64(d ^ a23, ROT_19); + + d = c3 ^ ROL64(c0, 1); + b15 = ROL64(d ^ a4, ROT_20); + b6 = ROL64(d ^ a9, ROT_21); + b22 = ROL64(d ^ a14, ROT_22); + b13 = ROL64(d ^ a19, ROT_23); + b4 = ROL64(d ^ a24, ROT_24); + + /* Chi + Iota steps */ + a0 = b0 ^ (~b1 & b2) ^ roundconstants[i]; + a1 = b1 ^ (~b2 & b3); + a2 = b2 ^ (~b3 & b4); + a3 = b3 ^ (~b4 & b0); + a4 = b4 ^ (~b0 & b1); + + a5 = b5 ^ (~b6 & b7); + a6 = b6 ^ (~b7 & b8); + a7 = b7 ^ (~b8 & b9); + a8 = b8 ^ (~b9 & b5); + a9 = b9 ^ (~b5 & b6); + + a10 = b10 ^ (~b11 & b12); + a11 = b11 ^ (~b12 & b13); + a12 = b12 ^ (~b13 & b14); + a13 = b13 ^ (~b14 & b10); + a14 = b14 ^ (~b10 & b11); + + a15 = b15 ^ (~b16 & b17); + a16 = b16 ^ (~b17 & b18); + a17 = b17 ^ (~b18 & b19); + a18 = b18 ^ (~b19 & b15); + a19 = b19 ^ (~b15 & b16); + + a20 = b20 ^ (~b21 & b22); + a21 = b21 ^ (~b22 & b23); + a22 = b22 ^ (~b23 & b24); + a23 = b23 ^ (~b24 & b20); + a24 = b24 ^ (~b20 & b21); + } + + state[0] = a0; + state[1] = a1; + state[2] = a2; + state[3] = a3; + state[4] = a4; + state[5] = a5; + state[6] = a6; + state[7] = a7; + state[8] = a8; + state[9] = a9; + state[10] = a10; + state[11] = a11; + state[12] = a12; + state[13] = a13; + state[14] = a14; + state[15] = a15; + state[16] = a16; + state[17] = a17; + state[18] = a18; + state[19] = a19; + state[20] = a20; + state[21] = a21; + state[22] = a22; + state[23] = a23; + state[24] = a24; +} diff --git a/crypto/keccak/keccak.h b/crypto/keccak/keccak.h new file mode 100644 index 000000000..28fa66fb1 --- /dev/null +++ b/crypto/keccak/keccak.h @@ -0,0 +1,41 @@ +/* + * An implementation of the SHA3 (Keccak) hash function family. + * + * Algorithm specifications: http://keccak.noekeon.org/ + * NIST Announcement: + * http://csrc.nist.gov/groups/ST/hash/sha-3/winner_sha-3.html + * + * Written in 2013 by Fabrizio Tarizzo + * + * =================================================================== + * The contents of this file are dedicated to the public domain. To + * the extent that dedication to the public domain is not available, + * everyone is granted a worldwide, perpetual, royalty-free, + * non-exclusive license to exercise all rights associated with the + * contents of this file for any purpose whatsoever. + * No rights are reserved. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * =================================================================== +*/ + +#pragma once +#include +#include + +struct keccak_state; + +int keccak_reset(keccak_state *state); +int keccak_init(keccak_state **state, size_t capacity_bytes, uint8_t rounds); +int keccak_destroy(keccak_state *state); +int keccak_absorb(keccak_state *self, const uint8_t *in, size_t length); +int keccak_squeeze(keccak_state *self, uint8_t *out, size_t length, uint8_t padding); +int keccak_digest(keccak_state *state, uint8_t *digest, size_t len, uint8_t padding); +int keccak_copy(const keccak_state *src, keccak_state *dst); diff --git a/crypto/test/fift.cpp b/crypto/test/fift.cpp index 098c5561d..049507fdf 100644 --- a/crypto/test/fift.cpp +++ b/crypto/test/fift.cpp @@ -33,9 +33,14 @@ std::string load_test(std::string name) { return td::read_file_str(current_dir() + "fift/" + name).move_as_ok(); } -td::Status run_fift(std::string name, bool preload_fift = true) { - TRY_RESULT(res, fift::mem_run_fift(load_test(name))); - REGRESSION_VERIFY(res.output); +td::Status run_fift(std::string name, bool expect_error = false, bool preload_fift = true) { + auto res = fift::mem_run_fift(load_test(name)); + if (expect_error) { + res.ensure_error(); + return td::Status::OK(); + } + res.ensure(); + REGRESSION_VERIFY(res.ok().output); return td::Status::OK(); } @@ -79,7 +84,7 @@ TEST(Fift, testvmprog) { run_fift("testvmprog.fif"); } TEST(Fift, bug) { - run_fift("bug.fif"); + run_fift("bug.fif", true); } TEST(Fift, contfrac) { run_fift("contfrac.fif"); @@ -130,3 +135,31 @@ TEST(Fift, test_namespaces) { TEST(Fift, test_asm_nested_program) { run_fift("asm-nested-program.fif"); } + +TEST(Fift, test_adddiv) { + run_fift("adddiv.fif"); +} + +TEST(Fift, test_tvm_runvm) { + run_fift("tvm_runvm.fif"); +} + +TEST(Fift, test_hash_ext) { + run_fift("hash_ext.fif"); +} + +TEST(Fift, test_deep_stack_ops) { + run_fift("deep_stack_ops.fif"); +} + +TEST(Fift, test_rist255) { + run_fift("rist255.fif"); +} + +TEST(Fift, test_bls) { + run_fift("bls.fif"); +} + +TEST(Fift, test_bls_ops) { + run_fift("bls_ops.fif"); +} diff --git a/crypto/test/fift/adddiv.fif b/crypto/test/fift/adddiv.fif new file mode 100644 index 000000000..96be65259 --- /dev/null +++ b/crypto/test/fift/adddiv.fif @@ -0,0 +1,144 @@ +{ + =: ans-r =: ans-q =: mode + =: z =: w =: y =: x + ."MULADDDIVMOD " @' x . @' y . @' w . @' z . @' mode . ."= " @' ans-q . @' ans-r . cr + @' x @' y @' w @' z + abort"Incorrect r" + @' ans-q <> abort"Incorrect q" +} : test-muladddivmod + +{ + =: ans-r =: ans-q =: mode + =: y =: w =: x + ."ADDDIVMOD " @' x . @' w . @' y . @' mode . ."= " @' ans-q . @' ans-r . cr + @' x @' w @' y + abort"Incorrect r" + @' ans-q <> abort"Incorrect q" +} : test-adddivmod + +{ + =: ans-r =: ans-q =: mode + =: z =: w =: y =: x + ."SHLADDDIVMOD " @' x . @' y . @' w . @' z . @' mode . ."= " @' ans-q . @' ans-r . cr + @' x @' w @' z @' y + abort"Incorrect r" + @' ans-q <> abort"Incorrect q" +} : test-shladddivmod + +{ + =: ans-r =: ans-q =: mode + =: z =: w =: y =: x + ."MULADDSHRMOD " @' x . @' y . @' w . @' z . @' mode . ."= " @' ans-q . @' ans-r . cr + @' x @' y @' w @' z + abort"Incorrect r" + @' ans-q <> abort"Incorrect q" +} : test-muladdshrmod + +729 -212 552 0 0 517 test-adddivmod +823 -139 -918 1 -1 -234 test-adddivmod +-470 977 47 2 11 -10 test-adddivmod +-5 -171 880 0 -1 704 test-adddivmod +605 699 -379 1 -3 167 test-adddivmod +982 -24 -267 2 -3 157 test-adddivmod +194 826 859 0 1 161 test-adddivmod +-553 33 -715 1 1 195 test-adddivmod +-423 -714 547 2 -2 -43 test-adddivmod +-806 266 637 0 -1 97 test-adddivmod +-487 863 90 1 4 16 test-adddivmod +444 659 232 2 5 -57 test-adddivmod +847 -700 -365 -798 0 743 -351 test-muladddivmod +494 -849 840 741 1 -565 99 test-muladddivmod +400 -324 -34 146 2 -887 -132 test-muladddivmod +-794 -276 -111 -353 0 -621 -180 test-muladddivmod +251 311 869 -582 1 -136 -222 test-muladddivmod +979 131 -24 -94 2 -1364 9 test-muladddivmod +772 67 -467 -873 0 -59 -250 test-muladddivmod +648 881 123 875 1 653 -364 test-muladddivmod +-972 -809 473 720 2 1093 -139 test-muladddivmod +-184 454 689 607 0 -137 312 test-muladddivmod +368 280 -998 253 1 403 83 test-muladddivmod +10 695 776 -318 2 -24 94 test-muladddivmod +-501 5 441 782 0 -20 49 test-shladddivmod +-872 3 878 162 1 -38 58 test-shladddivmod +-546 3 645 981 2 -3 -780 test-shladddivmod +-709 8 -83 -814 0 223 -65 test-shladddivmod +-836 5 792 40 1 -649 0 test-shladddivmod +910 7 -777 -383 2 -302 37 test-shladddivmod +128 4 447 -745 0 -4 -485 test-shladddivmod +121 5 668 888 1 5 100 test-shladddivmod +106 3 973 637 2 3 -90 test-shladddivmod +235 8 203 -411 0 -147 -54 test-shladddivmod +-89 1 221 634 1 0 43 test-shladddivmod +-212 5 178 -505 2 14 464 test-shladddivmod +-406 -624 -613 2 0 63182 3 test-muladdshrmod +-933 254 344 4 1 -14790 2 test-muladdshrmod +-25 -859 -817 10 2 21 -846 test-muladdshrmod +551 -734 795 2 0 -100910 1 test-muladdshrmod +891 -921 725 1 1 -409943 0 test-muladdshrmod +839 432 890 8 2 1420 -182 test-muladdshrmod +399 -199 715 8 0 -308 162 test-muladdshrmod +-436 68 662 3 1 -3623 -2 test-muladdshrmod +739 -560 833 10 2 -403 -335 test-muladdshrmod +207 690 945 6 0 2246 31 test-muladdshrmod +187 -437 -78 7 1 -639 -5 test-muladdshrmod +352 313 434 5 2 3457 -14 test-muladdshrmod +25527586395537789869570741399081402682256851060036756777914400562788085574414 -25113160904436633803354228324572450480033217030010944063278205598870671865288 -2256017777568044393040721989849804550406163786581604155567013427587080747425 0 -1 -1841592286466888326824208915340852348182529756555791440930818463669667038299 test-adddivmod +-32640246231411323106115073889225624429888478001529402430751550293198007894765 -37905632746827282747258884343685092209247121139851002852469398603088743361022 18753000550171967665955942657615296985943924316121913951069685581208211144632 1 -4 4466123222449264810449812397550471304640098123107250521057793428546093322741 test-adddivmod +-95549375212741069607980980863332591640631650412403896229315709698307081396373 106240530356563762252550465652293166037855203388135409179201250774369290711413 63027891874179850739525204890840444316414650119364284762072976150516424705738 2 1 -52336736730357158094955720101879869919191097143632771812187435074454215390698 test-adddivmod +51890526097631236478215460328003213527162540175278758108042092328342498521783 19183851048961131310064308531261717471288729454763519442604661504489273629484 37741726035775552009535280639145255965240492091225040562231509956705484553131 0 1 33332651110816815778744488220119675033210777538817236988415243876126287598136 test-adddivmod +94071222795948162024492074951491627130123473883831806178173544936543536671735 -79181277644495598779765208777007083667700785694819686730856530041854640922750 101162201634522410327363362416275476419529310370084833033537453927088908146625 1 0 14889945151452563244726866174484543462422688189012119447317014894688895748985 test-adddivmod +106849434942283600005926697698751951080751408318517871682753577855332568068854 -24045207490958235002714107597178464324559754040415520751984110097220649552695 74679027778960833059271215597415768445807741415021004423546293120031915119911 2 2 -66553828106596301115329841093258050135423828551939657916323118481951911723663 test-adddivmod +-111083603622141356205460042548478779196244111142279948844255415507465496179136 75885719295648796212066209648237285368659643103523469813991536525258102456646 17487288729375302809394363552184340106515810164188804948959885094558256876961 0 -3 17263981861633348434789257756311526491962962453809935816615776301467376908393 test-adddivmod +33525382765608498977714984645580937896464574678957613892455278004374765395791 -31203451453013366071092485074296252911543265223612191519873428434459391093162 8205361318951100784724737477089194897616580930791932431609075219761273143789 1 0 2321931312595132906622499571284684984921309455345422372581849569915374302629 test-adddivmod +-75999952514508567055051892339604431790575024284443576993806836353012574839934 60096525995012658905135417908615298741753181036991250015243181812480959008245 25156241733999421479698222967097698882671132665627779117308277826680836574301 2 0 -15903426519495908149916474430989133048821843247452326978563654540531615831689 test-adddivmod +-25810038415830521876908334245348683093953748145428320530928049623042163542952 13768870762468614895982523795103333718119339794093637483718383357794846902545 -23455630873759864343226329762160671724884569294252944494055101268304334927469 0 0 -12041167653361906980925810450245349375834408351334683047209666265247316640407 test-adddivmod +65295636229319469142829758722387755590067603179313024098599396192036031682932 -14508864012052681942310481748034005897814022127985455644382059031122725256639 101258243423658080118042170583591218535452530372858366205652259477702813508611 1 1 -50471471206391292917522893609237468843198949321530797751434922316789507082318 test-adddivmod +-9782778804673764937901196234199348720011483228792837975519798751976472498576 97723276666278794523978327321824380269179391405498018632142147588187660001006 -49342195947431856333198825767811410708861002865285674269877261690183407963360 2 -1 38598301914173173252878305319813620840306905311419506386745087146027779539070 test-adddivmod +69314796062889467182180663903322273169679119368960545268948720263471816924632 93795938161576335898249305761803240528541213785951419531969609595386829401314 -110346049538998400484346689828188917177083570083289016450597131164930681126587 81149113889296322255375738811288869158926250513403232273765830197055460701260 0 80117280566567035416625919712742621817262121093084845174084285957987697395276 42036691045037437094861959671408390901385540330966807308270651575596167392101 test-muladddivmod +-21971450167728355573106502799062118429867408154846289128369107182511643511483 45393555019045493054213057422940072801743824102220594624535868754509418047929 60641652588698494073802822494164156953515858330346793601084497228687965671868 65539824510463171124453489789915597533293103308691110446148835625201340366598 1 -15217651854984270515658273738098718647212153016787679186857576358263739302058 -29371413441460037863394670149687230435838766165616129771684695789862414338155 test-muladddivmod +73634008615213489758113683559933051942050608504790565710917645985405082665491 -80155625965090770138821073870266428949137773405175831429923552413761952441361 -38999294453130493506999209141746004309873017414282530140731810289885759492802 -107314816556101242244916895079818037889329087681097150645968648449136338086659 2 54998743344874712983373052080844956119323047070936199528619384334263523872368 13082689556615721830015990667012489975468766353417550442844496303849124272459 test-muladddivmod +68441985454806782074858763992903374541757416422223520705458179994903492447753 -61267036145362164840470993649039311748277914273628051012777836672446118682406 88886725386626308975645991554561163959863903429407091061340939714760192334434 -55192455525382179382269200386360902483303866088141254649003462525396159498006 0 75974833096374772090455746107157391488128832802648627140447901963962285642644 -35281244576421605907379124849976697589234314365299818483123805214351816431420 test-muladddivmod +13991345100229597325861930387540671073560101799369013558248988792137436010794 32261366615236683296917985913895811707233003589900325435836147185374329094359 -35081305217709330815376010427375742966580511272499524644418734096933080609103 34617350357576952655827361801899194862477556493235499468927833026852355915741 1 13039123706936329824826187692520278079826111394035475962656812793878481550617 15501972367754182150585081456806290271752173495030969288120604381172009339746 test-muladddivmod +54599312873997957959553141264956574941720752239162126863069720527738322459321 743784849758283770307843473486531088082399957077059004634332280604041992918 -82452755014987554458459818028526388807440160648566275282022897198718871469325 38291925157759929750140152840087355208836284729075633154257868030142639468974 2 1060540611514863450709563259060420401132951143137987621813620016383521959845 -25576601802989288764264589884413515994814497538433618559906725414501597729677 test-muladddivmod +-33715442018098691670021742265266162391174212035380017502572244718418822715623 104887034421874269674272525533704680767916752281317133765280341780898862714955 40882837978738774675184345709913504579827188391303805465905655071457659357026 56761521466376613401789060160037629513193949115508135629309104361041554577464 0 -62301232175317956930653590924038385722281926697603233811485244969539670459488 12675521639977150682490928392886170001456429479565150104484728889568554893493 test-muladddivmod +-109706830967107194245468623157302140481713559442721649770259230494532080435232 91091244832469326414116901981654442590329304825709696121493056753007506269108 25586919878947735367325917367337541421822321271842417480093738776553133015696 92030412800134708014057990497075561862656985932946512327644864855223778050176 1 -108587275612051383813143325045450855254642049763863834262763340362417287376196 14236417728543624555544633487823994857557292455110879135165049494799852613136 test-muladddivmod +-55349740795363582739414701155082958898639391946026926848599395086577482106561 5153084015148055450516513461735201914781593572521892141092888805185704024388 -65052157988798026904166625513790079385321361518951356077015576483034859919945 -102114306233907646655227677599549837347948442788318424043410967802211179284463 2 2793162633665004752332533372431053166813934025727573730237936408503456830715 70263858264069476764017250048942592796103230166090146586104085945931001951432 test-muladddivmod +-39413219476407785933419341321985162122574957075787517059529471719124009278433 -11397560582871643424486223364245599528148517163558642929375020427946855266926 72776685568498650781344357948907544676236244067805626443550533574512635929751 58457602475162312341105487265860863804074002837155658624106642883511552164475 0 7684450571493046035065075993797738633610800975055222799851151005079197271998 25447845742266018765952184307141986304437190746678223193451015171399298065659 test-muladddivmod +28902743859707224532426872535592986589584185136999529704427764834614586536146 30118285526375438691436500554083725474584606124188443987423181314058619658259 -112947693515558587819874917596387701093051538659457576158697245759111287251112 -20731780512952622217494754630018335482763668682808767673633845662171371751908 1 -41988727958917592867685340883133510770733630298849576855386410060863664014757 6354934151364300917311007564393521634968794138377927567288802927545928772346 test-muladddivmod +25071799008788838242365403068059094326298333378650328613993357620568407227394 -27895932377486960662691379394722126815225783254727720878708826335618109428175 -34783759350459778495483474263506062490621190762057336926096642777973708891199 -46562500545170684944465306233470472124382229989733955650634447552911654749066 2 15020696945874349483297599474537626462120625640258473403957682700588115661859 6123529058588613987393724235023234231421775050193606259696039938834907756545 test-muladddivmod +4637334961015630956409530377119128659169399268652032534941609159910059786532 174 -12797497544848087213503981396389428116533825336325463794725594822879690679136 93018556588730187003792638630891717650672350374200759319903911998812002342061 0 1193763005785115313715849486131901382204829468191839 86009298512437248420661887032254663876544001080814196765583913598468234097773 test-shladddivmod +63737576485202419511398757422488387344373087691300709744039454443359600742212 17 4434935617055335860270673726237887676208015615002198868506400573861444556411 2395017004775767547761160570739886212190100215618999647636254869255450984262 1 3488166 -825476601398469938219841341785340947550825081895127156723070705988041475817 test-shladddivmod +-21264162232365890547240808872203618534857207092355857230053229357857057625546 79 83558436280879393517752968647441646810997015153366115449062116401734553793990 -19667935035506461778339921177556508690003173951785474262950610395510252887673 2 653520430812207296424074 11997579569142787892139960093229284888868038054542931791709721193377458047744 test-shladddivmod +50327589756875372367121062573124726147569135695110368165104387616199145495643 159 -56582804136162261915738821952650758787670281453734279574878610404888378091325 41794171917267054297819695791653745099726306264896745093211576006595621865899 0 879953489426631344181134857312933722690648995542 7479251035838043422275284357505479089411783830647758441772426265279908213201 test-shladddivmod +-6790346796221361248085433832482913268295667476610056123099942839800062619360 99 -30655005682505720678929136056715874580886440550632733046480550204329894400037 107280989788626394506897862107199815360330755655673306259970134464147378777352 1 -40117951973353319220033820651 15419963034230519057842831193590832882628829971176441336761525930488437456435 test-shladddivmod +19046177038646178344769825269053799430308794840550024608332777213474587282651 33 3489319764096497921939317127917520109408688444737580375038679679318170964558 32230702261963164880326384192551720153568540700317784363615498612027586166919 2 5076073543 -31149228513135397726284948367312236333921327766221169520773046236565040396067 test-shladddivmod +-110976730374012300153801377038320854184737548404302035494280064993634691387718 177 62599745911697906087525399889373248851994389233059198427444302208529620264342 2939901734097150061182352721440114362417026502565316012346244994332394908737 0 -7231166201303287776306953132498157445481985675557698778 861631401006029279966827198914714166628754059441816200263218068486981128432 test-shladddivmod +31852390609689123349381354058350609996064615917952716537339963695989162024629 72 -96928192014181974842953135946922776102933173463512906699090906721752057028243 92656901870085089608820151790239083253300815942245860126341275046871599043017 1 1623394035183378246274 -40717467475217300542569194922405492138512784779596821986363220696851482878117 test-shladddivmod +108325270025037161417115474167849009240382377052459846115851642255437288685912 79 -47995506721499545563379889382854078032364619862028413664240909132079634758006 -6166659869789359796343211847537623762770094929722294841335533066616771405539 2 -10618164339787666672859802 2975209691732235673066443530343246725711182217991112340969803628522007294972 test-shladddivmod +-102030576317847732070693755030275793160072651528715762716678938494538431797856 162 92259248995288252713115460931891173987977282785918620735892298001910599707421 93069691103831234597581468228357432179178680731051507965844021657079407259554 0 -6408868561946334361312419431284710070541388837754 30090871674656727061174631170248864679275378922263881716308993939778213471313 test-shladddivmod +109919709354382523017092140618288318375226272062645130510340454988137017880658 32 11403889262848182921779993946145880893942415285082669079885795084154364295755 -35203479084324376157414643218816253627488669490337878341936871887579427112193 1 -13410650571 -9079152369425295070217928786983170793628233088577531145426537161436231255680 test-shladddivmod +32604320264365535336905506430047200856461747148561589244458238442999859570507 87 53600018835628474925583604580250089573381703851509998750334950185805444447855 -13714304553912094478086374486990066534941196173664347737943079140839510240 2 -367884070882655630785891877843 6730574288892465511219887918570728429135366732586091870751580223301793231 test-shladddivmod +-6528863440223970638249234714151581865561638514865295384371332680662061970029 -36913540142944821177073496030226577063991271774591429797367434456256316959902 24604605953723174243828240349210337384146509969508816161702610762299708087414 252 0 33301544418230523796798136129325191903276669555089137976430642606666380785097 1111119448521463468919386205636226935698167866010067725789944817681239062460 test-muladdshrmod +-84914121307006819861534520354024886732959304976576667909765018675779753895095 -33734797430686302202051663614563177864696792935288850099657207932669766616337 -102660654939881416004941779328139233368526378948134839417440263136258000263276 254 1 98955315519894417210680117251614014274294848178227094975298724352068617948436 11185753669896509258573194177216136324346588911755615485008785003988287318715 test-muladdshrmod +-4756805439354914657157062146720760601779363897648559488036119230046473414258 -25205069919224711211607424233708613506619570034044466450241534811277675992336 65841615838405859557610720340525261800430556950418299394523533586361728325556 253 2 8283509830821873572245889567787981786085701113981069889850529960221182899414 -8998763596547876718672658010959335659555767305449508909489610444294401222444 test-muladdshrmod +783982375644419567722751049236700086045042736024464491262223120876229442273 5175287637281731481295785519248883235846260036385254885568602894849814368811 -55298781556612762404255558682268367199188235546843731267393108383385576323488 255 0 70079645738212902632136650950755273036821422652512833810215828489102796342 57092783249763565645949150057908892679575599568561392603234275558727880866859 test-muladdshrmod +4070111884734287416608979312653292787122202104172152519474989991166732734990 34257747897608142079436828950758942168797726684869935923750014522979867949066 -61460807674782162344337010795962912420813084141671620888972984019328919535019 255 1 2408331480685488199417578349126812242697171581435356157803139449785540375610 -22381063802952741956988549732332921247382434293458568395759850191487471696159 test-muladdshrmod +46624156993487206784214341981008205045812193232799951047364876541247557155655 -63729769095463769066210525784474878773448422698647046890735133366216202823024 87326180659880540224448931705993651721770461620305276267209594753354088752298 254 2 -102644205801514086102164756532696646475956724447744150113359070359995022772818 -1428092989561848018204511966860198528552911262896258786227284617693530033510 test-muladdshrmod +39272829609755756484322638781158254787641099751271808569134728682168699365109 -11052442053174551837010800294891429615750956891563661801761360982769602119895 -283548082261175812447439483712866143310217576711284967538745642449188994625 253 0 -29988969117668461072095834210490978680262152778767346814972545689246419413980 2174529687955394421606608137904112203633356592266557030912275482323503849980 test-muladdshrmod +-6634646688578172858373436607694752472569893432402323211016655704885763912303 -50615746987061510852137844454230120888792101396398105566610972957006661885326 39885934214260485879330356646246293765018634098614146427190880259955614376279 255 1 5800354762566883489975672198380697469946049260633808174115670550957411425502 -28109144677804577765510965536534358513109159026887377398047363431999553081879 test-muladdshrmod +36957305118458084509865949238755863689212814576372103672502961803454095738285 -17426859900126562814159340928393951526114707618474312299911007064028697482925 61889497203091392721847485067819343116261217894188379032096092268147391639006 252 2 -88993959131783882197769064733391828196442843554551869076190294411733289296212 -933414186558473122333257942263787394321322401897335201713504555165014099467 test-muladdshrmod +72799360004808200591693183601526367934146450159257557514619233204077568035423 -43259113456489928181943264810324365449524922073847088046666461901052175252848 -20928308093701346202205365707157304905304946151034389446852806842785919722024 255 0 -54394661928130271541114188703398383016925401302362215366329066394036243394378 29938721175889548572374867166785136077053268439086595306734647725317227983176 test-muladdshrmod +92302382053431541957491748846080777012291600699830575887072283670295321137177 69013668157296288202299005784733240169135155398176346313070175201757132886117 89824190356716673951870631561712249743053597592009107233443818823508120467661 255 1 110026963104671419264446752630572096381373731021551359794924308423043643793015 -23908158790588303139174012402649398780932740824917520006353845804429534584150 test-muladdshrmod +19094862392572944474897897922146461521059803020953497046241755599584285859217 -9623105143646767554719516123478862168481718581670270810378662760058752527692 34811921737822512587681133088401450937187249507755006187477956368554274579224 255 2 -3173824217483389220453883003236448477412384215802980550708734379368313500289 -51434014928851488423168753814799098916141626164449965549730115348405330387188 test-muladdshrmod \ No newline at end of file diff --git a/crypto/test/fift/bls.fif b/crypto/test/fift/bls.fif new file mode 100644 index 000000000..ca9a9d376 --- /dev/null +++ b/crypto/test/fift/bls.fif @@ -0,0 +1,954 @@ +// Based on https://github.com/ethereum/bls12-381-tests +"Asm.fif" include +"FiftExt.fif" include + +{ shash swap shash B= } : slices-eq? + +{ + =: expected-result + // ."Args: " .s + [[ <{ BLS_VERIFY }>s ]] 0 runvmx + abort"exitcode != 0" + ."Result: " dup . cr + ."Expected: " @' expected-result dup . cr cr + <> abort"wrong answer" +} : test-verify // pub msg signature exprected-result + +{ + =: expected-result + // ."Args: " .s + [[ <{ BLS_AGGREGATE }>s ]] 0 runvmx + { drop x{} } if + ."Result: " dup csr. + ."Expected: " @' expected-result dup csr. cr + slices-eq? not abort"wrong answer" +} : test-aggregate // sig[1] ... sig[n] n expected-result + +{ + =: expected-result + // ."Args: " .s + [[ <{ BLS_FASTAGGREGATEVERIFY }>s ]] 0 runvmx + abort"exitcode != 0" + ."Result: " dup . cr + ."Expected: " @' expected-result dup . cr cr + <> abort"wrong answer" +} : test-fast-aggregate-verify // pub[1] ... pub[n] n msg signature exprected-result + +{ + =: expected-result + // ."Args: " .s + [[ <{ BLS_AGGREGATEVERIFY }>s ]] 0 runvmx + abort"exitcode != 0" + ."Result: " dup . cr + ."Expected: " @' expected-result dup . cr cr + <> abort"wrong answer" +} : test-aggregate-verify // pub[1] msg[1] ... pub[n] msg[n] n signature exprected-result + +."Test verifycase_one_privkey_47117849458281be" cr +x{97f1d3a73197d7942695638c4fa9ac0fc3688c4f9774b905a14e3a3f171bac586c55e83ff97a1aeffb3af00adb22c6bb} +x{1212121212121212121212121212121212121212121212121212121212121212} +x{a42ae16f1c2a5fa69c04cb5998d2add790764ce8dd45bf25b29b4700829232052b52352dcff1cf255b3a7810ad7269601810f03b2bc8b68cf289cf295b206770605a190b6842583e47c3d1c0f73c54907bfb2a602157d46a4353a20283018763} +-1 +test-verify + +."Test verify_infinity_pubkey_and_infinity_signature" cr +x{c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000} +x{1212121212121212121212121212121212121212121212121212121212121212} +x{c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000} +0 +test-verify + +."Test verify_tampered_signature_case_195246ee3bd3b6ec" cr +x{b53d21a4cfd562c469cc81514d4ce5a6b577d8403d32a394dc265dd190b47fa9f829fdd7963afdf972e5e77854051f6f} +x{abababababababababababababababababababababababababababababababab} +x{ae82747ddeefe4fd64cf9cedb9b04ae3e8a43420cd255e3c7cd06a8d88b7c7f8638543719981c5d16fa3527c468c25f0026704a6951bde891360c7e8d12ddee0559004ccdbe6046b55bae1b257ee97f7cdb955773d7cf29adf3ccbb9ffffffff} +0 +test-verify + +."Test verify_tampered_signature_case_2ea479adf8c40300" cr +x{a491d1b0ecd9bb917989f0e74f0dea0422eac4a873e5e2644f368dffb9a6e20fd6e10c1b77654d067c0618f6e5a7f79a} +x{5656565656565656565656565656565656565656565656565656565656565656} +x{882730e5d03f6b42c3abc26d3372625034e1d871b65a8a6b900a56dae22da98abbe1b68f85e49fe7652a55ec3d0591c20767677e33e5cbb1207315c41a9ac03be39c2e7668edc043d6cb1d9fd93033caa8a1c5b0e84bedaeb6c64972ffffffff} +0 +test-verify + +."Test verify_tampered_signature_case_2f09d443ab8a3ac2" cr +x{b301803f8b5ac4a1133581fc676dfedc60d891dd5fa99028805e5ea5b08d3491af75d0707adab3b70c6a6a580217bf81} +x{0000000000000000000000000000000000000000000000000000000000000000} +x{b23c46be3a001c63ca711f87a005c200cc550b9429d5f4eb38d74322144f1b63926da3388979e5321012fb1a0526bcd100b5ef5fe72628ce4cd5e904aeaa3279527843fae5ca9ca675f4f51ed8f83bbf7155da9ecc9663100a885d5dffffffff} +0 +test-verify + +."Test verify_tampered_signature_case_3208262581c8fc09" cr +x{b301803f8b5ac4a1133581fc676dfedc60d891dd5fa99028805e5ea5b08d3491af75d0707adab3b70c6a6a580217bf81} +x{5656565656565656565656565656565656565656565656565656565656565656} +x{af1390c3c47acdb37131a51216da683c509fce0e954328a59f93aebda7e4ff974ba208d9a4a2a2389f892a9d418d618418dd7f7a6bc7aa0da999a9d3a5b815bc085e14fd001f6a1948768a3f4afefc8b8240dda329f984cb345c6363ffffffff} +0 +test-verify + +."Test verify_tampered_signature_case_6b3b17f6962a490c" cr +x{b53d21a4cfd562c469cc81514d4ce5a6b577d8403d32a394dc265dd190b47fa9f829fdd7963afdf972e5e77854051f6f} +x{5656565656565656565656565656565656565656565656565656565656565656} +x{a4efa926610b8bd1c8330c918b7a5e9bf374e53435ef8b7ec186abf62e1b1f65aeaaeb365677ac1d1172a1f5b44b4e6d022c252c58486c0a759fbdc7de15a756acc4d343064035667a594b4c2a6f0b0b421975977f297dba63ee2f63ffffffff} +0 +test-verify + +."Test verify_tampered_signature_case_6eeb7c52dfd9baf0" cr +x{b301803f8b5ac4a1133581fc676dfedc60d891dd5fa99028805e5ea5b08d3491af75d0707adab3b70c6a6a580217bf81} +x{abababababababababababababababababababababababababababababababab} +x{9674e2228034527f4c083206032b020310face156d4a4685e2fcaec2f6f3665aa635d90347b6ce124eb879266b1e801d185de36a0a289b85e9039662634f2eea1e02e670bc7ab849d006a70b2f93b84597558a05b879c8d445f387a5ffffffff} +0 +test-verify + +."Test verify_tampered_signature_case_8761a0b7e920c323" cr +x{a491d1b0ecd9bb917989f0e74f0dea0422eac4a873e5e2644f368dffb9a6e20fd6e10c1b77654d067c0618f6e5a7f79a} +x{abababababababababababababababababababababababababababababababab} +x{91347bccf740d859038fcdcaf233eeceb2a436bcaaee9b2aa3bfb70efe29dfb2677562ccbea1c8e061fb9971b0753c240622fab78489ce96768259fc01360346da5b9f579e5da0d941e4c6ba18a0e64906082375394f337fa1af2b71ffffffff} +0 +test-verify + +."Test verify_tampered_signature_case_d34885d766d5f705" cr +x{b53d21a4cfd562c469cc81514d4ce5a6b577d8403d32a394dc265dd190b47fa9f829fdd7963afdf972e5e77854051f6f} +x{0000000000000000000000000000000000000000000000000000000000000000} +x{948a7cb99f76d616c2c564ce9bf4a519f1bea6b0a624a02276443c245854219fabb8d4ce061d255af5330b078d5380681751aa7053da2c98bae898edc218c75f07e24d8802a17cd1f6833b71e58f5eb5b94208b4d0bb3848cecb075effffffff} +0 +test-verify + +."Test verify_tampered_signature_case_e8a50c445c855360" cr +x{a491d1b0ecd9bb917989f0e74f0dea0422eac4a873e5e2644f368dffb9a6e20fd6e10c1b77654d067c0618f6e5a7f79a} +x{0000000000000000000000000000000000000000000000000000000000000000} +x{b6ed936746e01f8ecf281f020953fbf1f01debd5657c4a383940b020b26507f6076334f91e2366c96e9ab279fb5158090352ea1c5b0c9274504f4f0e7053af24802e51e4568d164fe986834f41e55c8e850ce1f98458c0cfc9ab380bffffffff} +0 +test-verify + +."Test verify_valid_case_195246ee3bd3b6ec" cr +x{b53d21a4cfd562c469cc81514d4ce5a6b577d8403d32a394dc265dd190b47fa9f829fdd7963afdf972e5e77854051f6f} +x{abababababababababababababababababababababababababababababababab} +x{ae82747ddeefe4fd64cf9cedb9b04ae3e8a43420cd255e3c7cd06a8d88b7c7f8638543719981c5d16fa3527c468c25f0026704a6951bde891360c7e8d12ddee0559004ccdbe6046b55bae1b257ee97f7cdb955773d7cf29adf3ccbb9975e4eb9} +-1 +test-verify + +."Test verify_valid_case_2ea479adf8c40300" cr +x{a491d1b0ecd9bb917989f0e74f0dea0422eac4a873e5e2644f368dffb9a6e20fd6e10c1b77654d067c0618f6e5a7f79a} +x{5656565656565656565656565656565656565656565656565656565656565656} +x{882730e5d03f6b42c3abc26d3372625034e1d871b65a8a6b900a56dae22da98abbe1b68f85e49fe7652a55ec3d0591c20767677e33e5cbb1207315c41a9ac03be39c2e7668edc043d6cb1d9fd93033caa8a1c5b0e84bedaeb6c64972503a43eb} +-1 +test-verify + +."Test verify_valid_case_2f09d443ab8a3ac2" cr +x{b301803f8b5ac4a1133581fc676dfedc60d891dd5fa99028805e5ea5b08d3491af75d0707adab3b70c6a6a580217bf81} +x{0000000000000000000000000000000000000000000000000000000000000000} +x{b23c46be3a001c63ca711f87a005c200cc550b9429d5f4eb38d74322144f1b63926da3388979e5321012fb1a0526bcd100b5ef5fe72628ce4cd5e904aeaa3279527843fae5ca9ca675f4f51ed8f83bbf7155da9ecc9663100a885d5dc6df96d9} +-1 +test-verify + +."Test verify_valid_case_3208262581c8fc09" cr +x{b301803f8b5ac4a1133581fc676dfedc60d891dd5fa99028805e5ea5b08d3491af75d0707adab3b70c6a6a580217bf81} +x{5656565656565656565656565656565656565656565656565656565656565656} +x{af1390c3c47acdb37131a51216da683c509fce0e954328a59f93aebda7e4ff974ba208d9a4a2a2389f892a9d418d618418dd7f7a6bc7aa0da999a9d3a5b815bc085e14fd001f6a1948768a3f4afefc8b8240dda329f984cb345c6363272ba4fe} +-1 +test-verify + +."Test verify_valid_case_6b3b17f6962a490c" cr +x{b53d21a4cfd562c469cc81514d4ce5a6b577d8403d32a394dc265dd190b47fa9f829fdd7963afdf972e5e77854051f6f} +x{5656565656565656565656565656565656565656565656565656565656565656} +x{a4efa926610b8bd1c8330c918b7a5e9bf374e53435ef8b7ec186abf62e1b1f65aeaaeb365677ac1d1172a1f5b44b4e6d022c252c58486c0a759fbdc7de15a756acc4d343064035667a594b4c2a6f0b0b421975977f297dba63ee2f63ffe47bb6} +-1 +test-verify + +."Test verify_valid_case_6eeb7c52dfd9baf0" cr +x{b301803f8b5ac4a1133581fc676dfedc60d891dd5fa99028805e5ea5b08d3491af75d0707adab3b70c6a6a580217bf81} +x{abababababababababababababababababababababababababababababababab} +x{9674e2228034527f4c083206032b020310face156d4a4685e2fcaec2f6f3665aa635d90347b6ce124eb879266b1e801d185de36a0a289b85e9039662634f2eea1e02e670bc7ab849d006a70b2f93b84597558a05b879c8d445f387a5d5b653df} +-1 +test-verify + +."Test verify_valid_case_8761a0b7e920c323" cr +x{a491d1b0ecd9bb917989f0e74f0dea0422eac4a873e5e2644f368dffb9a6e20fd6e10c1b77654d067c0618f6e5a7f79a} +x{abababababababababababababababababababababababababababababababab} +x{91347bccf740d859038fcdcaf233eeceb2a436bcaaee9b2aa3bfb70efe29dfb2677562ccbea1c8e061fb9971b0753c240622fab78489ce96768259fc01360346da5b9f579e5da0d941e4c6ba18a0e64906082375394f337fa1af2b7127b0d121} +-1 +test-verify + +."Test verify_valid_case_d34885d766d5f705" cr +x{b53d21a4cfd562c469cc81514d4ce5a6b577d8403d32a394dc265dd190b47fa9f829fdd7963afdf972e5e77854051f6f} +x{0000000000000000000000000000000000000000000000000000000000000000} +x{948a7cb99f76d616c2c564ce9bf4a519f1bea6b0a624a02276443c245854219fabb8d4ce061d255af5330b078d5380681751aa7053da2c98bae898edc218c75f07e24d8802a17cd1f6833b71e58f5eb5b94208b4d0bb3848cecb075ea21be115} +-1 +test-verify + +."Test verify_valid_case_e8a50c445c855360" cr +x{a491d1b0ecd9bb917989f0e74f0dea0422eac4a873e5e2644f368dffb9a6e20fd6e10c1b77654d067c0618f6e5a7f79a} +x{0000000000000000000000000000000000000000000000000000000000000000} +x{b6ed936746e01f8ecf281f020953fbf1f01debd5657c4a383940b020b26507f6076334f91e2366c96e9ab279fb5158090352ea1c5b0c9274504f4f0e7053af24802e51e4568d164fe986834f41e55c8e850ce1f98458c0cfc9ab380b55285a55} +-1 +test-verify + +."Test verify_wrong_pubkey_case_195246ee3bd3b6ec" cr +x{b53d21a4cfd562c469cc81514d4ce5a6b577d8403d32a394dc265dd190b47fa9f829fdd7963afdf972e5e77854051f6f} +x{abababababababababababababababababababababababababababababababab} +x{9674e2228034527f4c083206032b020310face156d4a4685e2fcaec2f6f3665aa635d90347b6ce124eb879266b1e801d185de36a0a289b85e9039662634f2eea1e02e670bc7ab849d006a70b2f93b84597558a05b879c8d445f387a5d5b653df} +0 +test-verify + +."Test verify_wrong_pubkey_case_2ea479adf8c40300" cr +x{a491d1b0ecd9bb917989f0e74f0dea0422eac4a873e5e2644f368dffb9a6e20fd6e10c1b77654d067c0618f6e5a7f79a} +x{5656565656565656565656565656565656565656565656565656565656565656} +x{a4efa926610b8bd1c8330c918b7a5e9bf374e53435ef8b7ec186abf62e1b1f65aeaaeb365677ac1d1172a1f5b44b4e6d022c252c58486c0a759fbdc7de15a756acc4d343064035667a594b4c2a6f0b0b421975977f297dba63ee2f63ffe47bb6} +0 +test-verify + +."Test verify_wrong_pubkey_case_2f09d443ab8a3ac2" cr +x{b301803f8b5ac4a1133581fc676dfedc60d891dd5fa99028805e5ea5b08d3491af75d0707adab3b70c6a6a580217bf81} +x{0000000000000000000000000000000000000000000000000000000000000000} +x{b6ed936746e01f8ecf281f020953fbf1f01debd5657c4a383940b020b26507f6076334f91e2366c96e9ab279fb5158090352ea1c5b0c9274504f4f0e7053af24802e51e4568d164fe986834f41e55c8e850ce1f98458c0cfc9ab380b55285a55} +0 +test-verify + +."Test verify_wrong_pubkey_case_3208262581c8fc09" cr +x{b301803f8b5ac4a1133581fc676dfedc60d891dd5fa99028805e5ea5b08d3491af75d0707adab3b70c6a6a580217bf81} +x{5656565656565656565656565656565656565656565656565656565656565656} +x{882730e5d03f6b42c3abc26d3372625034e1d871b65a8a6b900a56dae22da98abbe1b68f85e49fe7652a55ec3d0591c20767677e33e5cbb1207315c41a9ac03be39c2e7668edc043d6cb1d9fd93033caa8a1c5b0e84bedaeb6c64972503a43eb} +0 +test-verify + +."Test verify_wrong_pubkey_case_6b3b17f6962a490c" cr +x{b53d21a4cfd562c469cc81514d4ce5a6b577d8403d32a394dc265dd190b47fa9f829fdd7963afdf972e5e77854051f6f} +x{5656565656565656565656565656565656565656565656565656565656565656} +x{af1390c3c47acdb37131a51216da683c509fce0e954328a59f93aebda7e4ff974ba208d9a4a2a2389f892a9d418d618418dd7f7a6bc7aa0da999a9d3a5b815bc085e14fd001f6a1948768a3f4afefc8b8240dda329f984cb345c6363272ba4fe} +0 +test-verify + +."Test verify_wrong_pubkey_case_6eeb7c52dfd9baf0" cr +x{b301803f8b5ac4a1133581fc676dfedc60d891dd5fa99028805e5ea5b08d3491af75d0707adab3b70c6a6a580217bf81} +x{abababababababababababababababababababababababababababababababab} +x{91347bccf740d859038fcdcaf233eeceb2a436bcaaee9b2aa3bfb70efe29dfb2677562ccbea1c8e061fb9971b0753c240622fab78489ce96768259fc01360346da5b9f579e5da0d941e4c6ba18a0e64906082375394f337fa1af2b7127b0d121} +0 +test-verify + +."Test verify_wrong_pubkey_case_8761a0b7e920c323" cr +x{a491d1b0ecd9bb917989f0e74f0dea0422eac4a873e5e2644f368dffb9a6e20fd6e10c1b77654d067c0618f6e5a7f79a} +x{abababababababababababababababababababababababababababababababab} +x{ae82747ddeefe4fd64cf9cedb9b04ae3e8a43420cd255e3c7cd06a8d88b7c7f8638543719981c5d16fa3527c468c25f0026704a6951bde891360c7e8d12ddee0559004ccdbe6046b55bae1b257ee97f7cdb955773d7cf29adf3ccbb9975e4eb9} +0 +test-verify + +."Test verify_wrong_pubkey_case_d34885d766d5f705" cr +x{b53d21a4cfd562c469cc81514d4ce5a6b577d8403d32a394dc265dd190b47fa9f829fdd7963afdf972e5e77854051f6f} +x{0000000000000000000000000000000000000000000000000000000000000000} +x{b23c46be3a001c63ca711f87a005c200cc550b9429d5f4eb38d74322144f1b63926da3388979e5321012fb1a0526bcd100b5ef5fe72628ce4cd5e904aeaa3279527843fae5ca9ca675f4f51ed8f83bbf7155da9ecc9663100a885d5dc6df96d9} +0 +test-verify + +."Test verify_wrong_pubkey_case_e8a50c445c855360" cr +x{a491d1b0ecd9bb917989f0e74f0dea0422eac4a873e5e2644f368dffb9a6e20fd6e10c1b77654d067c0618f6e5a7f79a} +x{0000000000000000000000000000000000000000000000000000000000000000} +x{948a7cb99f76d616c2c564ce9bf4a519f1bea6b0a624a02276443c245854219fabb8d4ce061d255af5330b078d5380681751aa7053da2c98bae898edc218c75f07e24d8802a17cd1f6833b71e58f5eb5b94208b4d0bb3848cecb075ea21be115} +0 +test-verify + + +."Test aggregate_0x0000000000000000000000000000000000000000000000000000000000000000" cr +x{b6ed936746e01f8ecf281f020953fbf1f01debd5657c4a383940b020b26507f6076334f91e2366c96e9ab279fb5158090352ea1c5b0c9274504f4f0e7053af24802e51e4568d164fe986834f41e55c8e850ce1f98458c0cfc9ab380b55285a55} +x{b23c46be3a001c63ca711f87a005c200cc550b9429d5f4eb38d74322144f1b63926da3388979e5321012fb1a0526bcd100b5ef5fe72628ce4cd5e904aeaa3279527843fae5ca9ca675f4f51ed8f83bbf7155da9ecc9663100a885d5dc6df96d9} +x{948a7cb99f76d616c2c564ce9bf4a519f1bea6b0a624a02276443c245854219fabb8d4ce061d255af5330b078d5380681751aa7053da2c98bae898edc218c75f07e24d8802a17cd1f6833b71e58f5eb5b94208b4d0bb3848cecb075ea21be115} +3 +x{9683b3e6701f9a4b706709577963110043af78a5b41991b998475a3d3fd62abf35ce03b33908418efc95a058494a8ae504354b9f626231f6b3f3c849dfdeaf5017c4780e2aee1850ceaf4b4d9ce70971a3d2cfcd97b7e5ecf6759f8da5f76d31} +test-aggregate + +."Test aggregate_0x5656565656565656565656565656565656565656565656565656565656565656" cr +x{882730e5d03f6b42c3abc26d3372625034e1d871b65a8a6b900a56dae22da98abbe1b68f85e49fe7652a55ec3d0591c20767677e33e5cbb1207315c41a9ac03be39c2e7668edc043d6cb1d9fd93033caa8a1c5b0e84bedaeb6c64972503a43eb} +x{af1390c3c47acdb37131a51216da683c509fce0e954328a59f93aebda7e4ff974ba208d9a4a2a2389f892a9d418d618418dd7f7a6bc7aa0da999a9d3a5b815bc085e14fd001f6a1948768a3f4afefc8b8240dda329f984cb345c6363272ba4fe} +x{a4efa926610b8bd1c8330c918b7a5e9bf374e53435ef8b7ec186abf62e1b1f65aeaaeb365677ac1d1172a1f5b44b4e6d022c252c58486c0a759fbdc7de15a756acc4d343064035667a594b4c2a6f0b0b421975977f297dba63ee2f63ffe47bb6} +3 +x{ad38fc73846583b08d110d16ab1d026c6ea77ac2071e8ae832f56ac0cbcdeb9f5678ba5ce42bd8dce334cc47b5abcba40a58f7f1f80ab304193eb98836cc14d8183ec14cc77de0f80c4ffd49e168927a968b5cdaa4cf46b9805be84ad7efa77b} +test-aggregate + +."Test aggregate_0xabababababababababababababababababababababababababababababababab" cr +x{91347bccf740d859038fcdcaf233eeceb2a436bcaaee9b2aa3bfb70efe29dfb2677562ccbea1c8e061fb9971b0753c240622fab78489ce96768259fc01360346da5b9f579e5da0d941e4c6ba18a0e64906082375394f337fa1af2b7127b0d121} +x{9674e2228034527f4c083206032b020310face156d4a4685e2fcaec2f6f3665aa635d90347b6ce124eb879266b1e801d185de36a0a289b85e9039662634f2eea1e02e670bc7ab849d006a70b2f93b84597558a05b879c8d445f387a5d5b653df} +x{ae82747ddeefe4fd64cf9cedb9b04ae3e8a43420cd255e3c7cd06a8d88b7c7f8638543719981c5d16fa3527c468c25f0026704a6951bde891360c7e8d12ddee0559004ccdbe6046b55bae1b257ee97f7cdb955773d7cf29adf3ccbb9975e4eb9} +3 +x{9712c3edd73a209c742b8250759db12549b3eaf43b5ca61376d9f30e2747dbcf842d8b2ac0901d2a093713e20284a7670fcf6954e9ab93de991bb9b313e664785a075fc285806fa5224c82bde146561b446ccfc706a64b8579513cfc4ff1d930} +test-aggregate + +."Test aggregate_infinity_signature" cr +x{c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000} +1 +x{c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000} +test-aggregate + +."Test aggregate_na_signatures" cr +0 +x{} +test-aggregate + +."Test aggregate_single_signature" cr +x{b6ed936746e01f8ecf281f020953fbf1f01debd5657c4a383940b020b26507f6076334f91e2366c96e9ab279fb5158090352ea1c5b0c9274504f4f0e7053af24802e51e4568d164fe986834f41e55c8e850ce1f98458c0cfc9ab380b55285a55} +1 +x{b6ed936746e01f8ecf281f020953fbf1f01debd5657c4a383940b020b26507f6076334f91e2366c96e9ab279fb5158090352ea1c5b0c9274504f4f0e7053af24802e51e4568d164fe986834f41e55c8e850ce1f98458c0cfc9ab380b55285a55} +test-aggregate + +."Test fast_aggregate_verify_extra_pubkey_4f079f946446fabf" cr +x{a491d1b0ecd9bb917989f0e74f0dea0422eac4a873e5e2644f368dffb9a6e20fd6e10c1b77654d067c0618f6e5a7f79a} +x{b301803f8b5ac4a1133581fc676dfedc60d891dd5fa99028805e5ea5b08d3491af75d0707adab3b70c6a6a580217bf81} +x{b53d21a4cfd562c469cc81514d4ce5a6b577d8403d32a394dc265dd190b47fa9f829fdd7963afdf972e5e77854051f6f} +3 +x{5656565656565656565656565656565656565656565656565656565656565656} +x{912c3615f69575407db9392eb21fee18fff797eeb2fbe1816366ca2a08ae574d8824dbfafb4c9eaa1cf61b63c6f9b69911f269b664c42947dd1b53ef1081926c1e82bb2a465f927124b08391a5249036146d6f3f1e17ff5f162f779746d830d1} +0 +test-fast-aggregate-verify + +."Test fast_aggregate_verify_extra_pubkey_5a38e6b4017fe4dd" cr +x{a491d1b0ecd9bb917989f0e74f0dea0422eac4a873e5e2644f368dffb9a6e20fd6e10c1b77654d067c0618f6e5a7f79a} +x{b301803f8b5ac4a1133581fc676dfedc60d891dd5fa99028805e5ea5b08d3491af75d0707adab3b70c6a6a580217bf81} +x{b53d21a4cfd562c469cc81514d4ce5a6b577d8403d32a394dc265dd190b47fa9f829fdd7963afdf972e5e77854051f6f} +x{b53d21a4cfd562c469cc81514d4ce5a6b577d8403d32a394dc265dd190b47fa9f829fdd7963afdf972e5e77854051f6f} +4 +x{abababababababababababababababababababababababababababababababab} +x{9712c3edd73a209c742b8250759db12549b3eaf43b5ca61376d9f30e2747dbcf842d8b2ac0901d2a093713e20284a7670fcf6954e9ab93de991bb9b313e664785a075fc285806fa5224c82bde146561b446ccfc706a64b8579513cfc4ff1d930} +0 +test-fast-aggregate-verify + +."Test fast_aggregate_verify_extra_pubkey_a698ea45b109f303" cr +x{a491d1b0ecd9bb917989f0e74f0dea0422eac4a873e5e2644f368dffb9a6e20fd6e10c1b77654d067c0618f6e5a7f79a} +x{b53d21a4cfd562c469cc81514d4ce5a6b577d8403d32a394dc265dd190b47fa9f829fdd7963afdf972e5e77854051f6f} +2 +x{0000000000000000000000000000000000000000000000000000000000000000} +x{b6ed936746e01f8ecf281f020953fbf1f01debd5657c4a383940b020b26507f6076334f91e2366c96e9ab279fb5158090352ea1c5b0c9274504f4f0e7053af24802e51e4568d164fe986834f41e55c8e850ce1f98458c0cfc9ab380b55285a55} +0 +test-fast-aggregate-verify + +."Test fast_aggregate_verify_infinity_pubkey" cr +x{a491d1b0ecd9bb917989f0e74f0dea0422eac4a873e5e2644f368dffb9a6e20fd6e10c1b77654d067c0618f6e5a7f79a} +x{b301803f8b5ac4a1133581fc676dfedc60d891dd5fa99028805e5ea5b08d3491af75d0707adab3b70c6a6a580217bf81} +x{b53d21a4cfd562c469cc81514d4ce5a6b577d8403d32a394dc265dd190b47fa9f829fdd7963afdf972e5e77854051f6f} +x{c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000} +4 +x{1212121212121212121212121212121212121212121212121212121212121212} +x{afcb4d980f079265caa61aee3e26bf48bebc5dc3e7f2d7346834d76cbc812f636c937b6b44a9323d8bc4b1cdf71d6811035ddc2634017faab2845308f568f2b9a0356140727356eae9eded8b87fd8cb8024b440c57aee06076128bb32921f584} +0 +test-fast-aggregate-verify + +."Test fast_aggregate_verify_na_pubkeys_and_infinity_signature" cr +0 +x{abababababababababababababababababababababababababababababababab} +x{c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000} +0 +test-fast-aggregate-verify + +."Test fast_aggregate_verify_na_pubkeys_and_na_signature" cr +0 +x{abababababababababababababababababababababababababababababababab} +x{000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000} +0 +test-fast-aggregate-verify + +."Test fast_aggregate_verify_tampered_signature_3d7576f3c0e3570a" cr +x{a491d1b0ecd9bb917989f0e74f0dea0422eac4a873e5e2644f368dffb9a6e20fd6e10c1b77654d067c0618f6e5a7f79a} +x{b301803f8b5ac4a1133581fc676dfedc60d891dd5fa99028805e5ea5b08d3491af75d0707adab3b70c6a6a580217bf81} +x{b53d21a4cfd562c469cc81514d4ce5a6b577d8403d32a394dc265dd190b47fa9f829fdd7963afdf972e5e77854051f6f} +3 +x{abababababababababababababababababababababababababababababababab} +x{9712c3edd73a209c742b8250759db12549b3eaf43b5ca61376d9f30e2747dbcf842d8b2ac0901d2a093713e20284a7670fcf6954e9ab93de991bb9b313e664785a075fc285806fa5224c82bde146561b446ccfc706a64b8579513cfcffffffff} +0 +test-fast-aggregate-verify + +."Test fast_aggregate_verify_tampered_signature_5e745ad0c6199a6c" cr +x{a491d1b0ecd9bb917989f0e74f0dea0422eac4a873e5e2644f368dffb9a6e20fd6e10c1b77654d067c0618f6e5a7f79a} +1 +x{0000000000000000000000000000000000000000000000000000000000000000} +x{b6ed936746e01f8ecf281f020953fbf1f01debd5657c4a383940b020b26507f6076334f91e2366c96e9ab279fb5158090352ea1c5b0c9274504f4f0e7053af24802e51e4568d164fe986834f41e55c8e850ce1f98458c0cfc9ab380bffffffff} +0 +test-fast-aggregate-verify + +."Test fast_aggregate_verify_tampered_signature_652ce62f09290811" cr +x{a491d1b0ecd9bb917989f0e74f0dea0422eac4a873e5e2644f368dffb9a6e20fd6e10c1b77654d067c0618f6e5a7f79a} +x{b301803f8b5ac4a1133581fc676dfedc60d891dd5fa99028805e5ea5b08d3491af75d0707adab3b70c6a6a580217bf81} +2 +x{5656565656565656565656565656565656565656565656565656565656565656} +x{912c3615f69575407db9392eb21fee18fff797eeb2fbe1816366ca2a08ae574d8824dbfafb4c9eaa1cf61b63c6f9b69911f269b664c42947dd1b53ef1081926c1e82bb2a465f927124b08391a5249036146d6f3f1e17ff5f162f7797ffffffff} +0 +test-fast-aggregate-verify + +."Test fast_aggregate_verify_valid_3d7576f3c0e3570a" cr +x{a491d1b0ecd9bb917989f0e74f0dea0422eac4a873e5e2644f368dffb9a6e20fd6e10c1b77654d067c0618f6e5a7f79a} +x{b301803f8b5ac4a1133581fc676dfedc60d891dd5fa99028805e5ea5b08d3491af75d0707adab3b70c6a6a580217bf81} +x{b53d21a4cfd562c469cc81514d4ce5a6b577d8403d32a394dc265dd190b47fa9f829fdd7963afdf972e5e77854051f6f} +3 +x{abababababababababababababababababababababababababababababababab} +x{9712c3edd73a209c742b8250759db12549b3eaf43b5ca61376d9f30e2747dbcf842d8b2ac0901d2a093713e20284a7670fcf6954e9ab93de991bb9b313e664785a075fc285806fa5224c82bde146561b446ccfc706a64b8579513cfc4ff1d930} +-1 +test-fast-aggregate-verify + +."Test fast_aggregate_verify_valid_5e745ad0c6199a6c" cr +x{a491d1b0ecd9bb917989f0e74f0dea0422eac4a873e5e2644f368dffb9a6e20fd6e10c1b77654d067c0618f6e5a7f79a} +1 +x{0000000000000000000000000000000000000000000000000000000000000000} +x{b6ed936746e01f8ecf281f020953fbf1f01debd5657c4a383940b020b26507f6076334f91e2366c96e9ab279fb5158090352ea1c5b0c9274504f4f0e7053af24802e51e4568d164fe986834f41e55c8e850ce1f98458c0cfc9ab380b55285a55} +-1 +test-fast-aggregate-verify + +."Test fast_aggregate_verify_valid_652ce62f09290811" cr +x{a491d1b0ecd9bb917989f0e74f0dea0422eac4a873e5e2644f368dffb9a6e20fd6e10c1b77654d067c0618f6e5a7f79a} +x{b301803f8b5ac4a1133581fc676dfedc60d891dd5fa99028805e5ea5b08d3491af75d0707adab3b70c6a6a580217bf81} +2 +x{5656565656565656565656565656565656565656565656565656565656565656} +x{912c3615f69575407db9392eb21fee18fff797eeb2fbe1816366ca2a08ae574d8824dbfafb4c9eaa1cf61b63c6f9b69911f269b664c42947dd1b53ef1081926c1e82bb2a465f927124b08391a5249036146d6f3f1e17ff5f162f779746d830d1} +-1 +test-fast-aggregate-verify + +."Test aggregate_verify_infinity_pubkey" cr +x{a491d1b0ecd9bb917989f0e74f0dea0422eac4a873e5e2644f368dffb9a6e20fd6e10c1b77654d067c0618f6e5a7f79a} +x{0000000000000000000000000000000000000000000000000000000000000000} +x{b301803f8b5ac4a1133581fc676dfedc60d891dd5fa99028805e5ea5b08d3491af75d0707adab3b70c6a6a580217bf81} +x{5656565656565656565656565656565656565656565656565656565656565656} +x{b53d21a4cfd562c469cc81514d4ce5a6b577d8403d32a394dc265dd190b47fa9f829fdd7963afdf972e5e77854051f6f} +x{abababababababababababababababababababababababababababababababab} +x{c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000} +x{1212121212121212121212121212121212121212121212121212121212121212} +4 +x{9104e74b9dfd3ad502f25d6a5ef57db0ed7d9a0e00f3500586d8ce44231212542fcfaf87840539b398bf07626705cf1105d246ca1062c6c2e1a53029a0f790ed5e3cb1f52f8234dc5144c45fc847c0cd37a92d68e7c5ba7c648a8a339f171244} +0 +test-aggregate-verify + +."Test aggregate_verify_na_pubkeys_and_infinity_signature" cr +0 +x{c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000} +0 +test-aggregate-verify + +."Test aggregate_verify_na_pubkeys_and_na_signature" cr +0 +x{000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000} +0 +test-aggregate-verify + +."Test aggregate_verify_tampered_signature" cr +// Test is modified to make all signatures 96 bytes +x{a491d1b0ecd9bb917989f0e74f0dea0422eac4a873e5e2644f368dffb9a6e20fd6e10c1b77654d067c0618f6e5a7f79a} +x{0000000000000000000000000000000000000000000000000000000000000000} +x{b301803f8b5ac4a1133581fc676dfedc60d891dd5fa99028805e5ea5b08d3491af75d0707adab3b70c6a6a580217bf81} +x{5656565656565656565656565656565656565656565656565656565656565656} +x{b53d21a4cfd562c469cc81514d4ce5a6b577d8403d32a394dc265dd190b47fa9f829fdd7963afdf972e5e77854051f6f} +x{abababababababababababababababababababababababababababababababab} +3 +x{9104e74bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff} +0 +test-aggregate-verify + +."Test aggregate_verify_valid" cr +x{a491d1b0ecd9bb917989f0e74f0dea0422eac4a873e5e2644f368dffb9a6e20fd6e10c1b77654d067c0618f6e5a7f79a} +x{0000000000000000000000000000000000000000000000000000000000000000} +x{b301803f8b5ac4a1133581fc676dfedc60d891dd5fa99028805e5ea5b08d3491af75d0707adab3b70c6a6a580217bf81} +x{5656565656565656565656565656565656565656565656565656565656565656} +x{b53d21a4cfd562c469cc81514d4ce5a6b577d8403d32a394dc265dd190b47fa9f829fdd7963afdf972e5e77854051f6f} +x{abababababababababababababababababababababababababababababababab} +3 +x{9104e74b9dfd3ad502f25d6a5ef57db0ed7d9a0e00f3500586d8ce44231212542fcfaf87840539b398bf07626705cf1105d246ca1062c6c2e1a53029a0f790ed5e3cb1f52f8234dc5144c45fc847c0cd37a92d68e7c5ba7c648a8a339f171244} +-1 +test-aggregate-verify + +."Test fast_aggregate_verify with actual Ethereum signatures" cr +x{abd15ed19f6b6f4a199b6c90637e70222a8aadcb34ffdef3c6cc57a824a7410852d209835c91680875794ba287ce7de3} +x{832451ba329e4fe2e81056ae224feea873ed8d6ffc86840437976a421a352282faca08b93e9e3a8068a9e3979e6056b5} +x{b09e63a9a8b80928532e1fe0d4624be4990bbdf4c11293cd72ac635f56262fea853aef1348c26a8263f83d0c3144bdda} +x{98e38f383949a34bc925a381b3e922fafc200201f743001fff15171bdab7a82a3731c54522c98297840ca687e47057bf} +x{af2d7140be9332b536222680c690a54de4eea2644b3b3a84e45b3e425d4a37f07c98eff13e123da39b22c536be230f94} +x{8277ce097d82f3810e28936bb0f200c47be681db6b22a34bae6b39a0616a1dc5eb542dbc0f68adccbf5e9517a03c0736} +x{9663cda398d72bf5bdd4bbc49651bdefb88f5dfb32e305a7f70a968cbd1e6f4ae7cd50e675393e04ec56f7566bbc153c} +x{a9c0360b88f09c0528a0cca8173061eeef7e8cc84064dd3bd894808e1da3536093f9acf7552e3485d037cf5b10a9c036} +x{8259ce226809ebf580488ad7c8d054732eedd21552d8ab4d8652b62524f3858eb10b055f40f7d1752b200bee9a94b8c0} +x{a605c777fb1ce8b67450e0d243305f5a906074dbeaa514d93cb43eae638794c2ef38c60b478f7aabdae5f4e1461d2d69} +x{9376c20d92aae571465aba7286ada5c50733fd5c417fc8a4cc7cf2af8298f35ec6f43b6d9fe1bf8c950abe3499b4dd62} +x{a4ca29cca82a9bbc250556c459d0ac48c90652b7ecaf77aabc14a64e15a6e686e48efced318ba848303908036fd44f86} +x{aa50e833ee57e0b71b52a5f826cb7f131720fb35c828701d0703eeb417613a8f10be0be445b35ad5b9fa7a6da3c3a836} +x{825f98ebe875b1b6ad876153d3969a0fbb088f3fdffecdfda40bdad451fb336a05296f325ed85bbc271eab8dd9d541d1} +x{9895f1615cec63b3a28be707874dc4273168f91c0c5bf687893680f5e4d88964620b2fc91dc0e663c1d9968c25a95a01} +x{a4255953e52e4bf80a8c2c52cd24fbf869bc43c7fc815239d54d841b86b660a3b2841191f9716fc4aad465432b8415c0} +x{b663d3f303a2dcc660f274c6b051e4c2a16271840315148748ba0585f47e02e99827527d365acae65094c39a09c1b065} +x{86753154725dedbc2f0425723b551f4fccb2f69087354ac0c0c0bbbc23e10d07325b87989623c54e58b7b2241c97efbb} +x{b1de760c0271e5ad1422d8b58ddf954fb104ec7b8a74927ddad612833d189fdf6bb776249cde1b48786ad69e015a7b0d} +x{976cd11d84723509780656ca3b92f12eeaa7413b78d9c74824bbfb0269d7ffb63499be7340ca75ede7cfac28024785a8} +x{b2318f9647bc8ce79734177a85877d63f486ce98ab2a247672c54cc4093dabd013ea2d95157a1c5c5d7cbe00e4c33b11} +x{97ec1840d0795bd66dfb2a3ef954f93ac93e05755c2b3d61b714be2d732d37291e5a95a69a02ab6af4ae1441e45e9323} +x{a3fc6160fb647a1d43d94d639704d6d17528b18361e3acbfce051fe10d7b9608e717f6d73f51b784e69b59789c121f2f} +x{82406906b3a6e0baa89d93fb2e1c1f87537e6920f4c1390a1526fb5f490f65dc35432ac6d265418167d7a68c5cd70c74} +x{999a313756535ae0d6816b99c69db91c3792648d45cad753c8f6cea0d9997f2006c508cdb39c3d286e24a607598a8c8a} +x{87dffdc02f4797901553cc7de4a8ffdae4df2b5728a0418923d1d4c01da14a482b21a13332b7227f49b4396f88e776ac} +x{82c9236f69038abc40acbf1b730b3c1d3962ff9567f823c83eb3e984339e77c4f9373f679d30c4ffd0e2aad1d002f4ba} +x{81b989f4a65fce31ba9c63a80ff53d28e75606f5ec563a6aef5f2d76d13f591ad60b974f97fd08155325148df95cfcc1} +x{8f3470b02f8e0a5af092625b3f3812d44d76b86cd1c7af64f1c350f6931eacc38490f10cb9888f1b6cdf68fac06ef9f7} +x{ad77903be9a9c4611d9c152ba31faf49d936be3ca7ace051ee0d8862a3869d61194d990b5b4c86bdcf5219e0ea2c25f9} +x{b6654b4984b1f41517fb3d1f8471f2b3a389329fe304cf315d0c087b7a29f58c8fe61cacd99620ad337fb73e773836a6} +x{819cc51962fafcbe99160959e9bbe66e43bf06b5cae2300fe7cb9aca5739f31c4e8a4c695e77f6b06a881eb6322f4399} +x{a9aadc9694fc9c214875b66f00472ab3bdb9fec2cf07a46845050506c077a029ee75f88a24ea2a1b9c2c0b50810e6254} +x{ab5c69e503a2a7becebb24f17c921e9ec2f4d18f7b1565b0c2a1468271348aee861ee0e9e091a786fbdad10743a7c449} +x{8a1d4d071d08a340f3a3df825d748da28b9dcbc52482d34ce05e6272ebaf93858c8460831ded3c81d2d19352414c7fec} +x{8fe4c6f6aa8951d3f092132c645f4ccf9a50a1c200fa96f27306968b4baab7b5bb09e1f6b8d7bb91dc82a408576d6894} +x{958fa0b9e4a095c7c270d7c3d9a603533e5d91b6e1624ff6dc235d5e96ba7cf3df71b202d96667b4add69c10af948fa3} +x{aa9fbae1a28af5400c5fcee35a6b968422c3015f018d06793d21bd4fbf492c484b15d8a7558d0081ce174d1b648bb057} +x{819a691281ccb2aef76c9523a9e0329e1abf6fa1917227fcc9c3996662de6d4d3623ba2298845b2f82c893b5f3b7f638} +x{b59bc108d9780d1322e318765f0064e93a475f4ef76519a05c76b52b9a640b3d6add5635ff4477b8124e42ada3b95a85} +x{b040da098f2f81cb66270ad142035080da510bbb7c7835d12432ab0f689665052aa226e818a2f16c60e38e2e9dae1ce7} +x{834a7bc5d9eea4c10508dbbf366e1c0c1d4ae87a0832b7d9cc6b635da6b37b70a0ee57215e7ed2eaadc58587792a7341} +x{97c3281b2f7d1893dab3802b620d72e7061af12ad57847ce00af912dbd8c3ab62f8c548764aee8da5ca57d527e41655c} +x{af4241e7dff52b4912d0b6b06f6d59562c77858538f0838f652d91cf13afbafbbb7f16aaa2c53c6159cb1aa8e4c672fe} +x{92a78d4bc61c4cb7783a57e3f423e83402659de44efc167a943604a89cc7afe3c6db64dbc05cac81503f17bef2f3bfcc} +x{907fdbf2864372dfd420acb19dd045f090c088a858bb58e2de82ac6aef9a5efe423c6fcbd1f1810d6bec89f9eab8cea1} +x{96ccd37a8c0755f54d66d380ba56e5520a8adfcb70271d223aa9b42bd6cbbe3a7d186012b49dff85f0d7df3f366b41e3} +x{89e738b1b69710038089a990a7278b2a54d30075998fb1d4540c6e264e57def74fbed1b35cf0f3f236f12887e4df1949} +x{910a6f5d7a02bc8641e179000faf86f92445d63174999b55d6671d05a2253f1b5890f02d2b679a0b3f500faa89f160d2} +x{a6d921cc92c139a4345b7aab309318c1067e5169f179f82a9bc735c08ff61232a63d88ea59157ea354476a9d2b40db49} +x{b3ed37713ef72ce168beee0aa38f89ed3cf76337a198ccc1b30b58d808aea839af97f5c2fe95ffc61ba875f095058cc6} +x{81104459d2f669aa6bd481fead334fb0dd709e6029e7374d61d9cb1a9589255efde16ca1e6ce1c5dbc510dbef512ad4f} +x{9684fa7e1f44fd4e326104ede6348bbb978e68a944448dc311a634cda46bb52086cac4b435eef009dcdcfe04f3413ed0} +x{b93fe3dbbdf63678e0cb0e4e299015e6a4187d5a6039ac6eb0d96ca4baecfe1a0d3672ed716d2b129fbe7b8373750cf4} +x{ac97c56a24b9dbdf87337a87f27a90b1d936c20e68a39e2f8bbc2ae5a9e1ae9490477cbe03e03f180ff42637246b9541} +x{8032d15ee910491ac3e5d228e00ef8ae41e50c0ca2692fbe7f006f3d8b360e556a1e0ad0c67d18a231f2d71ae83914f5} +x{8ad43c8688a00ea88ddacbf8d2aa99997dd425a35bd7294be0fac420af95bc1723919d2d03862dbee6e3564331d26033} +x{ab2aecb129638db624254e7001a725260d2739fd50b374418a1155569eff3581dcd6f25cb0d0b85ae20aa176c30c99e7} +x{a9a420966d5d57d11a2d881fb462c7ed53dabba8e51b78bb852acc08c4f5c86791828e8cc59631c3fb1351e0960f4347} +x{b974b7427651578b63669ef47ec8cde65c9d134e18e9f2e2761b3250fb472a578424fff31614404d0bc23c0cd75d26e2} +x{a2ebd309811f0c33ae45b709bf55e1c0cc0a09cb18a47855d42d5012e6d2e340105dcd85347060c64852a9da589c26fa} +x{af6c39210b9c6d153e141fb34d7739fc7a9fbf5656b30744e9a8440e6049d84863c2f208f14e03ab5fb5fb47a19dc277} +x{a19820316b4136e5b937c0b60812983f7fbf7a53b1758ad8dc0e249cd49dafbfda4c25d9c798a15a9693bc565a11383f} +x{851cf2adc1d7ad56a0ea3a7abff62570b9b4b25ad84e847e278edd8b11b2a6d2ce901bb45604e51ae5d3aa3c13ed4a07} +x{b9fd9b663fa540237e214c7b1e3b6b74a4381120f82e9691d3d9243d871eed4672926059973ade7badbb88961868e5ef} +x{b943affd10c2735dd5ef10376763e44ad0a848796e28fd215cf5c56d124d191f11fe22fd419ead954a4610b0990fcaa4} +x{a579968409343bda51ec7ba8a4870d8bd560c43a313db0564c5e6df8381d7ff818ffb4676c9a06469ab14d00dd26b00b} +x{b0fb5a7cf2df5834f822e44e6efe63211db7a747b196c6bc2d1605933dc1d24f75d8373d219da0210ebb4228d98cc4e9} +x{967512e3287fa5c4c0093dadf799a4a4053bf95574c18688f9ec9896c74978862517d118058590511a332ca303f42efb} +x{80532dfc08ee2b181e9c591d23c8aa53ad6b4dab54b87d57c1530cccfef26bc53a69e6edcdd74a0e072612f9967bc99f} +x{a03974bf0c0cd74db34d19a4a417bc5a4bff8a2a7566728a8b411317b2ae1c85d02eb17e955264a7439153876b41208a} +x{903f9407477a39f67d5bbd9b6d9a353470019d1f3508fe803a13ba69b01fee8713f468db4846b01d4d4e9f955b87f55b} +x{a7a6df5ba7ca5697aa90ee6a4806346d3e2a6b9aac371ac1aa2dc48616c4c24d236a8e8b4900f9382bec9b21907133f6} +x{b98f676715d14957248d0738e81e5d5f5359391181e0f573580539751f3d2311264aa8649eea66bc7016413e69ca7d01} +x{ac77a4b3a57b754a63d7ae75bc916e0750fdbaa01115f038c7c60f621dc6b0fc30d7e5eea1f0d0a533c90615bbe4429d} +x{9561be8f41acdee26b2d35c8812f2265a7e96f2964d90d1c4c26b057381d4f5406891c45c86c27ba1313e2d0938dcefe} +x{a61cf69326c454b9f25b54d47f5f7209649992124966b2decdb201e4fd469200a91ac95c8d606e856b02cc01553d806a} +x{8f9fb79917775751341b7c96d5325df771b9450b9e1a82d05a3674586f8a374fc4eeb7e2f176b96f18144f8ce6104723} +x{8830d4880c14d6ec69305f09d0b7f5d138efc37a1f8fe3d916f51c96feb6c4d6ef51e1a4d574d6f06b0a5c41ddc8b364} +x{ab109b1ae29d1687ebdd2d1d2c59d3196ea2afe222466b31ad4242f94a040c81e06e2175ab6f4f75f4738f8d7083e551} +x{92b58f175d394c5e5ef3bca7c1f63b53e6f5443572194b7122b6484db96605141c0fc8ca0a670f553c61f58af0f58ae3} +x{a3ae85c74796adfa4efdecdd39e014bfa26e69c9f14f69e0383313c7fa99768788037d64bb34b13826ab5a969c43b334} +x{b49f0e0bc429eb0016d2d203fb470016cfdcfddc30fb7c7c4bd6f10b77731f8bb2b91a5dfad9200b96a1201ed0b4754b} +x{a82a80e0e24d94c5cd6c66d0a8a937aa6f447678b2015f56d8123397f0165456e7000ba51501595a34203a9cbdd88077} +x{a52cd7f09adb8f5bf2fe6a3d206f795dd3d2fbf8c50ca54203c5cc04e9af5c78ea72cf0b2f5cc9f40e1ca9e995ade465} +x{b271b9a754c2cab8cadb0c2084c525ae4321d4a4200110152189b6fe9537156cbed646816c5a3b8458c8f879bdc2a2e3} +x{b09b2fa0f1f5ba3857c8be27197eb3349486c6a9b9e878e2cb6036e79ff8c7463983d73d28d8e9b0f119e7a3fb494e73} +x{b9adba35b8a1a01f5f6f6daa26e3bfbe9793b8402eb5e3e2aeccfcbdb597c0636ef8d4bf2c8713f5cdaa1f6432e5dc2b} +x{8de96521d0ec24ec97e69da3996389c60c782461a894a67b09562bd0fe2416e1d3b83c241dff07fba400d0def39dfe0a} +x{991ac0813bdd9a59ce2322a90da2511d511a12855b09df44555cf43b48296fa9869ef9df66f359179c706ea2e2a1977c} +x{978eaadba569a36fa8f5cc0532803b76432d51b26bfb2f3eb1841db325ffbf4f1f72be2d478dead2b79677cffe1331d4} +x{b4e52c231a548b29f496e4589afd554dba83b5db9565091eea0c4c79a10163181be836e15070b88c11ce306e8da2b356} +x{b928dd2f764ff18bd663ee455af3ed5518088a780fd3486535eaffbf5f55979ac115ba2f745fff6438be6623366c5663} +x{ae48e5fb169ac93073b1b36eb20a93fdf5d48f6ad8364a441b3dcbdf5761b5caf84176017e879bd2cc6e0efbe0dece21} +x{a4f81f4f3a77a94d3c24ac297d376418a114ea16771ba1b9abac90d6a048c3ce4ba67a724dbd9fc84d941838ec946aa2} +x{aad763ee3c5bb1272c24449f6458554039e3370234542b7131dc44c0b1f0f9dd18890b7048e690cd208ad5e066544833} +x{b05ef4dd1a820b49d0594240e906bca9e716cd4bf6d45a51d5d571ed205e39b6501930782cd8573d51963d5a0401ea5b} +x{a027e8dc718735f9acb9b2f06fc74052bdfd1f2b7ccbf181de1ebf7080e7bd35b7b8fffc825e7f6fe7aa75a814697d3e} +x{b07c797102e4f17ac8c33dd40081cd2a502ee2e4bce02bcf4eccd073c51d7db0ef4cccf83de1b7adb864cd38f92e8903} +x{98d211310a79d0da3594e88835e5b8cf944c61b1c4199b56af9d703451a21e55c38ba60e9cf566d677437c65d8fb026b} +x{92e5e8bbe9ffaf880adc98a42d3e41249b789c94551ffb380620da4cea22b163ea9ba8cbdb393e7dbbbc9553b85f4445} +x{a89604f3c9920aaaab0a40a059e621e42fec8902fb15f7e3fc24bad435386eaffcda79e94f52daf9b37058d7eb6af895} +x{9372aa0f3f96d683d81ce18233c326ddebca93e6f29a9fce651b1cae20410c1e93e54990af18bb55cc0b97dd3d4ae26d} +x{a9c4b9b1ff3b74ea6de69a396be9511a715c8ff87a9b33e0e74f99cea0d823eb907cd127ec06cdfdada16105cd973163} +x{a10c5483b6877478a90de5cb4fd2f23da77fca45cb6b53a8c2559b4e310116ff4feea80f308bb296d3e8aa5b00f1c40d} +x{8148b79dc931b103ac4a15ba1d613e8ff3b54941708c78bfdb7d8748c6cef01949e09d6a67488f7c12801f0c02b713ed} +x{a2e4657128e1bee011fee679b7fe7515335766ab7f635bea59b820de972a24dd3eb3829c875884143f223c03cd18c8d9} +x{88e8f1442b2f54fb6e882b71168dbfcfae30f73b422215d7cfac80e87ca87da2a235c71f0965d5428c3654a7cfb79235} +x{af992a54c30f72966ff2b5fabb01219812b189d501ad7d5f6e1d89b167f6500b1908b995bb1d96ed27ed74fed800b150} +x{99fd4146e659a523b7f3be89e6225849a51377ea49d8fe12b39b39ab926ba59f8176c6fbb121a6aaf4b47a4f4a9df89c} +x{8561e48d685afd45b2d0f6e7944c9cb87f3d3f7759cf2d40a9a67fa202db25dffe1380ff9028c6692c14b05fca52bd65} +x{93467762e27dd2647b83360aeb0b53b27ad1a49262191a83143e109519414f6e783109362d1f6f6c062f633c4311e2e7} +x{b2e9357b2a7e6dbc0168b7f5035e9c3c5f49f47702dddd3e6b08e235086780119a04006909aba277c54fa33768be7585} +x{b9820304d2fb65fa993e9316d434c21d4660e3b47db4bdcb4bc6e24dc11b1cd6e4c79d5ee66cf12aa9477d9d903434b2} +x{849cde94b4bc6c895ed590db92577a454577fcb2492aec26ca4df48a650b6252a69e7f43ed82ca920a81703e9f2f40a4} +x{8f2139e3eda2efbf6466768d5e16679e9cde6607fb15cdb1b91f437f232d830717cffd60da4062c3b5eb382de8330fd1} +x{abe47bb7af31ec2bb434ac94bdf514e21c8620eed7943545b30f4c1fe851f9413464550f301ca93ceeff925869cbb18a} +x{8130ffad0227ccdf49b6fc98d818baed9032168ad55b2f888af636a7cad52a0411bd8d699c78f63ee3288140759547af} +x{aa1760f885bea6903efa5d557a9d5c9f4cb54ff34129ead9e9faa07c0a41d066b667244229627ba5797feb984537f8df} +x{98403382601e7766acff837ada3342b15b744a8623ba6e5a55cf8df199ba0c2cd5cc5fd1aa319dff980b11bc6a199d6e} +x{b8af58fb6b4f548ff6918c42dd69608b9136a8909edd73fcd2cb994a45a627c6dc26793b7c69262f3e8892d3bf2eefff} +x{b2e385e6ee0bcd709dde65cf095f2d9c36f315ff06e83d9597df934a1d7eea5fcad77de858f3ab094772800d491e3819} +x{8c10a30693b4b1b752ae0aaca5c6dc656c871085701a8cf68c5c7958dbb896e8798b616fa0fbbeb7a2932adbe0f308d4} +x{91b0e15e00aa788d83be05ead90be662bfd17cf16cd5da705d81b3acaa7d478a3bd349552c1429652a64e3967833ae62} +x{8ddfe0d8e41c12332f7c5e4310899d9b1be138c80ccfdeadccaf5e74077e13aad63f4bd508290ded0e2c40c6628ec035} +x{94c43da38a8ed19392a8662d5ef7c8358eadcdd4a566a61f6a4fdc57cc3aac58d8ad2c4e61f283fef9ab5aea324c080c} +x{815fbf4029d334d63bd8f667a6684004714415fee64ca97c60b850b188ea3360d17299d9ff6a332f89ec561c179167e8} +x{89873aedf223606eb09afb13c34b1b0ba65532aa4e9864cb588601fa42d69250546214b2498e5047a6fed4e09a0e36a4} +x{82a2bb33c62a75abd2ed172d14abc0ef5637b14331c41b6f49b42c2297feb277566975a8f2c720b04474c221648dd95b} +x{a46d8964d9854114e82f0d98562e7f3b0b0f38037f9050a47645cece99f75d9cdafb304a8bf7dcc1049ead05a6086eee} +x{aece4f7f8c68a959f88128502115201de816f748f8f4f83d406f73806821aa43d204d2d02b487c44266f1559e7eddc69} +x{a999ffbea55a6ce252fc4661c337adc2b5675f999351071e6198570d5a7e7e5855ce0312685d691427cc4a230e1aa031} +x{b57e85d1390f113c620a772075d6edebf2f2379c7a3bcd469358c128b888f73c947d00f4054df5c2b220082eafd02ae1} +x{994df161084d1ac510ae0996121c74ff8c16cf5bebaecbf21aa1da07eed0f602654adaba025636f0bd338e9bc218d942} +x{9018e9e6318c824de62f2a3278ef214863b0c98e895e9ffbaefefdf56386c3e5c20f6d5236d4ff7709fd015e6abc3e96} +x{a6f41705254ddf479c3d19d60b7800b091561bc7790aedd2d33fa0f41a8d5147c81ebc347f4f012aaf363b3187bff990} +x{8fc374c056f5e726063f59e84f97b066af2e07e599d6e2e2593d8e31bf5665afdf3034be6a529ffc434e2b365b94fb01} +x{b05b312f4dad2ffba9b50d651607cdd19c22f2eba0cc5384d2743faf74f0f081533a50f7230756bd5638a8570fe73d56} +x{a96f25869f617c81188dda1b4d9422dc2a8ded653de0e1879f3e5534b582fd332cdeb13f6d887d9b28f653ab6ac09f88} +x{8f6c0bbc567c089a3b22a381d3e5f5915421f27563b7ac51318b9612515ce0d3224d40b3388983afe2c92d2da3844db3} +x{b2779d398c462262fb1b5ecb4ebc50d00c44337e6ed20210ada4b8b6321b99ef262455e50647a61452aa2678e64def15} +x{85ba9c1a72a420f960a443e7724835e08023581226ee4912a6a1876f40944c7262f92e3bbe66796dcf9c706986917671} +x{af01794226c596db4f502475eca86f399df28b1344af6a54b1faba31158702d56c57f1b35a9909f2458734f58c04ffd4} +x{8918c724fd6a5530e76d3518e5ab73a7144685769b1553861e0441cba0b0c307a68429923cb7c3cdc577e3dd9e0f11de} +x{b6bd93d8442d05d514a5cecd64efd5bc5571221769c1a76177376e2e0d6504c7c8196e300bdbdd38ab8514e0423c1dec} +x{b7a6125a2ec2dfe7fe6731bdb7d4d604c473a9f74abe11866f7cb20ca4fe11157d379ed3577b35d96839e95eff110fbe} +x{85960eb8968b9a267f65f4f7b2ee1e9ed676e5815615aa4b29abb6bccc669c0232401e529a1597b67b0cfd310e6ca5db} +x{a02101be2ec64317b52358933f7b68f0d49df19404f6dc035176d3313eaa5253584d023c43eee1e8e2e627b253fb5634} +x{8baede2de9d880a5e9e4f3c35c181a1fdc68867fb432ffb53b530a29daf52d844389cbe3d7ae2557ee00feba9ee2d7e3} +x{8f1eee175b515d5c4e8784a03c7192efcf93588d476eacbee95d01f3c7cba46be8279ba65e74eb7e8983383908b07cd7} +x{a24b3d111b7ec72a3281402e9d1be91b51f8e71d80d27ae62e6c75e5c8bd3a860f45de65e9bee657d400b78e7a2c5e16} +x{85d13e876e384ba0c55f72bf391ccf65248736d0a707e143d65146d439e945abd0133812319626c9e8092f5fefd54c45} +x{a0deed3a9b3cbd8ea5ea6497ecd3afd02616b953e33cbe8b117a4add6cf8cc4398268eec7e9e0bd91899472410a452ef} +x{a149ae720e47fbcbddde029074ef65969e587d09a8d6cd3aedeb63a46b54bab17b84216feabdd3bb81341c6a83a243c7} +x{85913becf48a087fc75613d24b332ccfda08abb67c0b8bd9bcbf5f0a8ab1bf6285c68d89fa80f6ec18c666316f19088b} +x{85685bbb5bb114db0d337bfe51089039749e7afcb7099b6d04e668e10e52d29256e950532b4684333dda9a094c6fc7e8} +x{a7327cb5024ea8438403f2836ba21bc84460ec2f267d399e0e0fd07ff9344baf689744ecfcb90ca9dfd95b157ffdf29d} +x{a3740c34b3dc44df50ac1fe8916a592e8cc86fea02ae29ef53632671b69bd9ee3c6d8b9aed87d4b1bbcb9457486bbfaa} +x{8d2c4c61467fde9a45d1adbe02a8c7d2e925e8f6f126be1b91fae1d8578311740678ae9e280c79620d08fcd879159ccf} +x{903f21545ef331d5c312801b78b8675fbf093ce8d3e4684da155f80f2153bde840f60436ea506e1d07bf5cf8cbb566b2} +x{a2ab1ea627cf7b2b3e3f4a358719d5696e9917b76898beb0b0519962cc34cf222b200367ecff032052023b0d5326e5a4} +x{b79fb683f4aa467dd1859468efbf53214cc9301f38958daf8c6f313274cc70a532a167cf24d7d023eb66cfeacd6b553d} +x{b202b37b8f801d67896cb60227a72138918488a46034556c90d00cccdc46b86e4d77adf3991e222f4d383f0e0cfec46d} +x{a721aab3a83aa009cc22fde90c0a5f1fcb42712a062a68628ee402399a81c4c3bec1a58ab4d1a37a4d4befbc275848af} +x{8fb335baabc4d561e133b874c98bbeb8b1787bd7b44fafc9dbd02c85d98db6bc03f439d285c7fe17c2c751268e651255} +x{aabc892d3f6b3dbf04b8f1f38215bd58f23f117e6643c47ccff6803fde56f0c950a5885d7e2ce97fdaf01a1ef32ffd9d} +x{87a0549679757add0f06d239aa760274c57ccfbf30e722d8a6b33c76ff5576d354f7a54a53073cc3babce0b0465eef3a} +x{99e84647be315371ee2714fd2524370daedf5e64c343a31cf35d05f0737f73ca97ac1645d17780916c73317cfb7ecce3} +x{ae30f745530dbc0096e0dbdf8b7547499eab8f68c5ffefa05ebf6b735b3f94df7161c09360165459d939f562961a7af0} +x{b3ddcfb849a79096763ba2abe2c51b4b0666d548d2c19be8042da0c02956a5b13fd4166ef3002aaf63e16f18ca27e777} +x{b7cd98db331a01c52012560297ea9b6a208bf7734164c35777db809aa1e987b5c1ae20bf62e68a6f8160f6606db25bb7} +x{a72480094bb69733ed322482458f26732449ec5520b28c70543bfb0e291aa6b2c454b9a67321af82a5aa614f3110a8d8} +x{a52162089b34711d405613a42e715e1f06f410f9e1824d91c10db392db200fae8771480ea75b65e43752f5c38f9325cc} +x{93869a5603e08ed1431cc308a64a094c2bd24f28bf1e8ebdb667e4da4af58488aaae3cb078b0d1e3ea92e1cecd902f93} +x{a6e3a7e4aa049bad205ea2d84f10e1ff096796e82242cbb06b8657bee144d8daa2d5ae23713df4616221a016fd269578} +x{8ef617adab8dda4770b870d42d3f3ce503665cbb55ab603f38e9cec0cad1e2f7f322d60a42dd2416a21c783a280a0e4f} +x{83f5fe871d91c771d8ad09d26ee4617220721cb4f2324d8b24ef21bc9f5f059949a94d2cb15d3011b86178a4eb52e88d} +x{8d528528af05691c4f5085aa3747fde2ba2716e5a79e050765e83c8e52927f32033b994a45b5de5ae310e055dee1dafb} +x{a6ddede616eb02303bbc8569d569082872967c7bc0c97462ebd871cca264cba03f114780e1436674022f11da754ec23f} +x{aae1a58b985833f827df87146e157900943c16c89d15451f464e17c480b8949228f9ee9117768f92042dfca3bc2e2290} +x{b74e17e474fee881d4a2aa803cb0018e5eb94d0d751ec04f2f5235a85c46445c94f21f314fdd6f6b6b862c8387976faa} +x{91d1bc79e3abe5156a7fcef084136622198a8bc4fc5fcb4d384a3c3089bae93ed80349e0220f168ede6df2992674b4ec} +x{95c1d6d602a03b1fe2eb36308cb939f7093bb9065a1441dcfe6cbdb6fd0051f1a58906829334dc4675c96a9835b23ba8} +x{ae07d4db6f10df60bb09d3c187c75953bdd4e7a492b3be74f753074d330b52bfb2f3118ba2f2561d90850afec527306c} +x{af93966afc0ba0acd2b91a254222e672dcf204fae9bf405de574f8c1ead72577016ecc5d45ddd1a5c67fa1bcf0e6f765} +x{a51adfff1f07ec1b2ba7e7352d262f54bc553510e4b6066b683aafc2748958d4b7a2016902ea8482889975ed61d5c85a} +x{a20433f93219eb9976803b7bbae5247c641bcd11821d5eaa7ae3a088faeaf8356f05c9116f28c78ef11cde111f1c1be1} +x{b6e6a8bbcba88ce35a38be0d6bacfa32cda83937cd68d504afb087cf02ebb8882ecc1db14a5a903d1abc3db589963d12} +x{b8adc04ea1f6ab4bacebbe38e5674d3cdee56f097455b0e94e02ca08f667af82379f8798c5f026b8c5e361c9926a3c3b} +x{84be6bbd912f3eb274c9fd12a15dfaa0a908eaef9a849b2aed2a620af2f11ccbf880d419a89e8f67bb81efce710afca0} +x{ac4e4d3ec168e14985f73c7b30469473a6e0c89db0f6649435aaff4267fc1ad1989de930ae843521253909d1032fb6be} +x{a6cb5e28f19b8a235f9d3e2097528650fb629fab591f2a5d32793fe0ca0b26803a4a284aa132478272ce4c393938ddb4} +x{acef262359340b6fc7104d2ad0f67b420f66cb1f8b51956257942a2a5b515db3c5b03a09c09bec9284af2ca4a73507b4} +x{ac3f31a5c3ad602dceb6fe7a1a64e167b268bb8493ede809938e2213b3b1608e679918b37a069499f95596ee1735778c} +x{8b774778623dcc4d48a049d75c9d42ca7b4a66f79583377fa5ae59c2a3719a97911f55c1768ed655fbbbd16540ea6095} +x{a8ad6c5a569b856997ef600b1b1728e4ad9ab8606d90619e2fbc336d4562b9d38498f69556e651b3cba7d61a69e48eb5} +x{abd6f511bf89d9c18e7fa0cf6c8aa0f028c31ff78b5d980136e1c528d593d259f1d26ae4c79576a47af8996396b76094} +x{a4479f00869f56b0b389d79ab9e23ec2cae1460593f6847b3f2bf5415929db91a0b94aefdf093c99870b1f66c6a0ae64} +x{a03f2529e611683bfa7977b08f27c9f5b1eb962acdaaa8c72933ba22376cf461a6fde95e4102a25908ce056f14ddf525} +x{a1b6f7748d7c2f7e767773316c7f4d489bd5b793cb30fd750f2a33a02b6db34f64c7a4180a05ac6fef049392cf87e70e} +x{93528f173f2dafe0114d688d33c4eb6b33753fb53c54f50c3c7b5990d873593dd6faa65906f1df7c7eb1bc1f6ddc21f7} +x{ad8996fb3c231514562b9926628906edf4dc6fdc714d35a8dece3a235c3f49637534166d1ab0715fd7bfc22ec5d17e26} +x{b6e5ed2b40848c59db54850ca64971759de81d0601a56d552060f1a6d98305ee97667cefacead2c3dccbcc58b75b1c87} +x{83fb0b6260971d174b14377e999617ab4d2621982a3d26555c27520ff8439e2b3585d12a61f34e1bbaf93779b89c2907} +x{8b6cdaaf5946847b1e7b7c6d2d5fa8ea1e6c2fc9dd21641b936fbf1b32121fb3bbf65dcba0df83b822e370c9c35a9a5f} +x{872eed4104bddf37251a144cf766ba3bc01bd27904b320e42b6122831087a7da0c5a5cf8dc6c00a4c8631f7a91dd3fa4} +x{919532809f2e0c285fbb90a52dc9e3d5004eacdc71622bcf8144376c0a63b995a2531ca0d18a6e0ca4df50044626f00c} +x{8f1d94624744ba2b92ef07663324c7784081e22911de67b1dd1780942c9bde1dd9667914e749829d76e87a1e86170485} +x{94a257f057123beaab8baacf6d3fbbd932ab05c84540273f3ea69633fa9cefe0cebf778da45661d9dd2f617dce9fb960} +x{8a33dbe5e72280da6e8d781246af15e92ebcdaa0add650bc0c13535537efe9ca4d51a1a083c952427d77f70954a9430c} +x{8d78bcf42dec8ef23bd0fdc515115cef37a89d3d2f5ac0723374c4076a3718600b8505eae1faaf854728ca398dfb1649} +x{952601b96441c611dbccaa960cd3657de437e4ef6a0458e4078c4ca45c90a0c90eab2189c6512691bb615ede1a0d835d} +x{b5e65e21d0b97ee6fbf858e270bc51d3cf2a95e6364b94eba8d9b5a5817dd345aca03b631b9d30c3fa018c482184303d} +x{938af819a7f9662a49dd1353191b43f7c3ed87ccc2b4472dba0f73fd9117177891d6fdd754605a0a98fc9d93b3132d5c} +x{a83a552c4b56d70f98d95c68c022959b1f0688df8d13631ba960fc0052b7db74a58a5e56e7389b41c05e0bc7d2ac9ba9} +x{ab68cb8be7456a2086cd3695e1bda4135da91894d2f9b49560c39a9ae07f7d91ac2d453c4be9497a7b8631ba83aa9cc6} +x{a5e60edcf107dff7d57e51c250862b3eb8c106e40d452a95246f2be08d163a333d626c377d1945cbd514733b5421bfed} +x{a72f4482408250365ca1648b6c9a1a6e0adde5bfc1e47933bb93bb72b4418e7782a13abfa550287aaa9137d44ca1d17e} +x{a3e0045f65097ab4951747733730d233df35935a08b8934148846c4aa57559c0cbd74de20dad1ebfc6fee1b26b94b868} +x{a611d5c5c00db0c6c98c41c74f5f4a6be5523e39a2ec3b172e4b6f142100f5cd700d7eb21d432c4cf3b8dea3fb981cdc} +x{8ed47f35a890e5238ae1445fb519646c17a17187370c10c267723cb3c95613da9bc4c9d3fa5dcd0de052716b2f3773a9} +x{86b93b4cdc3b3186d8ffcf7c75472b41176fccf3845d83c5e0172bcf6d04443ec644f8916c39d07e6a3f3e947212fe7d} +x{8290d28317930e75ce905397d9b203afd6bdb8daac8f654317c7fde3b61f36e67e517ffb43db58cb09fc67f571270119} +x{b34fbdd89c0fe771088ce52e16e1a166cabd4643e8848560f376c56f8265e478998c5dc236fd693509bf1615bff5495d} +x{b7c3cf81dbec8f4b430a6ce91006b90b8e90d04f5c299161e2db4caadede926ca3a082224342d37120ef42254eabb3b3} +x{a072b63854a4c2c6d003d79fd959ff4e6d2fa22d90bd87de6a08b568714caa6b9ee1a43766fb813e01882a9a48086758} +x{b319caf57dd380fbdc537ae09f5f59f9d30f3607d9ef7410b2c2d8d88ff8e64e66154c363299c67a8526b5f07d507e2e} +x{878fb941a76dce335d77daba3bc41cd9d1b145c4df980e5be9868b37d3c60421e3509d46ed0ff3ea01e8f6b717996774} +x{8d2262fa7cfa4fb5c1b5cb6daeadabb220f10171e4c041de13ad9b5aba30599ba9e7f0bf2eb19a446a3a6b0fe6720fcd} +x{b249b90858c33e11fa84aa6f412986a886743f7a8a3b81d59c752baec291ad58d9d592aeeb26a00103b8bac4f882eac8} +x{b02aa595959b64b09da7de5ffedd316a98fa7e913d442e4bcdc08a584302ebef651c22a5c06dfb891504c53ceb15e5ec} +x{9077c6fa2e76347814dbb1c3e9291b4536a5d23441db87ebfcf453b2a07cecdd7a8aed655a71c28112c826ef146a5b85} +x{8368584e6e9fd52e8dd9bfdb58087e380b99e9e8cbc551dd40d6d6e4e5207d9384ed6295e03704c00a874ec280b6cf6f} +x{b34d3cc4d5cd507fbcbabd2c808c068ef41d3b8efaf7e5302ead08301b4f79324f028968dca7e0a56d628718ff164c83} +x{ab9ae1b9172c4d067445552f7da039141ef72ad4fdd82462182d7daad8f6fd3789d2d40c8174dda3fe196f8665c48f64} +x{b95ec7ef32d3b0ec97b28073cfc2eacdad7c4a063d5f31c791169bbff0ec4496822624b67264002b1a2eba048c4fbd38} +x{b2ed832b474cc84c4d9296bcef944a26a5eacbfbb411cf9834010d3e67127c36759a92f667b46078ffb9482fe5ba37bc} +x{95004b20bceeaf744a40289440c1145b4e8d4f7f40460b38cfe272d49b2abcf99880573ea0dd9defd4991a0620d9e528} +x{90a921f83766c423cfd9ef04cc3faf208dad5d52b77af9678842b8db2894c33d2d8962edfe2c6e8b477dd6a89223fb61} +x{986217666c2fe4711465a2da8daa7d6ee44e4cf32b63a09aba26204b371f296b086f31701e114a3233799b8d2052d7f8} +x{88a94b40813d23933c86e6ebbaf36531c7de89fbc345d7593a62c355aedb2ac504ed1a58aa735c2fabf82e73bba87679} +x{8441f6b6db07ceeb3cda0d8649b557e082fdfd610a9760a811d0302bc9da6c3107d8a22a0c752fa20ef82054017c20e1} +x{854ad0cfac2b94faac229ec7792123fc54377e0d285570ef1435aec0e72d072da978c00d453975415550ab52e8284501} +x{b0ad4b51e7c698f77828d3c034fd9b177a877510d7552025fd3cd1c68e405dba23a7a72d921c4798a6cc237887baf967} +x{a59e691f1ae2265788523bb6ac5cae309420caaa54d4feaffa6882c1542fdaba817f497c5a8e30bfeaea3bc3a6ba4b42} +x{841fdbbdfa848144fc7b29520199a00c3398ef3d78ac67491a9c0f933eee22059f9a0446fa599df627336b1fb84b0145} +x{89a8c1e13030ff719ca22c939f4c84b1bdcf0ed11b6d0ff0deb1c3bf9c62640f80c96362e4e88362f7f7d69de831f523} +x{88b306b8323a1ccd933782e31e94ec070117a02a8f8349b445da66b33d1dca77e23256644904416751136bed9adc0d45} +x{a77b375d16d85257c5f4b996f5514ffa8a5ca31454129d2a25b4bfcf4309f27c97a71e6c33ec7fb9cc57914b3b7baca9} +x{a8098c4186848d9d9ba4a4b1af79decdafacdfea7b5cbfd3536aee6ed67653c6129557836252b22421f61b66c84b2e9d} +x{912569e76a70ee20160774d2956b70965689d19c8d64941313fcb0d61f35b10648860f85be7a81e90ef6975730f2f636} +x{b144b4047dd0ece9b3619bc04e7c971aa608d9143608a49c46a293df2bf2c30facfe4d39675fe23f5b7fc274d07f1b17} +x{89489bc8c8ef1224ed29d5f82370c6c3fef80ea23809673414309a1f4b2941acb049a0648c34cf0740f682624a660c3b} +x{b72f1a424b0c3609531bb9f5299ee2120066dd5561e42a3beb526f8dd32e89cfc51937fcc668834414b7c16a1516510d} +x{8a462a5dfe9b78315fb9945fb6717a27849785d98744d3bf798697823e1f8e6acad5581ed337d4d9e212f9dd96d94ae7} +x{a4d046c2d04306fba6c56bf0c9f546ef1a0b5c5762484c5de70e42d1b6a30d39cc80b22f66933bf3534b1d26fb6cb7eb} +x{ad8903641d07eb96663b0a2fbac3115127b24945a138ea6617e14545cec689dfd162422818cc4050a23a8df42cb08ce9} +x{b50cb2de4074397cc88600126c50da4bb2acbb02ef90bb3b370e1828c39fd78c17902818556e1689e5a7bca50237aafb} +x{8f5fb00cd6e476bed5b5562e934383cfc2f1a2b799e9c1f3dc2e0b0ccacee4734a31ff2d9a986e7c0251778e41bb99df} +x{aae8828201155e602880a4a9137d3d44c01d32b2374e4223576e8fa4ec56411aded934c2f3121526fe2d834e37c713d4} +x{8a074eb84f1ae6d049947cd6dc6bbbbada2aa4209ffc167fad467b44ba3926f3b6ddacae7186c9e155e233226c7fd3e0} +x{a85635c3cb2397e961c821cad4a9945bbbbf53c20721f9f1dba9a8c616b2819625767884e22757c29507f0ed73304c43} +x{809ac8f6102f411e5ace89bafee2b73c8a2f5340d7677c0877eb9de7b7d522d77b79499bb27bcdec06a2434ade31d40a} +x{82134713d5873008449747fb04026b02790c89d9656f2d2b3c22fcdb4e9bf1b328e4051200afd86bf2c7ceda424dc447} +x{96a195a8bc8e61dd270c9e1e2b2ac60ffcce8156b11cb2ec45229fa3151a6f8c1a796a752312ecebd5c5bafa2ab4991e} +x{89192f77e8caa08c0a976650701206da423fd3e4adf4c11c0b12cf693966e2d32a06bec27de11ef76cb57b1abee47a12} +x{89e7e76e55b1b3bde410d10c8c32d0f10c63e1284d4636f5ba73a285abcc9def139c3e419ddce83ea07a9f825b441523} +x{97d8551ed66159c461b1679ae0ae0bdc34f306f4cad6cb39b77999f85ad976f2ee2218f777e4e1368133ab31604df540} +x{941b0de89934fde7ad4dd6ee46bb1ac0d1228649469969fa9e016a51fe63f3a687b536f53eb70e867e11b306b66954f9} +x{8ad57d3d490a57d2cbada20ec81812c429daf3ae6ed372276c1c527dce09737ef4ba3bec464c44165594c8e552b95f55} +x{a6cd2543e60f86f7c976df845ca30debc686413418d559162597bf34e44952243906f249939d06d878e1d942500a7c4d} +x{b2e066f07c6cfd5e045f94f39f1e040ca09cae4b1b8e9cae55a57ca85301787e772f51b15000fbbfca19b1d28341eeab} +x{88242a0a598559686228cca4b72b47d503276c6d3f9270d943e43f6652ac600d91a6245ae3ce365b20d8121ffcd2c7eb} +x{b47776fda2429344019841061308ae5cc3e39e55355b4fa2bab80a79be35250cf38127be2d3f93eca196ef8bfa3049f4} +x{929c6bc299a6b479b7a5ea1a2c73cf7575161f184fa1fa536fed71fce16cc0127df765c9c3d02d5df15442b50e4d7c81} +x{87fd7e06cbdc2e1ffc1a0cf328870fa73cc1df6d4562508efbdd0d71d97866d8890f085e02a8845c8be69840e73c0698} +x{855a53160cd2baff4f69b01af39a8e6486aef4c8fba5b23fa958f8c4ae9a4779e3a171c35ba28a23b63d5a746e0def27} +x{b4e1464b63413c94f636d648ec6e9dabd357c23d7a37c9fcc3bedbbde7a94249c6dec2192702ced872856c92cc829da2} +x{aaaaa6549f519e43b3935cc1d9edcac6a32209ec8f9e9eb8598e7ad1448a4504d204175eda00d2a8bbeb736171389f2a} +x{8a6205892d6986bcdc1c3f8deb7f7301cb9be41a131c7c046bd2515e3b36f3253fdfc8609c80478dcc51a7b66b279a45} +x{b20d4402ef47455ba7d8f4f9bcf9a7c0d402396e6aaa14d3b1a6f1f5d0ef6705ba9dca6538d0e9fdacde8a5e252c786c} +x{a30880c55a04b15d14381001ec06340bf8d60f6c952ec50dcdd8222bb393f88f635dc85d99384a597eebde0693424d47} +x{b729dce9e0bf10d615d74931773c3dd81ec38050f597f7d6005def587526d4c587d7767b30f4108d83342dfff313c74f} +x{a1cced77186993b4215c66ddcb187e397e10a8ee9666986c6ef2f41398bedfed12c087430d81f4a608da46d275b9bc04} +x{862144b431ab9de9c4ceaa784858a2c6788b3758866a228b8e2671433bc56ebe9918a08a3be11d05a7ff9fc64ca882e7} +x{b4205cbe870360c5452b2efe87efe9b4aacb4f7edbb88ff2e414931a8613d686608b583fa9bc053ce96bb9930d4a4e8d} +x{8063a97bae4b2025eef8522d73a5e3932140a1afff478765dc1279b2bb8133d4bfeb256861afb213f2ace1d885b514cb} +x{a4f78536213b3cfdf5ce14fc845cb0a06726f80726740319c812c938417ce6346ca2cc055e2735eeae9b8cd1aafdbe9e} +x{a82edc8ff174d91a5c195a778aa265f35a4b7adb596caeddb566d86b15b4ad446ebc4a7c34889d0f69e6b820ae5ee2d1} +x{85ff418bd6582cd00828c5cc5fabbe68927d8cff526f435bdac63071707dc2f6cf0d4f916f2e52f8a341ad8e3725cf67} +x{ace11bad2e6d2ad1cf84b01c3f194c23d5b8e96840e76444f42a063ef357a3f5376e3ddd3b2031c99400c2f82afdaedb} +x{88eb0d46e735ddbdccc6d3763db910420a2c864895f03f3537dfe49aff54784b181d2d02ff37165b29eea18b529d8f82} +x{b904f873c0cb532c4633dace5b389ecca9513ec84562ea714d52e1d359c97c567c0267c4c747f060e5f6e3e2fa0f2c13} +x{b63791ae81e8abf907f7a6a1091d72e37b655cf1830a6a0bc634049c6f9f4afb597c4389b9636c7fe5e8db52867b26fa} +x{b3294d1fc9c45bb0f080db57cb628faf8e2684876c853390a548ee78878697030c932b9e5b5f77ba54cdc4162b439400} +x{a38e9faa508b2feb73b4040a0d79acf3bf39bc5a62ef30bbe43c8073a98f12ff9e286ff1490c8c9aed3faac16957b7aa} +x{ada99e8309ed1d1fa2621693c8c9e5d618218dde92888a3aeaa0692754e7dd94a4268afbb75550c2dfeaf5764adfc0c9} +x{9232ab744f72c5ae7fc674890d07027dc5541eaaf8dc1edc8d8fb4d5c763053a53697d9e5100ad9afa1e9fc888cf1197} +x{8b87270d542706c9d0db167db7302c5e3fa81642f8bc707eae2bbbbf731b3948dad68cf0dd1c1d69f61a911d1f8e87bb} +x{a9664311d8ac973f6ce364f7033c0d710a98df5ac6d7c3d1df70f78a33701bc0a9a3b2da1113e1667b89aad41c7d1b4e} +x{a6d02f30da6b850da8377c718d2d8ca90d2f1d352edc0abc5c0af2435dd180be4d0e1cade63382c990b8ca930dccb1be} +x{824c864ee1af1691d009e4c7d1d201da8a691e93b62523e22aca2e4b8a5d9502b6ff941851f8f46a203589e093539bab} +x{9873aa35cbb7235aba6dfb17cf8e046b84824b4598acb8cf63a20d26cb242087db54aa6d44270e948fa6a4bb3b1a4aa5} +x{929f1a544585afaa2df9f393129bdf3a0ad4e981146e9c9fd2ed89b1ca61e865c88e7347b07121684229e778b10be160} +x{97952ed5cb54d0451e8cf08cfc29a423a33a1ad84f7e02b00cc5de88a27b23f77428e4c3a49a022617229952dd27ba6f} +x{a49a6e47098ce9ed5d432aeed22a981c05dccda0eaeb25ddb2452d2c5c39f53f781b0840a894cf70804ed300e90c95b0} +x{ac3d8d959683d6db8298d6437aa22378375c5b3a4fdb416925b71646e6f7b0087d0c6e65d4f9beb0ae72358e99c1f5fa} +x{aaeae464badaba7da40bc59ac873e1f07fceedbcac915f33a94daaa72688c3c49e5717300abe2571446b010416b2dcd5} +x{a2f6caa19c0a43d3d6a3d1af5e8bc33a0bb3a54b8f5f6d434bd9b3328cd3b6b148168e554a0af10f47d43943dfc6566b} +x{85b48b545c089325b055d2b34666d091a07411272aa6ea074b550f9c9bffe118b1f2f9d4cb903e9caa39fe0cf1ffcfac} +x{8db60a483dbadfd71f08f6460027f9dc608df180ccded4a2677e88aba24e72a80d55b783ce84aa787049dc1ca9a53512} +x{b0888ba78b37c36f1c61064284aae6021722ae38ae8f64e6da2c3e13daa9396eb5520b910433d0ee25f36162a5d69ad6} +x{8e6777565dd463b41aba4c7a63df9d1ae5b6b5b1d7d336f67e86fca8280bfc90c1d7e95ace60c34e6b3bf55d28bb5d2c} +x{99275fbc4baac72896a20267af060f21ee65293b7cf8b27d6495d559886ca71a9572f6699e58b63ff2433d760ef2e31f} +x{85b16af1b7c62f0beb9c801fd36731dde735c9ef6bcf97bd29dfddf2ec438cd5cb568d914c7701080a7434841ccb0f1e} +x{a87a5cf9d7c130418cceb93f2b26747d3f70d8a6eb8ff0cec28ab969bc92addb4fc5dbcf5d18dbe21e150ec78a755e07} +x{abcc8ccb7854b76b80a0e6e4d390df544ed8d09daff0818a71e8adc7f4b6f2267769017db965a404665032c46766040c} +x{b90e7b9ca3237916f211c02cc1575d8b8df43313f54feae4c78944bca535ee95e37b63729910f9fc4dabb907f3e73acf} +x{aa968ee64eedc74b51ef13248e6ad4ed8fb96eb5e499602889b971c17fdb126335f59f98952de0e5243a0b486e2d4e62} +x{ac49aeaf558fcf8086def396c8db61cb80ad416a94af50a1b583c5814bc7d54bcaa72feae09a2e162ecb1d342608db10} +x{87ef03700a561ad0299e32ae473c1d724a391e3523636e64c75d8676eb2856ce8189a9e0279922fdd7a9365c2a483e7f} +x{b949a74107e0c6b93cfbbad5dd0a47f64364e5c7ecc55cca0fad5f85c4bbbac48555144b7f676603a5292fc1712c1bc0} +x{869029064f1a86ed00ea442bbc5d330c7a0ae4a06b5595c9a5b57934f6876f3bb96d9dfaef1e926428d14e450624be57} +x{8379963a7f188739e953a4e9799ab37d5c49e4b8f49dc9bcb686371219a04dfb6c55c441c59b2ad89d7145ab3dc08631} +x{8460a57fed7db8691ed1cc69c66116e1544e164478613ade64eea6b3926c99011d2cf386e0d8bb1681ef9a5d556f3c88} +x{8c9cb7d59ef8fe907074382c959b661665dfe9fe4fa328fc93752cc2cf80d431b8799868eaec777013e67966b37ee0f3} +x{85e7cba0dc3614869ccccee0ccd782554ec3821a8d6056daf10285973bbf548f7c7120627d1f0edab7bb29cccd4fd35a} +x{a2ed49318a58eaf3d2211f3c3573a522605481278c5d5aa06ae610928845f030b3455f8cff3cbe3afe08e8bcb5839b31} +x{898c2de6094e5d40e725faa69caae6ae499f2ce0d13ae0fac39291869852d5f9711d447de374942fe7281030cf6a4cab} +x{b59b4d2f3da26779b0c3c33493fd23d78d956e688eec9df7260e622e2228b6cf30b111088e6f1aec6e690a4ed80f086c} +x{af9916b2d4c305532662819fdafb544f4d4f74a3bf5738cc31cbfc0018310f0848ff749be71d797fa287a7b5e2774e88} +x{a6eb7c89dbc44ea9c7439d0ff2a7b302a5182020743d0e54d84048ea668a012c0a808aab9c7809ed9920f75bc1df04e3} +x{8da5e1e8173da17fb2527d049c746f216013a0cd3034be30fab97314d67f90638efeb394a504052f84dd3314f5a6e1fa} +x{a0a9dfea9829381a8a8be0dd6ae9df703da93546d93e5a8e2a0895d0149894fc424c5735b32517305a575936e6d0bd41} +x{afc39ec1ce487612179154f7e36e485626cdcde18593fabcf3a4fe5743abe57d6de0938d1e5b1f45e3861cbe9cff2107} +x{8182fbea440a49e1f1deda5b1973eb1a6555d8bef74271ea56489508ae847db9f2a2e0064c8f25c6acad4893ea3556a7} +x{b3af977dad139de108294d0fab8dcc817abff1948f6ed746e7f6aae1ca15ff628c4d9ef871481b8a05f3e4eb060f1569} +x{b5b23529ae9ecdad0030248957d7135bb0f2212654f8b06b921f4f2e9f3374cf8314ed08a2020a2b81307db91bd31325} +x{a05aee8260d4e96ffdfc3764c6aeefee513255daf8abe5df1e455ad9dc1ff826d0e57eb59352d6f3ca805f854ced20f9} +x{b3d57b48afdd734921b826b6e165fc7ede42a6298d795cc3df87a659f2920e21f6dcac0fb1ec28e145e415cf1f75f15c} +x{b9f8e0bb3f230f87496e6ba4ac104106426c87e1e6732863c28f4ab8b6d752c00d3d935f5e33669045c38a61adc09b5f} +x{974e00079eec61f2c2dd74a02da965d367ac1f4cc1e128af147fcfd4c6940d2e0cc3babcbf5514b2beae2882e1ee3e14} +x{9539571783ff73f8b5172728c3c5af82a1f36562e06e4e79fa8aff690eb5e4e6cb53f0fdc2a1fc2161e638313d379b59} +x{af64b9701e9073ef4cf2b5345190791b0704dbd28b3f626042e1a0c4fa215fda937e996dfbaa07c65d9ca5f96b8f61fa} +x{a10eeb3b9cfc1761bf9a22bfdeac39fa830cf2c52e2b70b82d99c005467243948821eafec82310ff761171ca4a5eccc4} +x{86a5d807681cb61dead165e7b6dc51fbc4d87a3e1ba203d0850a88fa6abc8c443f6e59d0367375e04166319bbbd70653} +x{b68306c1ee04db2c41a5599e8c65b36f27e2ef2dbf74153f50f3ef5a8566a8522268b7131ed8f6244a8e9285b8cc1363} +x{b168681033750e64fab4b54121fbf6dc64bb214eb9bacc00d199745354517e3e1b110ad882264862a91990400eb0d832} +x{a5a41fa143084456fc9240f4a0b0959c6ab2e4c77a8d0fbacbaebaa7762d19cf25e2bc9bf642c3dc4bd52ef9a125d9b6} +x{aa1044716ac0ce361fe3d7cf79cda8ac7bfd5d75c4c9a6385e54c0f058dc37bba7a98066419340119ea957835e3f5062} +x{8316f76c23a66cac4d13966c641a8b1fddec4a8a1da95e418d3c29a318123dcf62680b3d7d7fe989200f087da31f2d47} +x{b3520e472e5206768de36f16c59537ba7a5f548f1e606ef341be57c61c69b36dd3e9b6fe7fe8a36269e9f6b3b6860612} +x{8e58d534f013ab17fe6602ee4a477187367ef4c48dbabedbf81433243dd5138aad25aa483a34cc96665f6fc2b0c43ce1} +x{a53b58680e5397ace528cc8b2fe5e9bb72c40eb450c3fc5ca787cb95b1da733b6ba759b2df4e9e2b774e0423b57aa0c3} +x{9124081b9f24d896cb79f75a667e58bd97e7150bf245f9f50d3556e1108c47c73bdd153e65d75641b324ca75ef2ac4b8} +x{a6f86b395f56ea59ddb0f2329aaf2fb7ad7779b83e9284f9303dee3b29dfb318196f836f8abddcb8368a8e7c2cdaa462} +x{993bf4eaf832dcbff2f8c1e8009f779189ad123bcb12ea9c46e0db23dc0772fb0cbb89796d9dff8cc3c96a35efe33b6e} +x{b3fc6d1fbf08661dd9912d9f6badde61cfd6ad5a8be87024d9b25724f51d0fdf746b1c7ef08fdccb7453563c32d3b753} +x{875284793bc53f9b3483e59ee05094e45c9aaf49d7a94d9d541e1426fd02a0271f6619c1d5dd2ef2ffbcb1429ac65ffd} +x{87b53aec91540ea4bc0d89fb7f863a095e4fe9644b433810e75316c0015663cd0087b5044bcd6483b6de46052439ec61} +x{926d4637eea543e4d3a97963c9644632bcbce065cabffe5af044c73f43294446dff6f502b0d43978121f8783e789b784} +x{83709d410068ec4da081a18cb1000401741e652d2db38fecfc33c2b124cfbc2497ad490fae22c460905066eea5a0295f} +x{805b9aef8db25a170b664495fe825c92c737c2c2d42c982a0a87161d3e7ded0a75603946fb68e2dc05525a2617c950da} +x{844f8360c42e3472b8e1f0515be2b17c57263569f40e931e96ec456338f89f75f41998eae7d78a32d97f532dedd93ef0} +x{8f8a897dcd7a5a3c7bd68c3e9d7a742c116273337c15c7518264dd403467a26647573837ddf08644165fe87dccc8a263} +x{8b83e1982cf15c9910075224a8009c3363f2c1c914f2d74dc88f2d1acdb17bac75a838a56d123f8a6746b611b1105b18} +x{b27d8d49ee63ecf6f4ced8bd515c4fa27478e8a70344ce098e9cd3e6dc4712f3d24e47f93d23242571444cc726511865} +x{a3252f0ad64cfcdfe330f8939f8c9ffa477ff17cd45929f7fa62ba25a9cb5af0f83a070d141f315cc6e82f4564ec4f64} +x{a6bb5240fd5ab570f4b5bf8836c34241933973f0fcb537a124dff7ec545c1c55d13cc6c23ba1b7452b9aabb2b66dcb37} +x{af83b1ffb771e0698f9b2a7ffef6df235b18e89aa90a5358abe82a2d9b077e08dc1ee11869a53b95519072adff5d26c2} +x{a990df005e123fc73bc97c79ecf34dc029265a66b530687192230689aa6a96d4fd8d71d5d6292566d195b968184cc3b9} +x{b6db2b4d155a26adc7667e84a98ee9e2f57ba6eaa1a0b1d966502890a060ef5acb1b9ac0e0cd488b0d70f356d4ab1575} +x{ad23f7a128230b69b92156de6d12f3d7adca4f17e4fa95ad1e4aba93afeeffa1aec73cfa543b2e9387823c95db18eecc} +x{b021626d7882e973d1dc142833d7b78b6ea7ce6d7c5abc4e5c4232d61d9b8d540a01d0c3726f253702335a80d4873e3d} +x{97d37b022828ccbf20450561fcba5febcbf2627e2e0e61f0259d9aae32b63efd795e83b247da7828ab3a52f40b055c8d} +x{972829ba8a181be19333088f332b80506d5519853ae22d50a1be9fde4eb181f1a00b3e695da8872381d8c663e53ea752} +x{a97af7a23e81bc3b56d245bdfe656ddfbb30b00dd05b358b29c442c6d440c84c46a87b9df9bc7706ad6eb004091783a6} +x{b062a29f4441bd839232e2dde99e329f7e6c043f7f315ee156852fd557987b04ee911ad8130cca4c49cc8e09ceec6e81} +x{a8239d71d680131c1d3857e13d53f11858d81a92217b37aeeb19b634a02441082d966f0b66e7d3f330402f8436ff8424} +x{a1ffe6c1a89d5368bdd0366d4f780288d7856fa6085e85945c382d40931d2748b2db1cd443f574847649376487bdfebc} +x{aeb35f89d305071d9aff9cce962a0320f84e206dbd927a5a9554d5b4e18e65734b1e7c81d02e245b120c1f7566d9fefd} +x{9935f67ac4d2ee6a4c513e46220d67d5bd6bce78e73fc3acd7e4b4ea895f7c99d44c3ca6400b07c925e7c43c97805301} +x{b606626eee2ca8f22eafcc063b961b78ad58e67295f9e81ebebd07834d5fb7b094476d4cf4ba977fdbcee58b8ff91ec2} +x{aa4f50a49daa01f4e2b92fd58f30029c0692fd529cb2db3aa3a6ea0f990df5020ba8c09992cced29d50e88e77b9eef1f} +x{90cb4f0932eafe48081aaeaed46c608fc0d5aaf7cac29a0f28e7a1826882983136f5e91f3d47b147b1f1d252a68cdfa4} +x{8610084a4b1884b49f1a4785c8a485cda8d0719510e0013b31810db813dfd115b31eb1c3e29ac17233e903e102f2f858} +x{84c5434f9c4554d0d5ac44dc84142ff00c3fd20ddcf207c1b899399d71fd2104d408fced0b58d3673bccc56123e7a62b} +x{a186868726ea2fe22049b1dfaa62abdb42ec46ae860d2f60546ece07db5402383b6bf3c7d26781c393a611512c250b38} +x{b2fb64b19612176bc0961538c8ef5d5d167c98f3d43747d95fe2f030449efb61a962fb0562bf4c42e7bca96cca4bcd17} +x{907261678b16023479eac3a3d921374a6a42ea163a09e7a975627b23043011711f7729efa8a39eaa8b97f9d19a336b4c} +x{872246987efe00f8f6a24bd2eeeb6b431204c01f3dcd4ece3b680f2bc164fb65f671551c9611d892a313ffae8ad35bfa} +x{8a35e8cf02a79ebeece284cd83d4499b10e8f3bc31f0bb058dab05fed30c7ec1d790a1dcf22685189853d3c8de81fdba} +x{8c4251af4d9e27118bd59aaaaf2fedbc6a8d5dde289f66345ac64bd566d094e961a6860238f669e2b4170a85022619f1} +x{9798f348d7bdabbbdfb6d2345083ff74ac58db16a6f3d68cd972d8c58380f3f455e589a91beb866d6ee379b8801ca20f} +x{932552f80b6a1a93dfddde98362f1f6f2b753f3fa05d6a21feeb47caa44548c8052143e3f71a21189e22bede3b700fbe} +x{82a0a28b240899e36db8f0ea641a01225c0e148dda443929f1f4dcc7020dc64a56532c0e0c754f458a78292e67b01098} +x{8d131e2eaf0f6ed5b293f22a8523d3c99f7456a5ad866100ad11141148e4825bd041d6870af2db4b6068841ec306181e} +x{a7281362b96c621f04e4f9dad0f09f2fd880171649efb46381ac5846a18376018cc43734971f977d18d1751cfb05c709} +x{a5d0207289aa93655aff791bdd430ea25ab93076d4295a256529411b4a55aa25ed8b3433086512dedd0255ded3ff9a63} +x{8703dcb528278c5c65b410dad0047bf2257f988bac6a11f1fe55e9d9794fc2515ced5f9863262d13daebc487ba4d4cc7} +x{b080c720c764ee177c35cbd1e29096e54feb2c29c68c7b5279916fc32177eae21bdf8328c7477e7a7feab59182f79c8d} +x{a98842b26ac4212e620a9a09018ce4573c02bb64a37c4e6ba91f972744e73b37a5c2d3f84c6cb59bc00ee25915e8a918} +x{aaaff1c584152dbec4fb2b50b91abd0703853a8051cbd3bc536e90aa3b65637ce77ab3dad4e9d6e8f3def0ffc920f9ea} +x{8069968e491d68b934b27e91a355249b2b1999cfa2534b7cafb7adb7a333af7920ec7b628cc5725630c39462b967cb7b} +x{b4da9f8378e711b30c3dbdaea9dd95e0d43420f7498f12181fb5bd3743392d5b5c0f12c1121bc2dd6f325a3d4c268bf4} +x{ad234661b80488143b93ee2efc1ab8eacc50a137aec333ea8141b426e5fd4070c968618d1a875947e08c8428e68c88e5} +x{823f71e9139e4982ce3b5dc7242a61876fbff25b3e9c1b532b82895e8624942f5e57af2c7819a80d716e06e04b921250} +x{b8f32a192438bf2dd454d0d9b831630c54b65a79a79611ab00386dfd99a80e58101df5455084d91a9a9939e108670214} +x{a5f68bd025fe3fb4921de2a081381870d41c85999f1754ff66d270a74794c7ad50d2fc01cf01ae1ef63247528e02aab4} +x{b7bb0c34c3e5da34302e937ca40a53c980de5f43fab50299f98b6d44fde2603355845030a29c1593cf342f85a8955450} +x{83077ae296c08c8aae4bcfc79b2828403433cb6ac48bb5c48eb85d4ce09f61d916947354e49183fe675c0d7f5905fc4f} +x{ade42daf027ed0939428a379dee1d6f52d4d69bd8854a5a5b166b8b1715a5f51b3d7281a0a2a4fa86524775c694deca3} +x{a327e8017149cbc021a583348c07edf1699b26bca4e07b6f79b1bc9dc030b77512f2968ceb47c8f72c81a55dbc293a58} +x{8dfec6255438a25f4076480b80786a58eb3e5d63d76e30f95e39e590a39d82c405b33bae71001ce647a1e3b3822aa2d3} +x{b744e6c66ac37ad90bbdaa8daef65b66a41d6f7c7662e86db742a7d0e52e8b3e6de185c99b53d1d75bd120763d260e1e} +x{9954e4646ef602352b8316de9b9186ebfada10718712d0d7ce646dec72a4840e288f6029aa0c2a0a4cd1749a3fc49760} +x{aeab8fcafa3f35b2b6585c7b573ab001cb1b1eca62839430010d69bd626bd522a1f64eba0a72d7e35e6081f8f24f9ecf} +x{a92ec41af6d290cd87c272d30a9c6afbde28daead0266987cbc24ebb3d68793b3e3030ef1c0fd6162e5d6067189e5b0f} +x{870da719fb854d4e97bce5f84994ca582a7973f85abd172682083bf974e07ab0217c56dbc8668d978510ea6d49ebf0e8} +x{971389abf73b0b18a85a9bf1a5b78ae54af0e9dab2810ff2a235b106ec2093f31c6144b6267e143b79ffcd4c79ee4902} +x{94f929a1834d477597f4d1047d09298676948e7136cd7554de2a5bb89d947c476fb3a9391adb0d804f0304bdefb2c074} +x{b250f0c4310487e162a6e8a8b2362a6fc643772838b4fd0b330502f913b04ea55c88212e83ec5a8103408511905807f1} +x{a3b0ac5a206ed5a9032ed5cd213751fcee66c7d629fe473f09457b9da9142c957ed39c0090c7eef24397669b0d361f72} +x{a151ed4066eafd3ea7eb646def1ffb5d14258a603045e37cf2c8cd7248700e7e1ac3e7f852e2fe7ad5691eccce99252c} +x{9711657a493af933761b8b848b5f09fc872d4ec85e3567c40bb48cb4f922627c0088d173d835b115811aa095dd8e5d82} +x{a5e7f4a06080b860d376871ce0798aa7677e7a4b117a5bd0909f15fee02f28a62388496982c133fef1eba087d8a06005} +x{a821c289f883e5a9bc76076a7cf6f6ee4dcac14d064c76d4a98756f6bfff85cc1fd45f5031b0c491d393869dbf37ab58} +x{b5716cb955ab67df3f9035325e00ddf29855f010fdff09c708726aa08196807ba946cfb70a710dea25ee8209af5cd38e} +x{b370f1a22a538bce3680d8094eed26372201563713ded3308c2fb4998a4b30f92f57616f2d859ef0806dd6da776fb12c} +x{b144c4ec1624abdb6b0b006091ef941f4f785751d114d6bc39269da9431da9991fa23e2b0f333efeb38770a25523e820} +x{919a189511a5d7590ecf34fbe5f36d1f92244db0c06aeaf6fb56569abf30ffb71cfc7c42913a6483a57a39a0ccc90b9b} +x{b9f830b001c45c07a83d1ef9dfab49a9c76fa9c13d62a0678e4336c6031bda6e07223b87a7302decf09e72364121ebeb} +x{af014b3be9c6b92fe8ca07cdcc900c86611e35e32a758ec468c1afc13ce640a7375482d51b8681903372f9c5ecca7687} +x{90293185a10067becf6f10dd5bbcdad97e189504d6a1df630a1028103613c80c15b29e0fb4109337b611c66e09ffb050} +x{b23acf81c4f787dd63e3f8c31ba9dde38b44a455a18b04f7325e09bbd439e5ee2a75b67d3673aea6d2476998bb2adb0c} +x{916efb4510ac05f36693e543384a54c875c5ce811f3bce476a294d00e4d64f27b5ab4d4c4ac7ca9a2c46a2c317326f72} +x{b76b06907a9876f8538e3f58758aa95d23d449dad3caab1e9708ebf51b09b9edc29d04d60ca3d6fda0e2823a4437b0d8} +x{83c0ccbf5f94afa5a7f5e7b3fcf7eb2afd2e656ff327f357f1a4b36f630fa2856ad1f07e51b38ee3a6e92d8075f85fbf} +x{9527d6a088468097aee5e3f0c7cd469aa666f096f054432d2a34df504217dcc5f70b45c7a4923b84b8cc9ca9f4a4b23a} +x{aea834fd07048eb22116cee9cdcc04c0ca900b5ae15e297091ce64c5631cae870ca13323241cad96c81d1ffdee43495e} +x{a9973ccb82ca88c7862fb684abd6814420b5f763416527a4020ed15adb1d5280b71d21e2ef280bfeb3f64104fd0410df} +x{a85b5024a160e7ed3467930b62c1346166e3bc35be18c9a891f19c5f343d2ee3c2702e987a4a1b7c9980dc4e099a7494} +x{a279c5583f81d1b1c1c7f6652bef822f0ccd3364de4dd56132a70fc4dbde3e006c17bbaeba9ca3dff6ea0e0d7dc0bede} +x{929713e325fbc3b9012896497213781dcd7edcf1122ac2e71bf0eeedd4b72090f9b61780f159f89066aeeb29d1b0bbb1} +x{8da3be746b47660268d2f6d74236047f5cc5291b68799ac8bf1bf34e1d035e4c203ecc415e71381a11b3b5884c0f263f} +x{98742a51f3d4581ae8f22b8c8e195d4e87017f502c54862d7b76039958d90bff3c02c07cde47d3e0d6877b4937648bef} +x{aada0601bff5813cec1b849893e2e6db5fff6a1beb605517c77e4dd2722aaa41510e528ccd072a76c10f12744d2ae172} +x{84ea9203ef391535d61ba30fa3a2104acbc59318c2da90d5e6f5df40ae8e234eeee714af1b4715200c471b00682ec3c1} +x{899047e4fb2a2824bf3c612a1040fb6c71c1f7ef0654177144d236455b198ddef003b64bb7c9d3f0da78c32800956e2a} +x{a10af4ddc28d1794167cef4b751022d8f57860a2618ce05a8b5d87c95584f1c6ee2774df7de60768ff81db4f432a3211} +x{93614feda46e422eefb30a724bb519c7c2ca3f743546806d4ba6ed59bf8862fcbc1f3fdae9f17c127255eb6968780b17} +x{a1f5e841c97a4ff52b2fdd00164fb77d6960cba1ddb3477d6b522a05521aac0796dee38c7a43e10d9c1681b38d8892ff} +x{92d976efe2f26ed00fe867c789407dbdeec51921e718b1a18461f795460d3bbe7cd74ea817d1bdea149423f0ad8393b2} +x{a2a3e37af6c9bed27e8f5d7dce5eeb9cfcadd2a942e7e9f84c9d95fed6b1dc7ad7d079f3f5bafe2d44dbbc67d99b0a5f} +x{81ffe874b2efce3625b5cd61e0d276d4f460597907a7f862a0a17a8bdd6778f7884e6a9d80e4c5cda224b2701655c96e} +x{8d2a05160ae509264ae64e056518a0f3ae2c197c2450d14d7f30a85db58bc7c562b5d450fef287d7355e63cbe558f44b} +x{aa3284d0d6e875fdca38b4009f57d7185dd3d8fe58aeda254de4e7df3932d446b80706f754c6d36ac230877a14da2160} +x{85a98b4ee6889d0fcec0fb23025e62a0bd6acc92df9cc2ab0cce430d7b096dc3de22f79a22ed727a5d15ab9257216469} +x{874bf95557e0094df23d3f1cd41155862b755482d3ef1a2707f341a1c66cf5f3a9edf52df5b167940eb1c1bfc565fc67} +x{a8324649bb016038ab07cd91879772df95a952973a19c34cae6af7e4fefbc545a94d12b23a2159e48bd049f57f5e93fb} +x{83b8c1dfeb31c8b61d8ffebf44d54a36af52f75aaa0531322020a6b04df9adb53d9a8099c521844f4e88d6e6aa36ab3c} +x{abbd6ff3a89fb9e14ad17978f088eb4b60af37b02835eb8d3fb7e7ef59342b68ca6ed1fce928446806015951caabcd6b} +x{8e9e5baad181d47ace0c6b5e9d639a2dac88cf667c0a90610267046563afe28b7be6ccd887940b5261579f7dbe6f920d} +x{b3f0b8cf0b5a7c6ebcf0c46c1be6d3c1d0a5a8ff5639188b3854206f2912f384e9f4d13fe1de35da1ec0ff4cc0917c56} +x{88132b949584e6d96043228bd589ca6438c594fdf91b6640f65932f379cc94a02e294e9d27be40e3d889b63d33c388cd} +x{b449cff96f2dfe5bfa879b713b081d48898aebbcae376c5cb32ab1f2bf3a8eb329f3aafcf6c251b55c3622b6a5036a10} +x{b705ff85c991b76587c7ddf9dfa144b25d985aa85b0b79e3c21d2229542388d9e66bfe8aadd511229e64c3c14e06bcc3} +x{a1f5ecdb881f30fab751b45c17326d04aeb3b67db946b37c3ec9ca8c5608d949437612e0d08e96c393d5b8110d9fb619} +x{b53734cdc0454bb8e02789f20b414e3461a73a347aeed2c331ec625f35cf07b44e676d568cdfb1fda7e3bb46fec2a179} +x{a496d69daf6ffeb228106883ddc885a7df0290527b4d9ff902b446df6b220842c0040f9be9fd08d8e2c17731d9d6355f} +x{89532cb6bdaf72d8e430e8baf25a94ea475328edf876659039e71b1804b407964ec043508a81fc23659ac5d225f81752} +x{aadb20736b040c633d4790e0d30748ae047e86efcb5008b586f1bf2dceb99ff4659711b2933f50096ff2af89d9bc187c} +x{b1d65445dad3417235c059d084f23fa5407c2de501f3501729bfe9952e7a03c2699f7115130bf3cd7f3878be3bae963e} +x{89cbb614041988d7f15e4a2cd7552b4c54afa224839dbe5076ddaf4ef8c30e661af4080f64245588fa4ff71314a1ddb2} +x{8dec221ff90b27567f53bea9638293624c5fc64572a32ad93651fa2172b37132195b3d4de8b89df6809d312ddec8e554} +x{89700f819dcd49c6c2c6586333773f3a67043bbc780c9ca4f05dd1a48035138c47560dac51c7e0e58cf238b910bb8001} +x{96abae0439028d53d35dd4c0ec26dc8a4ba1545726e25620f0a5ce3901ac7b185c9315ef46c0a29e10d8f0a0c7c0fac3} +x{9799c21074cd36b98d1e37f66dc05741c13f463b893ed5bce9fd2db604fe95c65f23d07015eb53e2ed9fcece39a2145a} +x{9119782077a9ae2564124374d877b0835e79d9de524c6cea6b1f3be2e1f33417040bf62bf064200c74c086d9dde10084} +x{8075657d35885a8a3bf5ba8087a5cd5b089f894da72ba7150302a0e6adcdac186eac45cb79385445e3785278711f2091} +x{8e2f9aa48d8a3693c73995113ef3d2bb8c2c37f8b528b2e8a9e52104940b1fe3bb6df234eeee099d445c59dab9eefdd4} +x{99107a6ba9b0717141c9c36c8a2f99a293e0909da65f20c44594b7bfa519de73c2c93e3ae651f94ee7e7787d16e39ccb} +x{8239a6c06392fa5854bdb4a3703b7a38a6ee44df66d498e0c3afc7381a61f335012835bef8a0b558630f1e1863a11731} +x{8fdf5c3d7bd9d5d46a0714ba236ebe0f9f8f04db756bcb30f49e87f758a28f7833aef65dfb1bac9963ec945c9ae69314} +x{911419794a5b85e78452a8e156eef297d5f10a0b5488b215e8f7d9a757f88eb7f2febcbc4f2b135181f9a0ec5c8943a7} +x{acfcbcea8262c87fa851c4d6601cbe9cca7a597425f9aa4f002b518153fe6e9a84da7185a67bfef2be7d07de638617ad} +x{b89acb00a4d16e56460ea0bab3f3f5754eb79220d60fa8ea6d5588f20d21a4d16f38107994b2e350d52d5565924c88c5} +x{b0bc0f14093c805453040cabb3a58530b5c7d75dd8ed2499c3c089ae6eaff8cb90fee7f4fb4a9a18ab43567eb06b8bdc} +x{ad3d2da3b07f0d9688fddc6e19ba30dfcebbd3a5af3a3f791e056d89650bf98d931ebabeda4338d8196e86856b3d109a} +x{b501ede6b849057031006a356607df1690206fbd337cd6ef1db764aa257ab09818af900587a751bbfa7d384c0d542c35} +x{abc8caaffa2225d3df4aa9020e517f57561efce8bf1628d1a75ad7e5c1efb4469ef56e2fb44427c740aba293e1896992} +x{a166cccc21273eca781e33dce0769633296101a1e43515a120f027d06e110e5eb7ff1f6a1a324b9c9315bd89e12819e3} +x{81c29db55f0957d889ea8db8e2a15c2d7020d50f1f9f60ccbe74d4a58a9aa5579955d4a73065614d556e443551f1ec51} +x{89024f719d34cc220acc52d4075eb1d69a7d3624d6eeca3c0e6ceea66975c94947f6001189b21f72980f883a9f73eb2d} +x{b53fddc5ad0059ee152c0d096efef63293999e54a66c867432de3dce6043f7811dc58111480e184a99e4c7f360a3de70} +x{a21b66e7db725312ef2929a65d18cf60ad3f595d8d3a76cbbe419430e4e6a83b489343edd714f774ef69b07771ed57cb} +x{b177aede11e8288c8d2c7e274cf1b5d9cd17f0b965455d42d014bc4645b93572467c96f47c8d6a0c98c12730f323170a} +497 +x{30cfebbd980ea1c8f157a34abed82f3a34ecc2594e626265063e565230ae9193} +x{91cdca080f9cd6ae0bd15b427455053e12025843c2f602e0af70fa0e5d18dceb0bc46aa1a7652b54cfd8ea97c7210c5808d7cc72b82be7a2feb57f69d3511e4590a665e45e0e0f9bb43b05d8a0167fe2a91f4aa54c0a095c864be6e2b1e43081} +-1 +test-fast-aggregate-verify \ No newline at end of file diff --git a/crypto/test/fift/bls_ops.fif b/crypto/test/fift/bls_ops.fif new file mode 100644 index 000000000..c7f76d76a --- /dev/null +++ b/crypto/test/fift/bls_ops.fif @@ -0,0 +1,215 @@ +"Asm.fif" include +"FiftExt.fif" include + +{ { drop } depth 1- times } : clear-stack + +// Map to g1 +."G1 Points:" cr +x{7abd13983c76661a98659da83066c71bd6581baf20c82c825b007bf8057a258dc53f7a6d44fb6fdecb63d9586e845d92} +<{ BLS_MAP_TO_G1 }>s 0 runvmx abort"Exitcode != 0" dup ."a1 = " csr. constant a1 +x{7a6990b38d5a7bfc47b38c5adeec60680637e8a5030dddd796e7befbec3585c54c378472daadd7756ce7a52adbea507c} +<{ BLS_MAP_TO_G1 }>s 0 runvmx abort"Exitcode != 0" dup ."a2 = " csr. constant a2 +x{4e51f1317a8d7981f7bb061488b6e6528978209226ded49b02fd45fcb9b5ff8d33c360cd6db9661143a77edb34aac125} +<{ BLS_MAP_TO_G1 }>s 0 runvmx abort"Exitcode != 0" dup ."a3 = " csr. constant a3 +x{0ca4a2a9a055367caa8c41facaae4c1f28360e2bfc70182904ff966011de9c02e6744bad6b0096e7ef3f21bd972386af} +<{ BLS_MAP_TO_G1 }>s 0 runvmx abort"Exitcode != 0" dup ."a4 = " csr. constant a4 +x{1473aa897a1a166ce6c1b1d11e2401ad719b9c03f3a86d8dd63158d389667d66917d3845414a23c69ccef01762ec78d4} +<{ BLS_MAP_TO_G1 }>s 0 runvmx abort"Exitcode != 0" dup ."a5 = " csr. constant a5 + +// Validate points +a1 a2 a3 a4 a5 +<{ { BLS_G1_INGROUP 33 THROWIFNOT } 5 times }>s 0 runvmx abort"Exitcode != 0" + +// Invalid point +x{1d549908b5eb3c16f91174abe436c1a91442a57f922da813cb3dbc55de9e62bd63eac19a664eb8c3ea34b5a5c176d844} +<{ BLS_G1_INGROUP }>s 0 runvmx abort"Exitcode != 0" abort"0 expected" + +// Zero +."Zero:" cr +a1 a2 a3 a4 a5 +<{ { BLS_G1_ISZERO 33 THROWIF } 5 times }>s 0 runvmx abort"Exitcode != 0" +<{ BLS_G1_ZERO }>s 0 runvmx abort"Exitcode != 0" dup csr. constant zero +zero <{ BLS_G1_INGROUP }>s 0 runvmx abort"Exitcode != 0" not abort"-1 expected" +zero <{ BLS_G1_ISZERO }>s 0 runvmx abort"Exitcode != 0" not abort"-1 expected" + +// Addition +."a1 + a2 + a3:" cr +a1 a2 a3 <{ { BLS_G1_ADD } 2 times }>s 0 runvmx abort"Exitcode != 0" csr. +a3 a2 a1 <{ { BLS_G1_ADD } 2 times }>s 0 runvmx abort"Exitcode != 0" csr. +a2 a3 a1 <{ { BLS_G1_ADD } 2 times }>s 0 runvmx abort"Exitcode != 0" csr. +a1 zero a2 a3 zero <{ { BLS_G1_ADD } 4 times }>s 0 runvmx abort"Exitcode != 0" csr. + +// Subtraction +."a1 - a2:" cr +a1 a2 <{ BLS_G1_SUB }>s 0 runvmx abort"Exitcode != 0" csr. +a1 zero a2 <{ BLS_G1_SUB BLS_G1_ADD }>s 0 runvmx abort"Exitcode != 0" csr. + +// Negation +."-a1:" cr +a1 <{ BLS_G1_NEG }>s 0 runvmx abort"Exitcode != 0" csr. +zero a1 <{ BLS_G1_SUB }>s 0 runvmx abort"Exitcode != 0" csr. +."0:" cr +a1 a1 <{ BLS_G1_NEG BLS_G1_ADD }>s 0 runvmx abort"Exitcode != 0" csr. +a1 a1 <{ BLS_G1_SUB }>s 0 runvmx abort"Exitcode != 0" csr. + +// Multiplication: +."a1 * 1:" cr +a1 csr. +a1 1 <{ BLS_G1_MUL }>s 0 runvmx abort"Exitcode != 0" csr. +."a1 * 0:" cr +zero csr. +a1 0 <{ BLS_G1_MUL }>s 0 runvmx abort"Exitcode != 0" csr. +."a1 * (-1):" cr +a1 -1 <{ BLS_G1_MUL }>s 0 runvmx abort"Exitcode != 0" csr. +a1 <{ BLS_G1_NEG }>s 0 runvmx abort"Exitcode != 0" csr. +."a1 * 3:" cr +a1 3 <{ BLS_G1_MUL }>s 0 runvmx abort"Exitcode != 0" csr. +a1 a1 a1 <{ { BLS_G1_ADD } 2 times }>s 0 runvmx abort"Exitcode != 0" csr. +."a1 * 123:" cr +a1 123 <{ BLS_G1_MUL }>s 0 runvmx abort"Exitcode != 0" csr. +<{ a1 SLICE 100 INT BLS_G1_MUL a1 SLICE 23 INT BLS_G1_MUL BLS_G1_ADD }>s 0 runvmx abort"Exitcode != 0" csr. +a1 -123 <{ BLS_G1_MUL BLS_G1_NEG }>s 0 runvmx abort"Exitcode != 0" csr. + +// Multiexp +."a1*111 + a2*222 + a3*(-333) + a4*0 + a5*1:" cr +a1 111 a2 222 a3 -333 a4 0 a5 1 5 <{ BLS_G1_MULTIEXP }>s 0 runvmx abort"Exitcode != 0" csr. +a1 111 a2 222 a3 -333 a5 1 4 <{ BLS_G1_MULTIEXP }>s 0 runvmx abort"Exitcode != 0" csr. +<{ + a1 SLICE 111 INT BLS_G1_MUL + a2 SLICE 222 INT BLS_G1_MUL + a3 SLICE -333 INT BLS_G1_MUL + a5 SLICE + { BLS_G1_ADD } 3 times +}>s 0 runvmx abort"Exitcode != 0" csr. +."0:" cr +zero csr. +0 <{ BLS_G1_MULTIEXP }>s 0 runvmx abort"Exitcode != 0" csr. +a1 0 1 <{ BLS_G1_MULTIEXP }>s 0 runvmx abort"Exitcode != 0" csr. + +// Map to g2 +."G2 Points:" cr +x{cce34c6322b8f3b455617a975aff8b6eaedf04fbae74a8890db6bc3fab0475b94cd8fbde0e1182ce6993afd56ed6e71919cae59c891923b4014ed9e42d9f0e1a779d9a7edb64f5e2fd600012805fc773b5092af5d2f0c6c0946ee9ad8394bf19} +<{ BLS_MAP_TO_G2 }>s 0 runvmx abort"Exitcode != 0" dup ."b1 = " csr. constant b1 +x{2faa65f3431da8f04b8d029f7699b6426eb31feb06b3429b13b99fde35d5c0ab17e67943802313a96b2252a69dfdcc6e56f5671d905984940f4b9ce3b410042457dff7ae5fd4be6a0b73cad5d0390ed379d658cb24e11973d80f98bd7ff64f19} +<{ BLS_MAP_TO_G2 }>s 0 runvmx abort"Exitcode != 0" dup ."b2 = " csr. constant b2 +x{28619564e5cbb27c9e709d80b654f2eb1fd2c3ab435d7b97b4bd80638dbfe5b47e52df0e5be0b2c328357c5ddd8018acc6e739c4d132cc6f2b9797c210051acef9513ae54bb66de2a9ea8d02cbca7e96ce8193be1557d3128906e12f37913887} +<{ BLS_MAP_TO_G2 }>s 0 runvmx abort"Exitcode != 0" dup ."b3 = " csr. constant b3 +x{66f14fc1bb199ece07fde0a7af3cb3d2719acd4bb5186ab4ddda7de6a9f96557df44f3d14264eb0fed79f53d972ddc4517e362a001c5e7c7217169a05d9e3cd82b521236737f5d564f5860139d027018d3b33605d51e48c77b51554bf1d5b24a} +<{ BLS_MAP_TO_G2 }>s 0 runvmx abort"Exitcode != 0" dup ."b4 = " csr. constant b4 +x{a9e68db711778adb0bcee53ae4fd2d31605c1eff02ae38279eebfb45fc319964d33cb45ee32bbcb13663fe2131f79120af2d8ce26400ece9a7fb57ef9666c5b1b6f1856cb121b1c618b2dcfb359ffa63a08989c1f457b355958f589e7314610a} +<{ BLS_MAP_TO_G2 }>s 0 runvmx abort"Exitcode != 0" dup ."b5 = " csr. constant b5 + +// Validate points +b1 b2 b3 b4 b5 +<{ { BLS_G2_INGROUP 33 THROWIFNOT } 5 times }>s 0 runvmx abort"Exitcode != 0" + +// Invalid point +x{090069862cb1b1ac4241c4b1ed5f98edb95413db77f534bba7e85d9cb54d953c61416c0eeb5c65c6f0b494e9f59b2c9dfe8b4a9af75e1114b45ec60f6b5d2327cc05a6d9d6e76d7a9efd947302966d4f357bd48e5c3f950101c88c65b13bd5c7} +<{ BLS_G2_INGROUP }>s 0 runvmx abort"Exitcode != 0" abort"0 expected" + +// Zero +."Zero:" cr +b1 b2 b3 b4 b5 +<{ { BLS_G2_ISZERO 33 THROWIF } 5 times }>s 0 runvmx abort"Exitcode != 0" +<{ BLS_G2_ZERO }>s 0 runvmx abort"Exitcode != 0" dup csr. constant zero +zero <{ BLS_G2_INGROUP }>s 0 runvmx abort"Exitcode != 0" not abort"-1 expected" +zero <{ BLS_G2_ISZERO }>s 0 runvmx abort"Exitcode != 0" not abort"-1 expected" + +// Addition +."b1 + b2 + b3:" cr +b1 b2 b3 <{ { BLS_G2_ADD } 2 times }>s 0 runvmx abort"Exitcode != 0" csr. +b3 b2 b1 <{ { BLS_G2_ADD } 2 times }>s 0 runvmx abort"Exitcode != 0" csr. +b2 b3 b1 <{ { BLS_G2_ADD } 2 times }>s 0 runvmx abort"Exitcode != 0" csr. +b1 zero b2 b3 zero <{ { BLS_G2_ADD } 4 times }>s 0 runvmx abort"Exitcode != 0" csr. + +// Subtraction +."b1 - b2:" cr +b1 b2 <{ BLS_G2_SUB }>s 0 runvmx abort"Exitcode != 0" csr. +b1 zero b2 <{ BLS_G2_SUB BLS_G2_ADD }>s 0 runvmx abort"Exitcode != 0" csr. + +// Negation +."-b1:" cr +b1 <{ BLS_G2_NEG }>s 0 runvmx abort"Exitcode != 0" csr. +zero b1 <{ BLS_G2_SUB }>s 0 runvmx abort"Exitcode != 0" csr. +."0:" cr +b1 b1 <{ BLS_G2_NEG BLS_G2_ADD }>s 0 runvmx abort"Exitcode != 0" csr. +b1 b1 <{ BLS_G2_SUB }>s 0 runvmx abort"Exitcode != 0" csr. + +// Multiplication: +."b1 * 1:" cr +b1 csr. +b1 1 <{ BLS_G2_MUL }>s 0 runvmx abort"Exitcode != 0" csr. +."b1 * 0:" cr +zero csr. +b1 0 <{ BLS_G2_MUL }>s 0 runvmx abort"Exitcode != 0" csr. +."b1 * (-1):" cr +b1 -1 <{ BLS_G2_MUL }>s 0 runvmx abort"Exitcode != 0" csr. +b1 <{ BLS_G2_NEG }>s 0 runvmx abort"Exitcode != 0" csr. +."b1 * 3:" cr +b1 3 <{ BLS_G2_MUL }>s 0 runvmx abort"Exitcode != 0" csr. +b1 b1 b1 <{ { BLS_G2_ADD } 2 times }>s 0 runvmx abort"Exitcode != 0" csr. +."b1 * 123:" cr +b1 123 <{ BLS_G2_MUL }>s 0 runvmx abort"Exitcode != 0" csr. +<{ b1 SLICE 100 INT BLS_G2_MUL b1 SLICE 23 INT BLS_G2_MUL BLS_G2_ADD }>s 0 runvmx abort"Exitcode != 0" csr. +b1 -123 <{ BLS_G2_MUL BLS_G2_NEG }>s 0 runvmx abort"Exitcode != 0" csr. + +// Multiexp +."b1*111 + b2*222 + b3*(-333) + b4*0 + b5*1:" cr +b1 111 b2 222 b3 -333 b4 0 b5 1 5 <{ BLS_G2_MULTIEXP }>s 0 runvmx abort"Exitcode != 0" csr. +b1 111 b2 222 b3 -333 b5 1 4 <{ BLS_G2_MULTIEXP }>s 0 runvmx abort"Exitcode != 0" csr. +<{ + b1 SLICE 111 INT BLS_G2_MUL + b2 SLICE 222 INT BLS_G2_MUL + b3 SLICE -333 INT BLS_G2_MUL + b5 SLICE + { BLS_G2_ADD } 3 times +}>s 0 runvmx abort"Exitcode != 0" csr. +."0:" cr +zero csr. +0 <{ BLS_G2_MULTIEXP }>s 0 runvmx abort"Exitcode != 0" csr. +b1 0 1 <{ BLS_G2_MULTIEXP }>s 0 runvmx abort"Exitcode != 0" csr. + +// r +<{ BLS_PUSHR }>s 0 runvmx abort"Exitcode != 0" cr ."r = " . cr +b1 <{ BLS_PUSHR BLS_G2_MUL }>s 0 runvmx abort"Exitcode != 0" csr. +zero csr. +b1 <{ BLS_PUSHR INC BLS_G2_MUL }>s 0 runvmx abort"Exitcode != 0" csr. +b1 csr. + +// Pairings +{ [[ <{ BLS_G1_MUL }>s ]] 0 runvmx abort"Exitcode != -1" } : bls_g1_mul +{ [[ <{ BLS_G2_MUL }>s ]] 0 runvmx abort"Exitcode != -1" } : bls_g2_mul +75634785643785634785634876232423354534 constant x +."a1*x,b1 a1,b1*(-x) : " +a1 x bls_g1_mul b1 +a1 b1 x negate bls_g2_mul +2 <{ BLS_PAIRING }>s 0 runvmx abort"Exitcode != 0" .s not abort"-1 expected" +."a1*x,b1 a1,b1*(-x-1) : " +a1 x bls_g1_mul b1 +a1 b1 x negate 1 - bls_g2_mul +2 <{ BLS_PAIRING }>s 0 runvmx abort"Exitcode != 0" .s abort"0 expected" + +08036758068232723862526737758751120353935980577994643429668638941492109432519 constant x1 +76720311667788346189068792441910584335982488547394926476426087533015880449318 constant x2 +73698677644295053147826041647629389417255852559045739853199261775689421644183 constant x3 +00651749128863148819911470689106677724299434569675211711456038250594316760143 constant x4 +."a1*x1,b1 a2*x2,b2 a3*x3,b3 a4*x4,b4 a1,b1*(-x1) a2,b2*(-x2) a3,b3*(-x3) a4,b4*(-x4) : " +a1 x1 bls_g1_mul b1 +a2 x2 bls_g1_mul b2 +a3 x3 bls_g1_mul b3 +a4 x4 bls_g1_mul b4 +a1 b1 x1 negate bls_g2_mul +a2 b2 x2 negate bls_g2_mul +a3 b3 x3 negate bls_g2_mul +a4 b4 x4 negate bls_g2_mul +8 <{ BLS_PAIRING }>s 0 runvmx abort"Exitcode != 0" .s not abort"-1 expected" +."a1*x1,b1 a2*x2,b2 a3*x3,b3 a4*x4,b4 a1,b1*(-x1) a2,b2*(-x2) a3,b3*(-x4) a4,b4*(-x3) : " +a1 x1 bls_g1_mul b1 +a2 x2 bls_g1_mul b2 +a3 x3 bls_g1_mul b3 +a4 x4 bls_g1_mul b4 +a1 b1 x1 negate bls_g2_mul +a2 b2 x2 negate bls_g2_mul +a3 b3 x4 negate bls_g2_mul +a4 b4 x3 negate bls_g2_mul +8 <{ BLS_PAIRING }>s 0 runvmx abort"Exitcode != 0" .s abort"0 expected" diff --git a/crypto/test/fift/deep_stack_ops.fif b/crypto/test/fift/deep_stack_ops.fif new file mode 100644 index 000000000..460ecdd77 --- /dev/null +++ b/crypto/test/fift/deep_stack_ops.fif @@ -0,0 +1,27 @@ +"Asm.fif" include + +{ { drop } depth 1- times } : clear-stack + +0 { dup 1+ } 500 times +<{ 400 INT XCHGX 300 INT PICK 450 INT CHKDEPTH }>s 1000000 64 8 + runvmx .s clear-stack + +0 { dup 1+ } 500 times +<{ 400 INT ROLLX }>s 1000000 64 8 + runvmx .s clear-stack + +0 { dup 1+ } 500 times +<{ 400 INT -ROLLX }>s 1000000 64 8 + runvmx .s clear-stack + +0 { dup 1+ } 700 times +<{ 350 INT 300 INT BLKSWX }>s 1000000 64 8 + runvmx .s clear-stack + +0 { dup 1+ } 500 times +<{ 400 INT 5 INT REVX }>s 1000000 64 8 + runvmx .s clear-stack + +0 { dup 1+ } 500 times +<{ 400 INT DROPX }>s 1000000 64 8 + runvmx .s clear-stack + +0 { dup 1+ } 500 times +<{ 400 INT ONLYTOPX }>s 1000000 64 8 + runvmx .s clear-stack + +0 { dup 1+ } 500 times +<{ 400 INT ONLYX }>s 1000000 64 8 + runvmx .s clear-stack diff --git a/crypto/test/fift/hash_ext.fif b/crypto/test/fift/hash_ext.fif new file mode 100644 index 000000000..3f0094101 --- /dev/null +++ b/crypto/test/fift/hash_ext.fif @@ -0,0 +1,98 @@ +"Asm.fif" include + +{ { drop } depth 1- times } : clear-stack + +// Compare HASHEXT_SHA256 with SHA256U +<{ + x{0123456789abcdef} PUSHSLICE SHA256U + + x{0123456789abcdef} PUSHSLICE 1 PUSHINT HASHEXT_SHA256 + + x{01} PUSHSLICE + x{2} PUSHSLICE + b{001101} PUSHSLICE NEWC STSLICE + b{0} PUSHSLICE + b{00101} PUSHSLICE NEWC STSLICE + x{6789a} PUSHSLICE + b{1} PUSHSLICE + b{0111100} PUSHSLICE + x{def} PUSHSLICE + 9 PUSHINT HASHEXT_SHA256 + + x{01} PUSHSLICE + x{2} PUSHSLICE + b{001101} PUSHSLICE NEWC STSLICE + b{0} PUSHSLICE + b{00101} PUSHSLICE NEWC STSLICE + x{6789a} PUSHSLICE + b{1} PUSHSLICE + b{0111100} PUSHSLICE + x{def} PUSHSLICE + 9 0 REVERSE + 9 PUSHINT HASHEXTR_SHA256 +}>s +0 runvmx abort"runvmx finished with exitcode != 0" +. cr . cr . cr . cr .s + +// HASHEXTA +<{ + NEWC x{ff} PUSHSLICE STSLICER x{01234567} PUSHSLICE SHA256U 256 STUR ENDC CTOS + NEWC x{ff} PUSHSLICE STSLICER x{0123} PUSHSLICE x{4567} PUSHSLICE 2 PUSHINT HASHEXTA_SHA256 ENDC CTOS + NEWC x{ff} PUSHSLICE STSLICER x{4567} PUSHSLICE x{0123} PUSHSLICE 2 PUSHINT HASHEXTAR_SHA256 ENDC CTOS +}>s +0 runvmx abort"runvmx finished with exitcode != 0" +csr. csr. csr. .s + +// Exceptions on errors +<{ x{001122334455667} PUSHSLICE 1 PUSHINT HASHEXT_SHA256 }>s 0 runvmx .s 9 <> abort"exitcode != 9" clear-stack +<{ x{00} PUSHSLICE x{11} PUSHSLICE 3 PUSHINT HASHEXT_SHA256 }>s 0 runvmx .s 5 <> abort"exitcode != 5" clear-stack +<{ x{00} PUSHSLICE 1 PUSHINT 2 PUSHINT HASHEXT_SHA256 }>s 0 runvmx .s 7 <> abort"exitcode != 7" clear-stack +<{ x{1234} PUSHSLICE 1 PUSHINT 100 HASHEXT }>s 0 runvmx .s 5 <> abort"exitcode != 5" clear-stack + +// Other hash functions + s 0 runvmx .s abort"runvmx finished with exitcode != 0" clear-stack +<{ + str PUSHSLICE 1 PUSHINT 0 HASHEXT + str PUSHSLICE 1 PUSHINT 1 HASHEXT + str PUSHSLICE 1 PUSHINT 2 HASHEXT + str PUSHSLICE 1 PUSHINT 3 HASHEXT + str PUSHSLICE 1 PUSHINT 4 HASHEXT +}>s 0 runvmx .s abort"runvmx finished with exitcode != 0" clear-stack +<{ + NEWC str PUSHSLICE 1 PUSHINT 4 HASHEXTA ENDC CTOS + NEWC str PUSHSLICE 1 PUSHINT 3 HASHEXTA ENDC CTOS + NEWC str PUSHSLICE 1 PUSHINT 2 HASHEXTA ENDC CTOS + NEWC str PUSHSLICE 1 PUSHINT 1 HASHEXTA ENDC CTOS + NEWC str PUSHSLICE 1 PUSHINT 0 HASHEXTA ENDC CTOS +}>s 0 runvmx abort"runvmx finished with exitcode != 0" +{ csr. } 5 times .s + +// Long string +0 { + =: hash-idx + 0 { + dup =: len + s ]] 0 runvmx abort"Exitcode != 0" + @' n . dup (x.) type cr + @' ans <> abort"Invalid result" +} : test-basepoint + + 0 0x0000000000000000000000000000000000000000000000000000000000000000 test-basepoint + 1 0xe2f2ae0a6abc4e71a884a961c500515f58e30b6aa582dd8db6a65945e08d2d76 test-basepoint + 2 0x6a493210f7499cd17fecb510ae0cea23a110e8d5b901f8acadd3095c73a3b919 test-basepoint + 3 0x94741f5d5d52755ece4f23f044ee27d5d1ea1e2bd196b462166b16152a9d0259 test-basepoint + 4 0xda80862773358b466ffadfe0b3293ab3d9fd53c5ea6c955358f568322daf6a57 test-basepoint + 5 0xe882b131016b52c1d3337080187cf768423efccbb517bb495ab812c4160ff44e test-basepoint + 6 0xf64746d3c92b13050ed8d80236a7f0007c3b3f962f5ba793d19a601ebb1df403 test-basepoint + 7 0x44f53520926ec81fbd5a387845beb7df85a96a24ece18738bdcfa6a7822a176d test-basepoint + 8 0x903293d8f2287ebe10e2374dc1a53e0bc887e592699f02d077d5263cdd55601c test-basepoint + 9 0x02622ace8f7303a31cafc63f8fc48fdc16e1c8c8d234b2f0d6685282a9076031 test-basepoint +10 0x20706fd788b2720a1ed2a5dad4952b01f413bcf0e7564de8cdc816689e2db95f test-basepoint +11 0xbce83f8ba5dd2fa572864c24ba1810f9522bc6004afe95877ac73241cafdab42 test-basepoint +12 0xe4549ee16b9aa03099ca208c67adafcafa4c3f3e4e5303de6026e3ca8ff84460 test-basepoint +13 0xaa52e000df2e16f55fb1032fc33bc42742dad6bd5a8fc0be0167436c5948501f test-basepoint +14 0x46376b80f409b29dc2b5f6f0c52591990896e5716f41477cd30085ab7f10301e test-basepoint +15 0xe0c418f7c8d9c4cdd7395b93ea124f3ad99021bb681dfc3302a9d99a2e53e64e test-basepoint + +cr ."Invalid points:" cr +{ + =: x + @' x (x.) type cr + @' x + [[ <{ RIST255_QVALIDATE }>s ]] 0 runvmx abort"Exitcode != 0" + abort"Invalid result" +} : test-invalid +// These are all bad because they're non-canonical field encodings. +0x00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff test-invalid +0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f test-invalid +0xf3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f test-invalid +0xedffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f test-invalid +// These are all bad because they're negative field elements. +0x0100000000000000000000000000000000000000000000000000000000000000 test-invalid +0x01ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f test-invalid +0xed57ffd8c914fb201471d1c3d245ce3c746fcbe63a3679d51b6a516ebebe0e20 test-invalid +0xc34c4e1826e5d403b78e246e88aa051c36ccf0aafebffe137d148a2bf9104562 test-invalid +0xc940e5a4404157cfb1628b108db051a8d439e1a421394ec4ebccb9ec92a8ac78 test-invalid +0x47cfc5497c53dc8e61c91d17fd626ffb1c49e2bca94eed052281b510b1117a24 test-invalid +0xf1c6165d33367351b0da8f6e4511010c68174a03b6581212c71c0e1d026c3c72 test-invalid +0x87260f7a2f12495118360f02c26a470f450dadf34a413d21042b43b9d93e1309 test-invalid +// These are all bad because they give a nonsquare x^2. +0x26948d35ca62e643e26a83177332e6b6afeb9d08e4268b650f1f5bbd8d81d371 test-invalid +0x4eac077a713c57b4f4397629a4145982c661f48044dd3f96427d40b147d9742f test-invalid +0xde6a7b00deadc788eb6b6c8d20c0ae96c2f2019078fa604fee5b87d6e989ad7b test-invalid +0xbcab477be20861e01e4a0e295284146a510150d9817763caf1a6f4b422d67042 test-invalid +0x2a292df7e32cababbd9de088d1d1abec9fc0440f637ed2fba145094dc14bea08 test-invalid +0xf4a9e534fc0d216c44b218fa0c42d99635a0127ee2e53c712f70609649fdff22 test-invalid +0x8268436f8c4126196cf64b3c7ddbda90746a378625f9813dd9b8457077256731 test-invalid +0x2810e5cbc2cc4d4eece54f61c6f69758e289aa7ab440b3cbeaa21995c2f4232b test-invalid +// These are all bad because they give a negative xy value. +0x3eb858e78f5a7254d8c9731174a94f76755fd3941c0ac93735c07ba14579630e test-invalid +0xa45fdc55c76448c049a1ab33f17023edfb2be3581e9c7aade8a6125215e04220 test-invalid +0xd483fe813c6ba647ebbfd3ec41adca1c6130c2beeee9d9bf065c8d151c5f396e test-invalid +0x8a2e1d30050198c65a54483123960ccc38aef6848e1ec8f5f780e8523769ba32 test-invalid +0x32888462f8b486c68ad7dd9610be5192bbeaf3b443951ac1a8118419d9fa097b test-invalid +0x227142501b9d4355ccba290404bde41575b037693cef1f438c47f8fbf35d1165 test-invalid +0x5c37cc491da847cfeb9281d407efc41e15144c876e0170b499a96a22ed31e01e test-invalid +0x445425117cb8c90edcbc7c1cc0e74f747f2c1efa5630a967c64f287792a48a4b test-invalid +// This is s = -1, which causes y = 0. +0xecffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f test-invalid + +cr ."Hash to point:" cr +{ + =: text =: ans + @' text $>s + [[ <{ 1 INT HASHEXT_SHA512 2 UNTUPLE RIST255_FROMHASH }>s ]] 0 runvmx abort"Exitcode != 0" + @' ans <> abort"Invalid result" + @' ans (x.) type ." " @' text type cr +} : test-hash + +0x3066f82a1a747d45120d1740f14358531a8f04bbffe6a819f86dfe50f44a0a46 "Ristretto is traditionally a short shot of espresso coffee" test-hash +0xf26e5b6f7d362d2d2a94c5d0e7602cb4773c95a2e5c31a64f133189fa76ed61b "made with the normal amount of ground coffee but extracted with" test-hash +0x006ccd2a9e6867e6a2c5cea83d3302cc9de128dd2a9a57dd8ee7b9d7ffe02826 "about half the amount of water in the same amount of time" test-hash +0xf8f0c87cf237953c5890aec3998169005dae3eca1fbb04548c635953c817f92a "by using a finer grind." test-hash +0xae81e7dedf20a497e10c304a765c1767a42d6e06029758d2d7e8ef7cc4c41179 "This produces a concentrated shot of coffee per volume." test-hash +0xe2705652ff9f5e44d3e841bf1c251cf7dddb77d140870d1ab2ed64f1a9ce8628 "Just pulling a normal shot short will produce a weaker shot" test-hash +0x80bd07262511cdde4863f8a7434cef696750681cb9510eea557088f76d9e5065 "and is not a Ristretto as some believe." test-hash \ No newline at end of file diff --git a/crypto/test/fift/tvm_runvm.fif b/crypto/test/fift/tvm_runvm.fif new file mode 100644 index 000000000..1037156b7 --- /dev/null +++ b/crypto/test/fift/tvm_runvm.fif @@ -0,0 +1,228 @@ +"Asm.fif" include + +// Just run +111 10 20 2 +<{ + ADD // Ensure that stack was passed to runvmx + DEPTH // Ensure that only 2 stack entries were passed + c4 PUSH CTOS SBITREFS // Ensure that c4 is empty + c5 PUSH CTOS SBITREFS // Ensure that c5 is empty + c7 PUSH // Ensure that c7 is empty + PUSHREF c4 POP // Ensure that it does not affect c4, c5, c7 in parent vm + PUSHREF c5 POP + NIL 100 PUSHINT TPUSH 200 PUSHINT TPUSH c7 POP + 123 PUSHINT +}>s +<{ + PUSHREF c4 POP + PUSHREF c5 POP + NIL 5 PUSHINT TPUSH 6 PUSHINT TPUSH c7 POP + 0 RUNVM + c4 PUSH CTOS c5 PUSH CTOS c7 PUSH // Ensure that c4, c5, c7 are unchanged +}>s 1000000 8 runvmx // Show gas usage +.s { drop } depth 1- times // 111 30 1 0 0 0 0 [] 123 0 x{1234} x{5678} [ 5 6 ] 0 1197 + +// Exception +111 10 20 2 +<{ 22 PUSHINT 55 PUSHINT 66 THROWARG }>s +<{ 0 RUNVM }>s 0 runvmx +.s { drop } depth 1- times // 111 55 66 0 + +// Mode +1 - set c3 to code +PROGRAM{ + 22 DECLMETHOD foo + DECLPROC main + foo PROC:<{ + MUL + }> + main PROC:<{ + DUP + foo CALLDICT + INC + }> +}END>s constant prog +<{ + 10 PUSHINT 0 PUSHINT 2 PUSHINT prog PUSHSLICE 1 RUNVM + 10 PUSHINT 0 PUSHINT 2 PUSHINT prog PUSHSLICE 0 RUNVM +}>s 0 runvmx +.s { drop } depth 1- times // 101 0 10 10 22 11 0 + +// Mode +2 - push 0 +<{ 10 PUSHINT 1 PUSHINT prog PUSHSLICE 3 RUNVM }>s 0 runvmx +.s { drop } depth 1- times // 101 0 0 + +// Mode +4 - load and return c4 +0 +<{ + c4 PUSHCTR CTOS // Ensure that this is x{5678} + PUSHREF c4 POPCTR // This should be returned from RUNVM + 1000 PUSHINT +}>s + +<{ + PUSHREF c4 POP // Ensure that this does not change + 4 RUNVM + CTOS + c4 PUSH CTOS // x{1234} +}>s 0 runvmx +.s { drop } depth 1- times // x{5678} 1000 0 x{abcd} x{1234} 0 + +// Mode +16 - load c7 +0 +<{ + c7 PUSH // Ensure that this is [ 10 15 20 ] + NIL 111 PUSHINT TPUSH 222 PUSHINT TPUSH 3333 PUSHINT TPUSH c7 POP + 1000 PUSHINT +}>s +10 15 20 3 tuple +<{ + NIL 1 PUSHINT TPUSH 2 PUSHINT TPUSH 3 PUSHINT TPUSH c7 POP // Ensure that this does not change + 16 RUNVM + c7 PUSH // [ 1 2 3 ] +}>s 0 runvmx +.s { drop } depth 1- times // [ 10 15 20 ] 1000 0 [ 1 2 3 ] 0 + +// Mode +32 - return c5 +0 +<{ + c5 PUSH CTOS SBITREFS // Ensure that this is empty + PUSHREF c5 POP // Ensure that this is returned from RUNVM + 1000 PUSHINT +}>s +<{ + PUSHREF c5 POP // Ensure that this does not change + 32 RUNVM + CTOS + c5 PUSH CTOS // x{1234} +}>s 0 runvmx +.s { drop } depth 1- times // 0 0 1000 0 x{5678} x{1234} 0 + +// c4, c5 with exception +0 +<{ + PUSHREF c4 POP + PUSHREF c5 POP + 55 THROW +}>s + // c4 for RUNVM +<{ + PUSHREF c4 POP // Ensure that this does not change + PUSHREF c5 POP // Ensure that this does not change + 32 4 + RUNVM + c4 PUSH CTOS // x{1234aaaa} + c5 PUSH CTOS // x{1234bbbb} +}>s 0 runvmx +.s { drop } depth 1- times // 0 55 null null x{1234aaaa} x{1234bbbb} 0 + +// c4, c5 with exception and commit +0 +<{ + PUSHREF c4 POP + PUSHREF c5 POP + COMMIT + PUSHREF c4 POP + PUSHREF c5 POP + 55 THROW +}>s + // c4 for RUNVM +<{ + PUSHREF c4 POP // Ensure that this does not change + PUSHREF c5 POP // Ensure that this does not change + 32 4 + RUNVM + CTOS SWAP CTOS SWAP + c4 PUSH CTOS // x{1234aaaa} + c5 PUSH CTOS // x{1234bbbb} +}>s 0 runvmx +.s { drop } depth 1- times // 0 55 x{abcdaaaa} x{abcdbbbb} x{1234aaaa} x{1234bbbb} 0 + +// Mode +8 - gas limit +0 +<{ AGAIN:<{ NOP }> }>s +200 +<{ 8 RUNVM 1234 PUSHINT }>s 0 runvmx +.s { drop } depth 1- times // 215 -14 215 1234 0 + +// Gas limit of parent vm is too low +0 +<{ AGAIN:<{ NOP }> }>s +1000000 +<{ 8 RUNVM 1234 PUSHINT }>s 300 8 runvmx +.s { drop } depth 1- times // 301 -14 301 + +// Mode +64 - hard gas limit +0 <{ AGAIN:<{ NOP }> }>s 200 500 +<{ 8 64 + RUNVM 1234 PUSHINT }>s 0 runvmx +.s { drop } depth 1- times // 215 -14 215 1234 0 +0 <{ ACCEPT AGAIN:<{ NOP }> }>s 200 500 +<{ 8 64 + RUNVM 1234 PUSHINT }>s 0 runvmx +.s { drop } depth 1- times // 517 -14 517 1234 0 + +// 10000 nested VMs (recursively calculating 1+...+10000) +<{ + DUP + 0 EQINT + IFJMP:<{ + DROP DROP + 0 PUSHINT + }> + OVER OVER DEC + 2 PUSHINT + s2 PUSH + 0 RUNVM + 11 THROWIF + ADD + NIP +}>s constant code1 +<{ code1 PUSHSLICE 10000 PUSHINT 2 PUSHINT code1 PUSHSLICE 0 RUNVM }>s 10000000 8 runvmx // Show gas +.s { drop } depth 1- times // 50005000 0 0 2710286 + +// Same thing, but out of gas +<{ code1 PUSHSLICE 10000 PUSHINT 2 PUSHINT code1 PUSHSLICE 0 RUNVM }>s 100000 8 runvmx // Show gas +.s { drop } depth 1- times // 100001 -14 100001 + +// RUNVMX +0 +<{ AGAIN:<{ NOP }> }>s +200 +<{ 8 PUSHINT RUNVMX 1234 PUSHINT }>s 0 runvmx +.s { drop } depth 1- times // 215 -14 215 1234 0 + +// +128 - separate loaded_cells + +<{ DUP CTOS DROP 2 INT <{ CTOS DROP CTOS DROP }>s SLICE 10000 INT 8 RUNVM }>s 1000000 8 runvmx +.s { drop } depth 1- times // 0 202 0 509 + +<{ DUP CTOS DROP 2 INT <{ CTOS DROP CTOS DROP }>s SLICE 10000 INT 8 128 + RUNVM }>s 1000000 8 runvmx +.s { drop } depth 1- times // 0 277 0 584 + +// +256 - fixed number of return values +11 22 33 3 +<{ 1 INT 2 INT 3 INT 4 INT 5 INT }>s +3 +<{ 256 RUNVM }>s 0 runvmx +.s { drop } depth 1- times // 3 4 5 0 0 + +11 22 33 3 +<{ 1 INT 2 INT 3 INT 4 INT 5 INT }>s +0 +<{ 256 RUNVM }>s 0 runvmx +.s { drop } depth 1- times // 0 0 + +11 22 33 3 +<{ 1 INT 2 INT 3 INT 4 INT 5 INT 77 THROW }>s +3 +<{ 256 RUNVM }>s 0 runvmx +.s { drop } depth 1- times // 0 77 0 + +11 22 33 3 +<{ 1 INT 2 INT 3 INT 4 INT 5 INT }>s +20 +<{ 256 RUNVM }>s 0 runvmx +.s { drop } depth 1- times // 0 -3 0 + +// GASCONSUMED +<{ 10 INT 20 INT ADD DROP GASCONSUMED }>s 0 runvmx +.s { drop } depth 1- times // 106 0 +0 <{ 10 INT 20 INT ADD DROP GASCONSUMED }>s +<{ 100 INT 200 INT 300 INT MUL DIV DROP 0 RUNVM GASCONSUMED }>s 0 runvmx +.s { drop } depth 1- times // 106 0 367 0 diff --git a/crypto/vm/Hasher.cpp b/crypto/vm/Hasher.cpp new file mode 100644 index 000000000..f70988d33 --- /dev/null +++ b/crypto/vm/Hasher.cpp @@ -0,0 +1,148 @@ +/* + This file is part of TON Blockchain Library. + + TON Blockchain Library is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version. + + TON Blockchain Library 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 Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with TON Blockchain Library. If not, see . +*/ +#include "vm/Hasher.h" +#include "vm/excno.hpp" +#include "vm/vm.h" +#include +#include +#include "keccak/keccak.h" + +namespace vm { + +using td::Ref; + +class HasherImplEVP : public Hasher::HasherImpl { + public: + explicit HasherImplEVP(EVP_MD_CTX* ctx) : ctx_(ctx) { + } + + ~HasherImplEVP() override { + EVP_MD_CTX_free(ctx_); + } + + void append(const unsigned char *data, size_t size) override { + CHECK(EVP_DigestUpdate(ctx_, data, size)); + } + + td::BufferSlice finish() override { + td::BufferSlice hash(EVP_MD_CTX_size(ctx_)); + unsigned size; + CHECK(EVP_DigestFinal_ex(ctx_, (unsigned char *)hash.data(), &size) || size != hash.size()); + return hash; + } + + std::unique_ptr make_copy() const override { + EVP_MD_CTX *new_ctx = nullptr; + new_ctx = EVP_MD_CTX_new(); + CHECK(new_ctx != nullptr); + CHECK(EVP_MD_CTX_copy_ex(new_ctx, ctx_)); + return std::make_unique(new_ctx); + } + + private: + EVP_MD_CTX *ctx_; +}; + +class HasherImplKeccak : public Hasher::HasherImpl { + public: + explicit HasherImplKeccak(size_t hash_size) : hash_size_(hash_size) { + CHECK(keccak_init(&state_, hash_size * 2, 24) == 0); + CHECK(state_ != nullptr); + } + + ~HasherImplKeccak() override { + CHECK(keccak_destroy(state_) == 0); + } + + void append(const unsigned char *data, size_t size) override { + CHECK(keccak_absorb(state_, data, size) == 0); + } + + td::BufferSlice finish() override { + td::BufferSlice hash(hash_size_); + CHECK(keccak_digest(state_, (unsigned char*)hash.data(), hash_size_, 1) == 0); + return hash; + } + + std::unique_ptr make_copy() const override { + auto copy = std::make_unique(hash_size_); + CHECK(keccak_copy(state_, copy->state_) == 0); + return copy; + } + + private: + size_t hash_size_; + keccak_state *state_ = nullptr; +}; + +Hasher::Hasher(int hash_id) : id_(hash_id) { + if (hash_id == KECCAK256 || hash_id == KECCAK512) { + impl_ = std::make_unique(hash_id == KECCAK256 ? 32 : 64); + return; + } + + EVP_MD_CTX *ctx = EVP_MD_CTX_new(); + CHECK(ctx != nullptr); + const EVP_MD *evp; + switch (hash_id) { + case SHA256: evp = EVP_sha256(); break; + case SHA512: evp = EVP_sha512(); break; + case BLAKE2B: evp = EVP_blake2b512(); break; + default: + throw VmError{Excno::range_chk, "invalid hash id"}; + } + CHECK(evp != nullptr && EVP_DigestInit_ex(ctx, evp, nullptr)); + impl_ = std::make_unique(ctx); +} + +void Hasher::append(td::ConstBitPtr data, unsigned size) { + if (!impl_) { + throw VmError{Excno::unknown, "can't use finished hasher"}; + } + while (size > 0) { + unsigned cur_size = std::min(size, BUF_SIZE * 8 - buf_ptr_); + td::BitPtr{buf_, (int)buf_ptr_}.copy_from(data, cur_size); + buf_ptr_ += cur_size; + if (buf_ptr_ == BUF_SIZE * 8) { + impl_->append(buf_, BUF_SIZE); + buf_ptr_ = 0; + } + size -= cur_size; + data += cur_size; + } +} + +td::BufferSlice Hasher::finish() { + if (!impl_) { + throw VmError{Excno::unknown, "can't use finished hasher"}; + } + if (buf_ptr_ % 8 != 0) { + throw VmError{Excno::cell_und, "data does not consist of an integer number of bytes"}; + } + impl_->append(buf_, buf_ptr_ / 8); + td::BufferSlice hash = impl_->finish(); + impl_ = nullptr; + return hash; +} + +static const size_t BYTES_PER_GAS_UNIT[5] = {33, 16, 19, 11, 6}; + +size_t Hasher::bytes_per_gas_unit() const { + return BYTES_PER_GAS_UNIT[id_]; +} + +} diff --git a/crypto/vm/Hasher.h b/crypto/vm/Hasher.h new file mode 100644 index 000000000..7e4416908 --- /dev/null +++ b/crypto/vm/Hasher.h @@ -0,0 +1,58 @@ +/* + This file is part of TON Blockchain Library. + + TON Blockchain Library is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version. + + TON Blockchain Library 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 Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with TON Blockchain Library. If not, see . +*/ +#pragma once +#include "common/refcnt.hpp" +#include "td/utils/buffer.h" +#include "common/bitstring.h" +#include "vm/cells/Cell.h" +#include + +namespace vm { + +using td::Ref; + +class Hasher { + public: + explicit Hasher(int id); + Hasher(const Hasher&) = delete; + void append(td::ConstBitPtr data, unsigned size); + td::BufferSlice finish(); + size_t bytes_per_gas_unit() const; + + static const int SHA256 = 0; + static const int SHA512 = 1; + static const int BLAKE2B = 2; + static const int KECCAK256 = 3; + static const int KECCAK512 = 4; + + class HasherImpl { + public: + virtual ~HasherImpl() = default; + virtual void append(const unsigned char* data, size_t size) = 0; + virtual td::BufferSlice finish() = 0; + virtual std::unique_ptr make_copy() const = 0; + }; + + private: + int id_ = 0; + static const unsigned BUF_SIZE = 256; + unsigned char buf_[BUF_SIZE]; + unsigned buf_ptr_ = 0; + std::unique_ptr impl_; +}; + +} \ No newline at end of file diff --git a/crypto/vm/arithops.cpp b/crypto/vm/arithops.cpp index 24bb8a488..7da535673 100644 --- a/crypto/vm/arithops.cpp +++ b/crypto/vm/arithops.cpp @@ -265,26 +265,42 @@ void register_add_mul_ops(OpcodeTable& cp0) { int exec_divmod(VmState* st, unsigned args, int quiet) { int round_mode = (int)(args & 3) - 1; - if (!(args & 12) || round_mode == 2) { + unsigned d = (args >> 2) & 3; + bool add = false; + if (d == 0 && st->get_global_version() >= 4) { + d = 3; + add = true; + } + if (d == 0 || round_mode == 2) { throw VmError{Excno::inv_opcode}; } Stack& stack = st->get_stack(); VM_LOG(st) << "execute DIV/MOD " << (args & 15); - stack.check_underflow(2); + stack.check_underflow(add ? 3 : 2); auto y = stack.pop_int(); + auto w = add ? stack.pop_int() : td::RefInt256{}; auto x = stack.pop_int(); - switch ((args >> 2) & 3) { - case 1: - stack.push_int_quiet(td::div(std::move(x), std::move(y), round_mode), quiet); - break; - case 2: - stack.push_int_quiet(td::mod(std::move(x), std::move(y), round_mode), quiet); - break; - case 3: { - auto dm = td::divmod(std::move(x), std::move(y), round_mode); - stack.push_int_quiet(std::move(dm.first), quiet); - stack.push_int_quiet(std::move(dm.second), quiet); - break; + if (add) { + CHECK(d == 3); + typename td::BigInt256::DoubleInt tmp{*x}, quot; + tmp += *w; + tmp.mod_div(*y, quot, round_mode); + stack.push_int_quiet(td::make_refint(quot), quiet); + stack.push_int_quiet(td::make_refint(tmp), quiet); + } else { + switch (d) { + case 1: + stack.push_int_quiet(td::div(std::move(x), std::move(y), round_mode), quiet); + break; + case 2: + stack.push_int_quiet(td::mod(std::move(x), std::move(y), round_mode), quiet); + break; + case 3: { + auto dm = td::divmod(std::move(x), std::move(y), round_mode); + stack.push_int_quiet(std::move(dm.first), quiet); + stack.push_int_quiet(std::move(dm.second), quiet); + break; + } } } return 0; @@ -292,11 +308,20 @@ int exec_divmod(VmState* st, unsigned args, int quiet) { std::string dump_divmod(CellSlice&, unsigned args, bool quiet) { int round_mode = (int)(args & 3); - if (!(args & 12) || round_mode == 3) { + unsigned d = (args >> 2) & 3; + bool add = false; + if (d == 0) { + d = 3; + add = true; + } + if (round_mode == 3) { return ""; } - std::string s = (args & 4) ? "DIV" : ""; - if (args & 8) { + std::string s = add ? "ADD" : ""; + if (d & 1) { + s += "DIV"; + } + if (d & 2) { s += "MOD"; } if (quiet) { @@ -312,32 +337,50 @@ int exec_shrmod(VmState* st, unsigned args, int mode) { args >>= 8; } int round_mode = (int)(args & 3) - 1; - if (!(args & 12) || round_mode == 2) { + unsigned d = (args >> 2) & 3; + bool add = false; + if (d == 0 && st->get_global_version() >= 4) { + d = 3; + add = true; + } + if (d == 0 || round_mode == 2) { throw VmError{Excno::inv_opcode}; } Stack& stack = st->get_stack(); VM_LOG(st) << "execute SHR/MOD " << (args & 15) << ',' << y; if (!(mode & 2)) { - stack.check_underflow(2); + stack.check_underflow(add ? 3 : 2); y = stack.pop_smallint_range(256); } else { - stack.check_underflow(1); + stack.check_underflow(add ? 2 : 1); } if (!y) { round_mode = -1; } + auto w = add ? stack.pop_int() : td::RefInt256{}; auto x = stack.pop_int(); - switch ((args >> 2) & 3) { - case 1: - stack.push_int_quiet(td::rshift(std::move(x), y, round_mode), mode & 1); - break; - case 3: - stack.push_int_quiet(td::rshift(x, y, round_mode), mode & 1); - // fallthrough - case 2: - x.write().mod_pow2(y, round_mode).normalize(); - stack.push_int_quiet(std::move(x), mode & 1); - break; + if (add) { + CHECK(d == 3); + typename td::BigInt256::DoubleInt tmp{*x}, quot; + tmp += *w; + typename td::BigInt256::DoubleInt tmp2{tmp}; + tmp2.rshift(y, round_mode).normalize(); + stack.push_int_quiet(td::make_refint(tmp2), mode & 1); + tmp.normalize().mod_pow2(y, round_mode).normalize(); + stack.push_int_quiet(td::make_refint(tmp), mode & 1); + } else { + switch (d) { + case 1: + stack.push_int_quiet(td::rshift(std::move(x), y, round_mode), mode & 1); + break; + case 3: + stack.push_int_quiet(td::rshift(x, y, round_mode), mode & 1); + // fallthrough + case 2: + x.write().mod_pow2(y, round_mode).normalize(); + stack.push_int_quiet(std::move(x), mode & 1); + break; + } } return 0; } @@ -349,7 +392,7 @@ std::string dump_shrmod(CellSlice&, unsigned args, int mode) { args >>= 8; } int round_mode = (int)(args & 3); - if (!(args & 12) || round_mode == 3) { + if (round_mode == 3) { return ""; } std::ostringstream os; @@ -366,6 +409,9 @@ std::string dump_shrmod(CellSlice&, unsigned args, int mode) { case 12: os << "RSHIFTMOD"; break; + case 0: + os << "ADDRSHIFTMOD"; + break; } if (round_mode) { os << "FRC"[round_mode]; @@ -378,20 +424,30 @@ std::string dump_shrmod(CellSlice&, unsigned args, int mode) { int exec_muldivmod(VmState* st, unsigned args, int quiet) { int round_mode = (int)(args & 3) - 1; - if (!(args & 12) || round_mode == 2) { + unsigned d = (args >> 2) & 3; + bool add = false; + if (d == 0 && st->get_global_version() >= 4) { + d = 3; + add = true; + } + if (d == 0 || round_mode == 2) { throw VmError{Excno::inv_opcode}; } Stack& stack = st->get_stack(); VM_LOG(st) << "execute MULDIV/MOD " << (args & 15); - stack.check_underflow(3); + stack.check_underflow(add ? 4 : 3); auto z = stack.pop_int(); + auto w = add ? stack.pop_int() : td::RefInt256{}; auto y = stack.pop_int(); auto x = stack.pop_int(); typename td::BigInt256::DoubleInt tmp{0}, quot; + if (add) { + tmp = *w; + } tmp.add_mul(*x, *y); auto q = td::make_refint(); tmp.mod_div(*z, quot, round_mode); - switch ((args >> 2) & 3) { + switch (d) { case 1: stack.push_int_quiet(td::make_refint(quot.normalize()), quiet); break; @@ -407,11 +463,20 @@ int exec_muldivmod(VmState* st, unsigned args, int quiet) { std::string dump_muldivmod(CellSlice&, unsigned args, bool quiet) { int round_mode = (int)(args & 3); - if (!(args & 12) || round_mode == 3) { + unsigned d = (args >> 2) & 3; + bool add = false; + if (d == 0) { + d = 3; + add = true; + } + if (round_mode == 3) { return ""; } - std::string s = (args & 4) ? "MULDIV" : "MUL"; - if (args & 8) { + std::string s = add ? "MULADD" : "MUL"; + if (d & 1) { + s += "DIV"; + } + if (d & 2) { s += "MOD"; } if (quiet) { @@ -427,25 +492,35 @@ int exec_mulshrmod(VmState* st, unsigned args, int mode) { args >>= 8; } int round_mode = (int)(args & 3) - 1; - if (!(args & 12) || round_mode == 2) { + unsigned d = (args >> 2) & 3; + bool add = false; + if (d == 0 && st->get_global_version() >= 4) { + d = 3; + add = true; + } + if (d == 0 || round_mode == 2) { throw VmError{Excno::inv_opcode}; } Stack& stack = st->get_stack(); VM_LOG(st) << "execute MULSHR/MOD " << (args & 15) << ',' << z; if (!(mode & 2)) { - stack.check_underflow(3); + stack.check_underflow(add ? 4 : 3); z = stack.pop_smallint_range(256); } else { - stack.check_underflow(2); + stack.check_underflow(add ? 3 : 2); } if (!z) { round_mode = -1; } + auto w = add ? stack.pop_int() : td::RefInt256{}; auto y = stack.pop_int(); auto x = stack.pop_int(); typename td::BigInt256::DoubleInt tmp{0}; + if (add) { + tmp = *w; + } tmp.add_mul(*x, *y); - switch ((args >> 2) & 3) { + switch (d) { case 1: tmp.rshift(z, round_mode).normalize(); stack.push_int_quiet(td::make_refint(tmp), mode & 1); @@ -471,7 +546,7 @@ std::string dump_mulshrmod(CellSlice&, unsigned args, int mode) { args >>= 8; } int round_mode = (int)(args & 3); - if (!(args & 12) || round_mode == 3) { + if (round_mode == 3) { return ""; } std::ostringstream os; @@ -488,6 +563,9 @@ std::string dump_mulshrmod(CellSlice&, unsigned args, int mode) { case 12: os << "MULRSHIFTMOD"; break; + case 0: + os << "MULADDRSHIFTMOD"; + break; } if (round_mode) { os << "FRC"[round_mode]; @@ -505,22 +583,32 @@ int exec_shldivmod(VmState* st, unsigned args, int mode) { args >>= 8; } int round_mode = (int)(args & 3) - 1; - if (!(args & 12) || round_mode == 2) { + unsigned d = (args >> 2) & 3; + bool add = false; + if (d == 0 && st->get_global_version() >= 4) { + d = 3; + add = true; + } + if (d == 0 || round_mode == 2) { throw VmError{Excno::inv_opcode}; } Stack& stack = st->get_stack(); VM_LOG(st) << "execute SHLDIV/MOD " << (args & 15) << ',' << y; if (!(mode & 2)) { - stack.check_underflow(3); + stack.check_underflow(add ? 4 : 3); y = stack.pop_smallint_range(256); } else { - stack.check_underflow(2); + stack.check_underflow(add ? 3 : 2); } auto z = stack.pop_int(); + auto w = add ? stack.pop_int() : td::RefInt256{}; auto x = stack.pop_int(); typename td::BigInt256::DoubleInt tmp{*x}, quot; tmp <<= y; - switch ((args >> 2) & 3) { + if (add) { + tmp += *w; + } + switch (d) { case 1: { tmp.mod_div(*z, quot, round_mode); stack.push_int_quiet(td::make_refint(quot.normalize()), mode & 1); @@ -549,11 +637,27 @@ std::string dump_shldivmod(CellSlice&, unsigned args, int mode) { args >>= 8; } int round_mode = (int)(args & 3); - if (!(args & 12) || round_mode == 3) { + if (round_mode == 3) { return ""; } std::ostringstream os; - os << (mode & 1 ? "Q" : "") << (args & 4 ? "LSHIFTDIV" : "LSHIFT") << (args & 8 ? "MOD" : ""); + if (mode & 1) { + os << "Q"; + } + switch (args & 12) { + case 4: + os << "LSHIFTDIV"; + break; + case 8: + os << "LSHIFTMOD"; + break; + case 12: + os << "LSHIFTDIVMOD"; + break; + case 0: + os << "LSHIFTADDDIVMOD"; + break; + } if (round_mode) { os << "FRC"[round_mode]; } @@ -855,7 +959,9 @@ int exec_cmp(VmState* st, int mode, bool quiet, const char* name) { auto y = stack.pop_int(); auto x = stack.pop_int(); if (!x->is_valid() || !y->is_valid()) { - stack.push_int_quiet(std::move(x), quiet); + td::RefInt256 r{true}; + r.unique_write().invalidate(); + stack.push_int_quiet(std::move(r), quiet); } else { int z = td::cmp(std::move(x), std::move(y)); stack.push_smallint(((mode >> (4 + z * 4)) & 15) - 8); diff --git a/crypto/vm/bls.cpp b/crypto/vm/bls.cpp new file mode 100644 index 000000000..f6ccc275c --- /dev/null +++ b/crypto/vm/bls.cpp @@ -0,0 +1,334 @@ +/* + This file is part of TON Blockchain Library. + + TON Blockchain Library is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version. + + TON Blockchain Library 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 Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with TON Blockchain Library. If not, see . +*/ + +#include "bls.h" +#include "blst.h" +#include "blst.hpp" +#include "excno.hpp" + +namespace vm { +namespace bls { + +static const std::string DST = "BLS_SIG_BLS12381G2_XMD:SHA-256_SSWU_RO_POP_"; + +bool verify(const P1 &pub, td::Slice msg, const P2 &sig) { + try { + blst::P1_Affine p1(pub.data(), P1_SIZE); + if (p1.is_inf()) { + return false; + } + blst::P2_Affine p2(sig.data(), P2_SIZE); + // core_verify checks for p1.in_group() and p2.in_group() + return p2.core_verify(p1, true, (const byte *)msg.data(), msg.size(), DST) == BLST_SUCCESS; + } catch (BLST_ERROR) { + return false; + } +} + +P2 aggregate(const std::vector &sig) { + try { + if (sig.empty()) { + throw VmError{Excno::unknown, "no signatures"}; + } + blst::P2 aggregated; + for (size_t i = 0; i < sig.size(); ++i) { + blst::P2_Affine p2(sig[i].data(), P2_SIZE); + if (i == 0) { + aggregated = p2.to_jacobian(); + } else { + aggregated.aggregate(p2); + } + } + P2 result; + aggregated.compress(result.data()); + return result; + } catch (BLST_ERROR e) { + throw VmError{Excno::unknown, PSTRING() << "blst error " << e}; + } +} + +bool fast_aggregate_verify(const std::vector &pubs, td::Slice msg, const P2 &sig) { + try { + if (pubs.empty()) { + return false; + } + blst::P1 p1_aggregated; + for (size_t i = 0; i < pubs.size(); ++i) { + blst::P1_Affine p1(pubs[i].data(), P1_SIZE); + if (p1.is_inf()) { + return false; + } + if (i == 0) { + p1_aggregated = p1.to_jacobian(); + } else { + p1_aggregated.aggregate(p1); + } + } + blst::P2_Affine p2(sig.data(), P2_SIZE); + blst::P1_Affine p1 = p1_aggregated.to_affine(); + // core_verify checks for p1.in_group() and p2.in_group() + return p2.core_verify(p1, true, (const byte *)msg.data(), msg.size(), DST) == BLST_SUCCESS; + } catch (BLST_ERROR) { + return false; + } +} + +bool aggregate_verify(const std::vector> &pubs_msgs, const P2 &sig) { + try { + if (pubs_msgs.empty()) { + return false; + } + std::unique_ptr pairing = std::make_unique(true, DST); + for (const auto &p : pubs_msgs) { + blst::P1_Affine p1(p.first.data(), P1_SIZE); + if (!p1.in_group() || p1.is_inf()) { + return false; + } + pairing->aggregate(&p1, nullptr, (const td::uint8 *)p.second.data(), p.second.size()); + } + pairing->commit(); + blst::P2_Affine p2(sig.data(), P2_SIZE); + if (!p2.in_group()) { + return false; + } + blst::PT pt(p2); + return pairing->finalverify(&pt); + } catch (BLST_ERROR) { + return false; + } +} + +template +static P generic_add(const P &a, const P &b) { + try { + blst_P point(a.data(), a.size() / 8); + point.aggregate(blst_P_Affine(b.data(), b.size() / 8)); + P result; + point.compress(result.data()); + return result; + } catch (BLST_ERROR e) { + throw VmError{Excno::unknown, PSTRING() << "blst error " << e}; + } +} + +template +static P generic_sub(const P &a, const P &b) { + try { + blst_P point(b.data(), b.size() / 8); + point.neg(); + point.aggregate(blst_P_Affine(a.data(), a.size() / 8)); + P result; + point.compress(result.data()); + return result; + } catch (BLST_ERROR e) { + throw VmError{Excno::unknown, PSTRING() << "blst error " << e}; + } +} + +template +static P generic_neg(const P &a) { + try { + blst_P point(a.data(), a.size() / 8); + point.neg(); + P result; + point.compress(result.data()); + return result; + } catch (BLST_ERROR e) { + throw VmError{Excno::unknown, PSTRING() << "blst error " << e}; + } +} + +template +static P generic_zero() { + static P zero = []() -> P { + blst_P point = blst_P(); + P result; + point.compress(result.data()); + return result; + }(); + return zero; +} + +template +static P generic_mul(const P &p, const td::RefInt256 &x) { + CHECK(x.not_null() && x->is_valid()); + if (x->sgn() == 0) { + return generic_zero(); + } + td::uint8 x_bytes[32]; + CHECK((x % get_r())->export_bytes(x_bytes, 32, false)); + try { + blst_P point(p.data(), p.size() / 8); + blst::Scalar scalar; + scalar.from_bendian(x_bytes, 32); + point.mult(scalar); + P result; + point.compress(result.data()); + return result; + } catch (BLST_ERROR e) { + throw VmError{Excno::unknown, PSTRING() << "blst error " << e}; + } +} + +template +static P generic_multiexp(const std::vector> &ps) { + if (ps.size() == 1) { + return generic_mul(ps[0].first, ps[0].second); + } + try { + std::vector points(ps.size()); + std::vector scalars(ps.size()); + std::vector scalar_ptrs(ps.size()); + for (size_t i = 0; i < ps.size(); ++i) { + points[i] = blst_P_Affine(ps[i].first.data(), ps[i].first.size() / 8); + CHECK(ps[i].second.not_null() && ps[i].second->is_valid()); + CHECK((ps[i].second % get_r())->export_bytes_lsb(scalars[i].data(), 32)); + scalar_ptrs[i] = (const byte *)&scalars[i]; + } + blst_P point = + ps.empty() ? blst_P() : blst_P_Affines::mult_pippenger(points.data(), points.size(), scalar_ptrs.data(), 256); + P result; + point.compress(result.data()); + return result; + } catch (BLST_ERROR e) { + throw VmError{Excno::unknown, PSTRING() << "blst error " << e}; + } +} + +template +static bool generic_in_group(const P &a) { + try { + blst_P point = blst_P(a.data(), a.size() / 8); + return point.in_group(); + } catch (BLST_ERROR e) { + return false; + } +} + +template +static bool generic_is_zero(const P &a) { + return a == generic_zero(); +} + +P1 g1_add(const P1 &a, const P1 &b) { + return generic_add(a, b); +} + +P1 g1_sub(const P1 &a, const P1 &b) { + return generic_sub(a, b); +} + +P1 g1_neg(const P1 &a) { + return generic_neg(a); +} + +P1 g1_mul(const P1 &p, const td::RefInt256 &x) { + return generic_mul(p, x); +} + +P1 g1_multiexp(const std::vector> &ps) { + return generic_multiexp(ps); +} + +P1 g1_zero() { + return generic_zero(); +} + +P1 map_to_g1(const FP &a) { + blst_fp fp; + blst_fp_from_bendian(&fp, a.data()); + blst_p1 point; + blst_map_to_g1(&point, &fp, nullptr); + P1 result; + blst_p1_compress(result.data(), &point); + return result; +} + +bool g1_in_group(const P1 &a) { + return generic_in_group(a); +} + +bool g1_is_zero(const P1 &a) { + return generic_is_zero(a); +} + +P2 g2_add(const P2 &a, const P2 &b) { + return generic_add(a, b); +} + +P2 g2_sub(const P2 &a, const P2 &b) { + return generic_sub(a, b); +} + +P2 g2_neg(const P2 &a) { + return generic_neg(a); +} + +P2 g2_mul(const P2 &p, const td::RefInt256 &x) { + return generic_mul(p, x); +} + +P2 g2_multiexp(const std::vector> &ps) { + return generic_multiexp(ps); +} + +P2 g2_zero() { + return generic_zero(); +} + +P2 map_to_g2(const FP2 &a) { + blst_fp2 fp2; + blst_fp_from_bendian(&fp2.fp[0], a.data()); + blst_fp_from_bendian(&fp2.fp[1], a.data() + FP_SIZE); + blst_p2 point; + blst_map_to_g2(&point, &fp2, nullptr); + P2 result; + blst_p2_compress(result.data(), &point); + return result; +} + +bool g2_in_group(const P2 &a) { + return generic_in_group(a); +} + +bool g2_is_zero(const P2 &a) { + return generic_is_zero(a); +} + +bool pairing(const std::vector> &ps) { + try { + std::unique_ptr pairing = std::make_unique(true, DST); + for (const auto &p : ps) { + blst::P1_Affine point1(p.first.data(), P1_SIZE); + blst::P2_Affine point2(p.second.data(), P2_SIZE); + pairing->raw_aggregate(&point2, &point1); + } + pairing->commit(); + return pairing->finalverify(); + } catch (BLST_ERROR e) { + throw VmError{Excno::unknown, PSTRING() << "blst error " << e}; + } +} + +td::RefInt256 get_r() { + static td::RefInt256 r = td::dec_string_to_int256( + td::Slice{"52435875175126190479447740508185965837690552500527637822603658699938581184513"}); + return r; +} + +} // namespace bls +} // namespace vm diff --git a/crypto/vm/bls.h b/crypto/vm/bls.h new file mode 100644 index 000000000..b7ffc1368 --- /dev/null +++ b/crypto/vm/bls.h @@ -0,0 +1,65 @@ +/* + This file is part of TON Blockchain Library. + + TON Blockchain Library is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version. + + TON Blockchain Library 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 Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with TON Blockchain Library. If not, see . +*/ + +#include +#include "td/utils/buffer.h" +#include "common/bitstring.h" +#include "common/refint.h" + +namespace vm { +namespace bls { + +const size_t P1_SIZE = 48; +const size_t P2_SIZE = 96; +const size_t FP_SIZE = 48; + +using P1 = td::BitArray; +using P2 = td::BitArray; +using FP = td::BitArray; +using FP2 = td::BitArray; + +bool verify(const P1 &pub, td::Slice msg, const P2 &sig); +P2 aggregate(const std::vector &sig); +bool fast_aggregate_verify(const std::vector &pubs, td::Slice msg, const P2 &sig); +bool aggregate_verify(const std::vector> &pubs_msgs, const P2 &sig); + +P1 g1_add(const P1 &a, const P1 &b); +P1 g1_sub(const P1 &a, const P1 &b); +P1 g1_neg(const P1 &a); +P1 g1_mul(const P1 &p, const td::RefInt256 &x); +P1 g1_multiexp(const std::vector> &ps); +P1 g1_zero(); +P1 map_to_g1(const FP &a); +bool g1_in_group(const P1 &a); +bool g1_is_zero(const P1 &a); + +P2 g2_add(const P2 &a, const P2 &b); +P2 g2_sub(const P2 &a, const P2 &b); +P2 g2_neg(const P2 &a); +P2 g2_mul(const P2 &p, const td::RefInt256 &x); +P2 g2_multiexp(const std::vector> &ps); +P2 g2_zero(); +P2 map_to_g2(const FP2 &a); +bool g2_in_group(const P2 &a); +bool g2_is_zero(const P2 &a); + +bool pairing(const std::vector> &ps); + +td::RefInt256 get_r(); + +} // namespace bls +} // namespace vm diff --git a/crypto/vm/boc.h b/crypto/vm/boc.h index 73c20bdfa..c7a1810d7 100644 --- a/crypto/vm/boc.h +++ b/crypto/vm/boc.h @@ -115,6 +115,9 @@ struct CellStorageStat { std::map seen; CellStorageStat() : cells(0), bits(0), public_cells(0) { } + explicit CellStorageStat(unsigned long long limit_cells) + : cells(0), bits(0), public_cells(0), limit_cells(limit_cells) { + } void clear_seen() { seen.clear(); } diff --git a/crypto/vm/contops.cpp b/crypto/vm/contops.cpp index a6a44ad3d..9610e4aa6 100644 --- a/crypto/vm/contops.cpp +++ b/crypto/vm/contops.cpp @@ -212,6 +212,77 @@ int exec_ret_data(VmState* st) { return st->ret(); } +// Mode: +// +1 = same_c3 (set c3 to code) +// +2 = push_0 (push an implicit 0 before running the code) +// +4 = load c4 (persistent data) from stack and return its final value +// +8 = load gas limit from stack and return consumed gas +// +16 = load c7 (smart-contract context) +// +32 = return c5 (actions) +// +64 = pop hard gas limit (enabled by ACCEPT) from stack as well +// +128 = isolated gas consumption (separate set of visited cells, reset chksgn counter) +// +256 = pop number N, return exactly N values from stack (only if res=0 or 1; if not enough then res=stk_und) +int exec_runvm_common(VmState* st, unsigned mode) { + if (mode >= 512) { + throw VmError{Excno::range_chk, "invalid flags"}; + } + st->consume_gas(VmState::runvm_gas_price); + Stack& stack = st->get_stack(); + bool with_data = mode & 4; + Ref c7; + Ref data, actions; + long long gas_max = (mode & 64) ? stack.pop_long_range(vm::GasLimits::infty) : vm::GasLimits::infty; + long long gas_limit = (mode & 8) ? stack.pop_long_range(vm::GasLimits::infty) : vm::GasLimits::infty; + if (!(mode & 64)) { + gas_max = gas_limit; + } else { + gas_max = std::max(gas_max, gas_limit); + } + if (mode & 16) { + c7 = stack.pop_tuple(); + } + if (with_data) { + data = stack.pop_cell(); + } + int ret_vals = -1; + if (mode & 256) { + ret_vals = stack.pop_smallint_range(1 << 30); + } + auto code = stack.pop_cellslice(); + int stack_size = stack.pop_smallint_range(stack.depth() - 1); + std::vector new_stack_entries(stack_size); + for (int i = 0; i < stack_size; ++i) { + new_stack_entries[stack_size - 1 - i] = stack.pop(); + } + td::Ref new_stack{true, std::move(new_stack_entries)}; + st->consume_stack_gas(new_stack); + gas_max = std::min(gas_max, st->get_gas_limits().gas_remaining); + gas_limit = std::min(gas_limit, st->get_gas_limits().gas_remaining); + vm::GasLimits gas{gas_limit, gas_max}; + + VmStateInterface::Guard guard{nullptr}; // Don't consume gas for creating/loading cells during VM init + VmState new_state{std::move(code), std::move(new_stack), gas, (int)mode & 3, std::move(data), + VmLog{}, std::vector>{}, std::move(c7)}; + new_state.set_chksig_always_succeed(st->get_chksig_always_succeed()); + new_state.set_global_version(st->get_global_version()); + st->run_child_vm(std::move(new_state), with_data, mode & 32, mode & 8, mode & 128, ret_vals); + return 0; +} + +int exec_runvm(VmState* st, unsigned args) { + VM_LOG(st) << "execute RUNVM " << (args & 4095) << "\n"; + return exec_runvm_common(st, args & 4095); +} + +int exec_runvmx(VmState* st) { + VM_LOG(st) << "execute RUNVMX\n"; + return exec_runvm_common(st, st->get_stack().pop_smallint_range(4095)); +} + +std::string dump_runvm(CellSlice&, unsigned args) { + return PSTRING() << "RUNVM " << (args & 4095); +} + void register_continuation_jump_ops(OpcodeTable& cp0) { using namespace std::placeholders; cp0.insert(OpcodeInstr::mksimple(0xd8, 8, "EXECUTE", exec_execute)) @@ -246,7 +317,9 @@ void register_continuation_jump_ops(OpcodeTable& cp0) { }, "JMPREFDATA"), compute_len_push_ref)) - .insert(OpcodeInstr::mksimple(0xdb3f, 16, "RETDATA", exec_ret_data)); + .insert(OpcodeInstr::mksimple(0xdb3f, 16, "RETDATA", exec_ret_data)) + .insert(OpcodeInstr::mkfixed(0xdb4, 12, 12, dump_runvm, exec_runvm)->require_version(4)) + .insert(OpcodeInstr::mksimple(0xdb50, 16, "RUNVMX ", exec_runvmx)->require_version(4)); } int exec_if(VmState* st) { diff --git a/crypto/vm/opctable.cpp b/crypto/vm/opctable.cpp index 0ee33385e..0521a7639 100644 --- a/crypto/vm/opctable.cpp +++ b/crypto/vm/opctable.cpp @@ -447,4 +447,24 @@ dump_arg_instr_func_t dump_2c_add(unsigned add, std::string prefix, std::string } // namespace instr +OpcodeInstr* OpcodeInstr::require_version(int required_version) { + return new OpcodeInstrWithVersion(this, required_version); +} + +int OpcodeInstrWithVersion::dispatch(VmState* st, CellSlice& cs, unsigned opcode, unsigned bits) const { + if (st->get_global_version() < required_version) { + st->consume_gas(gas_per_instr); + throw VmError{Excno::inv_opcode, "invalid opcode", opcode}; + } + return instr->dispatch(st, cs, opcode, bits); +} + +std::string OpcodeInstrWithVersion::dump(CellSlice& cs, unsigned opcode, unsigned bits) const { + return instr->dump(cs, opcode, bits); +} + +int OpcodeInstrWithVersion::instr_len(const CellSlice& cs, unsigned opcode, unsigned bits) const { + return instr->instr_len(cs, opcode, bits); +} + } // namespace vm diff --git a/crypto/vm/opctable.h b/crypto/vm/opctable.h index f9ea70235..34d2ef0a7 100644 --- a/crypto/vm/opctable.h +++ b/crypto/vm/opctable.h @@ -57,6 +57,9 @@ class OpcodeInstr { std::pair get_opcode_range() const { return {min_opcode, max_opcode}; } + + OpcodeInstr* require_version(int required_version); + //static OpcodeInstr* mksimple(unsigned opcode, unsigned opc_bits, std::string _name, exec_instr_func_t exec); static OpcodeInstr* mksimple(unsigned opcode, unsigned opc_bits, std::string _name, exec_simple_instr_func_t exec); static OpcodeInstr* mkfixed(unsigned opcode, unsigned opc_bits, unsigned arg_bits, dump_arg_instr_func_t dump, @@ -188,4 +191,19 @@ class OpcodeInstrExt : public OpcodeInstr { int instr_len(const CellSlice& cs, unsigned opcode, unsigned bits) const override; }; +class OpcodeInstrWithVersion : public OpcodeInstr { + public: + OpcodeInstrWithVersion() = delete; + OpcodeInstrWithVersion(OpcodeInstr* instr, int required_version) : + OpcodeInstr(instr->get_opcode_min(), instr->get_opcode_max()), instr(instr), required_version(required_version) { + } + ~OpcodeInstrWithVersion() override = default; + int dispatch(VmState* st, CellSlice& cs, unsigned opcode, unsigned bits) const override; + std::string dump(CellSlice& cs, unsigned opcode, unsigned bits) const override; + int instr_len(const CellSlice& cs, unsigned opcode, unsigned bits) const override; + private: + OpcodeInstr* instr; + int required_version; +}; + } // namespace vm diff --git a/crypto/vm/stack.cpp b/crypto/vm/stack.cpp index 18589812a..697605244 100644 --- a/crypto/vm/stack.cpp +++ b/crypto/vm/stack.cpp @@ -349,7 +349,7 @@ void StackEntry::for_each_scalar(const std::function& f } } -const StackEntry& tuple_index(const Tuple& tup, unsigned idx) { +const StackEntry& tuple_index(const Ref& tup, unsigned idx) { if (idx >= tup->size()) { throw VmError{Excno::range_chk, "tuple index out of range"}; } diff --git a/crypto/vm/stack.hpp b/crypto/vm/stack.hpp index 69ed107cd..6a52e4a2b 100644 --- a/crypto/vm/stack.hpp +++ b/crypto/vm/stack.hpp @@ -305,7 +305,7 @@ inline void swap(StackEntry& se1, StackEntry& se2) { se1.swap(se2); } -const StackEntry& tuple_index(const Tuple& tup, unsigned idx); +const StackEntry& tuple_index(const Ref& tup, unsigned idx); StackEntry tuple_extend_index(const Ref& tup, unsigned idx); unsigned tuple_extend_set_index(Ref& tup, unsigned idx, StackEntry&& value, bool force = false); diff --git a/crypto/vm/stackops.cpp b/crypto/vm/stackops.cpp index a52a90e2c..c8180f1a3 100644 --- a/crypto/vm/stackops.cpp +++ b/crypto/vm/stackops.cpp @@ -301,9 +301,7 @@ int exec_blkswap(VmState* st, unsigned args) { Stack& stack = st->get_stack(); VM_LOG(st) << "execute BLKSWAP " << x << ',' << y; stack.check_underflow(x + y); - std::reverse(stack.from_top(x + y), stack.from_top(y)); - std::reverse(stack.from_top(y), stack.top()); - std::reverse(stack.from_top(x + y), stack.top()); + std::rotate(stack.from_top(x + y), stack.from_top(y), stack.top()); return 0; } @@ -403,7 +401,7 @@ int exec_pick(VmState* st) { Stack& stack = st->get_stack(); VM_LOG(st) << "execute PICK\n"; stack.check_underflow(1); - int x = stack.pop_smallint_range(255); + int x = stack.pop_smallint_range(st->get_global_version() >= 4 ? (1 << 30) - 1 : 255); stack.check_underflow_p(x); stack.push(stack.fetch(x)); return 0; @@ -413,8 +411,9 @@ int exec_roll(VmState* st) { Stack& stack = st->get_stack(); VM_LOG(st) << "execute ROLL\n"; stack.check_underflow(1); - int x = stack.pop_smallint_range(255); + int x = stack.pop_smallint_range(st->get_global_version() >= 4 ? (1 << 30) - 1 : 255); stack.check_underflow_p(x); + st->consume_gas(std::max(x - 255, 0)); while (--x >= 0) { swap(stack[x], stack[x + 1]); } @@ -425,8 +424,9 @@ int exec_rollrev(VmState* st) { Stack& stack = st->get_stack(); VM_LOG(st) << "execute ROLLREV\n"; stack.check_underflow(1); - int x = stack.pop_smallint_range(255); + int x = stack.pop_smallint_range(st->get_global_version() >= 4 ? (1 << 30) - 1 : 255); stack.check_underflow_p(x); + st->consume_gas(std::max(x - 255, 0)); for (int i = 0; i < x; i++) { swap(stack[i], stack[i + 1]); } @@ -437,13 +437,14 @@ int exec_blkswap_x(VmState* st) { Stack& stack = st->get_stack(); VM_LOG(st) << "execute BLKSWX\n"; stack.check_underflow(2); - int y = stack.pop_smallint_range(255); - int x = stack.pop_smallint_range(255); + int y = stack.pop_smallint_range(st->get_global_version() >= 4 ? (1 << 30) - 1 : 255); + int x = stack.pop_smallint_range(st->get_global_version() >= 4 ? (1 << 30) - 1 : 255); stack.check_underflow(x + y); if (x > 0 && y > 0) { - std::reverse(stack.from_top(x + y), stack.from_top(y)); - std::reverse(stack.from_top(y), stack.top()); - std::reverse(stack.from_top(x + y), stack.top()); + if (st->get_global_version() >= 4) { + st->consume_gas(std::max(x + y - 255, 0)); + } + std::rotate(stack.from_top(x + y), stack.from_top(y), stack.top()); } return 0; } @@ -452,9 +453,10 @@ int exec_reverse_x(VmState* st) { Stack& stack = st->get_stack(); VM_LOG(st) << "execute REVX\n"; stack.check_underflow(2); - int y = stack.pop_smallint_range(255); - int x = stack.pop_smallint_range(255); + int y = stack.pop_smallint_range(st->get_global_version() >= 4 ? (1 << 30) - 1 : 255); + int x = stack.pop_smallint_range(st->get_global_version() >= 4 ? (1 << 30) - 1 : 255); stack.check_underflow(x + y); + st->consume_gas(std::max(x - 255, 0)); std::reverse(stack.from_top(x + y), stack.from_top(y)); return 0; } @@ -463,7 +465,7 @@ int exec_drop_x(VmState* st) { Stack& stack = st->get_stack(); VM_LOG(st) << "execute DROPX\n"; stack.check_underflow(1); - int x = stack.pop_smallint_range(255); + int x = stack.pop_smallint_range(st->get_global_version() >= 4 ? (1 << 30) - 1 : 255); stack.check_underflow(x); stack.pop_many(x); return 0; @@ -482,7 +484,7 @@ int exec_xchg_x(VmState* st) { Stack& stack = st->get_stack(); VM_LOG(st) << "execute XCHGX\n"; stack.check_underflow(1); - int x = stack.pop_smallint_range(255); + int x = stack.pop_smallint_range(st->get_global_version() >= 4 ? (1 << 30) - 1 : 255); stack.check_underflow_p(x); swap(stack[0], stack[x]); return 0; @@ -499,7 +501,7 @@ int exec_chkdepth(VmState* st) { Stack& stack = st->get_stack(); VM_LOG(st) << "execute CHKDEPTH\n"; stack.check_underflow(1); - int x = stack.pop_smallint_range(255); + int x = stack.pop_smallint_range(st->get_global_version() >= 4 ? (1 << 30) - 1 : 255); stack.check_underflow(x); return 0; } @@ -508,10 +510,11 @@ int exec_onlytop_x(VmState* st) { Stack& stack = st->get_stack(); VM_LOG(st) << "execute ONLYTOPX\n"; stack.check_underflow(1); - int x = stack.pop_smallint_range(255); + int x = stack.pop_smallint_range(st->get_global_version() >= 4 ? (1 << 30) - 1 : 255); stack.check_underflow(x); int n = stack.depth(), d = n - x; if (d > 0) { + st->consume_gas(std::max(x - 255, 0)); for (int i = n - 1; i >= d; i--) { stack[i] = std::move(stack[i - d]); } @@ -524,7 +527,7 @@ int exec_only_x(VmState* st) { Stack& stack = st->get_stack(); VM_LOG(st) << "execute ONLYX\n"; stack.check_underflow(1); - int x = stack.pop_smallint_range(255); + int x = stack.pop_smallint_range(st->get_global_version() >= 4 ? (1 << 30) - 1 : 255); stack.check_underflow(x); stack.pop_many(stack.depth() - x); return 0; diff --git a/crypto/vm/tonops.cpp b/crypto/vm/tonops.cpp index a164df833..0dd15d805 100644 --- a/crypto/vm/tonops.cpp +++ b/crypto/vm/tonops.cpp @@ -26,8 +26,15 @@ #include "vm/dict.h" #include "vm/boc.h" #include "Ed25519.h" +#include "vm/Hasher.h" +#include "block/block-auto.h" +#include "block/block-parse.h" +#include "crypto/ellcurve/secp256k1.h" +#include "crypto/ellcurve/p256.h" #include "openssl/digest.hpp" +#include +#include "bls.h" namespace vm { @@ -78,6 +85,12 @@ int exec_set_gas_limit(VmState* st) { return exec_set_gas_generic(st, gas); } +int exec_gas_consumed(VmState* st) { + VM_LOG(st) << "execute GASCONSUMED"; + st->get_stack().push_smallint(st->gas_consumed()); + return 0; +} + int exec_commit(VmState* st) { VM_LOG(st) << "execute COMMIT"; st->force_commit(); @@ -88,6 +101,7 @@ void register_basic_gas_ops(OpcodeTable& cp0) { using namespace std::placeholders; cp0.insert(OpcodeInstr::mksimple(0xf800, 16, "ACCEPT", exec_accept)) .insert(OpcodeInstr::mksimple(0xf801, 16, "SETGASLIMIT", exec_set_gas_limit)) + .insert(OpcodeInstr::mksimple(0xf802, 16, "GASCONSUMED", exec_gas_consumed)->require_version(4)) .insert(OpcodeInstr::mksimple(0xf80f, 16, "COMMIT", exec_commit)); } @@ -95,17 +109,21 @@ void register_ton_gas_ops(OpcodeTable& cp0) { using namespace std::placeholders; } +static const StackEntry& get_param(VmState* st, unsigned idx) { + auto tuple = st->get_c7(); + auto t1 = tuple_index(tuple, 0).as_tuple_range(255); + if (t1.is_null()) { + throw VmError{Excno::type_chk, "intermediate value is not a tuple"}; + } + return tuple_index(t1, idx); +} + int exec_get_param(VmState* st, unsigned idx, const char* name) { if (name) { VM_LOG(st) << "execute " << name; } Stack& stack = st->get_stack(); - auto tuple = st->get_c7(); - auto t1 = tuple_index(*tuple, 0).as_tuple_range(255); - if (t1.is_null()) { - throw VmError{Excno::type_chk, "intermediate value is not a tuple"}; - } - stack.push(tuple_index(*t1, idx)); + stack.push(get_param(st, idx)); return 0; } @@ -192,6 +210,41 @@ int exec_set_global_var(VmState* st) { return exec_set_global_common(st, args); } +int exec_get_prev_blocks_info(VmState* st, unsigned idx, const char* name) { + idx &= 3; + VM_LOG(st) << "execute " << name; + Stack& stack = st->get_stack(); + auto tuple = st->get_c7(); + auto t1 = tuple_index(tuple, 0).as_tuple_range(255); + if (t1.is_null()) { + throw VmError{Excno::type_chk, "intermediate value is not a tuple"}; + } + auto t2 = tuple_index(t1, 13).as_tuple_range(255); + if (t2.is_null()) { + throw VmError{Excno::type_chk, "intermediate value is not a tuple"}; + } + stack.push(tuple_index(t2, idx)); + return 0; +} + +int exec_get_global_id(VmState* st) { + Ref config = get_param(st, 9).as_cell(); + if (config.is_null()) { + throw VmError{Excno::type_chk, "intermediate value is not a cell"}; + } + Dictionary config_dict{std::move(config), 32}; + Ref cell = config_dict.lookup_ref(td::BitArray<32>{19}); + if (cell.is_null()) { + throw VmError{Excno::unknown, "invalid global-id config"}; + } + CellSlice cs = load_cell_slice(cell); + if (cs.size() < 32) { + throw VmError{Excno::unknown, "invalid global-id config"}; + } + st->get_stack().push_smallint(cs.fetch_long(32)); + return 0; +} + void register_ton_config_ops(OpcodeTable& cp0) { using namespace std::placeholders; cp0.insert(OpcodeInstr::mkfixedrange(0xf820, 0xf823, 16, 4, instr::dump_1c("GETPARAM "), exec_get_var_param)) @@ -202,10 +255,17 @@ void register_ton_config_ops(OpcodeTable& cp0) { .insert(OpcodeInstr::mksimple(0xf827, 16, "BALANCE", std::bind(exec_get_param, _1, 7, "BALANCE"))) .insert(OpcodeInstr::mksimple(0xf828, 16, "MYADDR", std::bind(exec_get_param, _1, 8, "MYADDR"))) .insert(OpcodeInstr::mksimple(0xf829, 16, "CONFIGROOT", std::bind(exec_get_param, _1, 9, "CONFIGROOT"))) - .insert(OpcodeInstr::mkfixedrange(0xf82a, 0xf830, 16, 4, instr::dump_1c("GETPARAM "), exec_get_var_param)) + .insert(OpcodeInstr::mksimple(0xf82a, 16, "MYCODE", std::bind(exec_get_param, _1, 10, "MYCODE"))) + .insert(OpcodeInstr::mksimple(0xf82b, 16, "INCOMINGVALUE", std::bind(exec_get_param, _1, 11, "INCOMINGVALUE"))) + .insert(OpcodeInstr::mksimple(0xf82c, 16, "STORAGEFEES", std::bind(exec_get_param, _1, 12, "STORAGEFEES"))) + .insert(OpcodeInstr::mksimple(0xf82d, 16, "PREVBLOCKSINFOTUPLE", std::bind(exec_get_param, _1, 13, "PREVBLOCKSINFOTUPLE"))) + .insert(OpcodeInstr::mkfixedrange(0xf82e, 0xf830, 16, 4, instr::dump_1c("GETPARAM "), exec_get_var_param)) .insert(OpcodeInstr::mksimple(0xf830, 16, "CONFIGDICT", exec_get_config_dict)) .insert(OpcodeInstr::mksimple(0xf832, 16, "CONFIGPARAM", std::bind(exec_get_config_param, _1, false))) .insert(OpcodeInstr::mksimple(0xf833, 16, "CONFIGOPTPARAM", std::bind(exec_get_config_param, _1, true))) + .insert(OpcodeInstr::mksimple(0xf83400, 24, "PREVMCBLOCKS", std::bind(exec_get_prev_blocks_info, _1, 0, "PREVMCBLOCKS"))->require_version(4)) + .insert(OpcodeInstr::mksimple(0xf83401, 24, "PREVKEYBLOCK", std::bind(exec_get_prev_blocks_info, _1, 1, "PREVKEYBLOCK"))->require_version(4)) + .insert(OpcodeInstr::mksimple(0xf835, 16, "GLOBALID", exec_get_global_id)->require_version(4)) .insert(OpcodeInstr::mksimple(0xf840, 16, "GETGLOBVAR", exec_get_global_var)) .insert(OpcodeInstr::mkfixedrange(0xf841, 0xf860, 16, 5, instr::dump_1c_and(31, "GETGLOB "), exec_get_global)) .insert(OpcodeInstr::mksimple(0xf860, 16, "SETGLOBVAR", exec_set_global_var)) @@ -216,11 +276,11 @@ static constexpr int randseed_idx = 6; td::RefInt256 generate_randu256(VmState* st) { auto tuple = st->get_c7(); - auto t1 = tuple_index(*tuple, 0).as_tuple_range(255); + auto t1 = tuple_index(tuple, 0).as_tuple_range(255); if (t1.is_null()) { throw VmError{Excno::type_chk, "intermediate value is not a tuple"}; } - auto seedv = tuple_index(*t1, randseed_idx).as_int(); + auto seedv = tuple_index(t1, randseed_idx).as_int(); if (seedv.is_null()) { throw VmError{Excno::type_chk, "random seed is not an integer"}; } @@ -276,12 +336,12 @@ int exec_set_rand(VmState* st, bool mix) { throw VmError{Excno::range_chk, "new random seed out of range"}; } auto tuple = st->get_c7(); - auto t1 = tuple_index(*tuple, 0).as_tuple_range(255); + auto t1 = tuple_index(tuple, 0).as_tuple_range(255); if (t1.is_null()) { throw VmError{Excno::type_chk, "intermediate value is not a tuple"}; } if (mix) { - auto seedv = tuple_index(*t1, randseed_idx).as_int(); + auto seedv = tuple_index(t1, randseed_idx).as_int(); if (seedv.is_null()) { throw VmError{Excno::type_chk, "random seed is not an integer"}; } @@ -356,6 +416,77 @@ int exec_compute_sha256(VmState* st) { return 0; } +int exec_hash_ext(VmState* st, unsigned args) { + bool rev = (args >> 8) & 1; + bool append = (args >> 9) & 1; + int hash_id = args & 255; + VM_LOG(st) << "execute HASHEXT" << (append ? "A" : "") << (rev ? "R" : "") << " " << (hash_id == 255 ? -1 : hash_id); + Stack& stack = st->get_stack(); + if (hash_id == 255) { + hash_id = stack.pop_smallint_range(254); + } + int cnt = stack.pop_smallint_range(stack.depth() - 1); + Hasher hasher{hash_id}; + size_t total_bits = 0; + long long gas_consumed = 0; + for (int i = 0; i < cnt; ++i) { + td::ConstBitPtr data{nullptr}; + unsigned size; + int idx = rev ? i : cnt - 1 - i; + auto slice = stack[idx].as_slice(); + if (slice.not_null()) { + data = slice->data_bits(); + size = slice->size(); + } else { + auto builder = stack[idx].as_builder(); + if (builder.not_null()) { + data = builder->data_bits(); + size = builder->size(); + } else { + stack.pop_many(cnt); + throw VmError{Excno::type_chk, "expected slice or builder"}; + } + } + total_bits += size; + long long gas_total = (i + 1) * VmState::hash_ext_entry_gas_price + total_bits / 8 / hasher.bytes_per_gas_unit(); + st->consume_gas(gas_total - gas_consumed); + gas_consumed = gas_total; + hasher.append(data, size); + } + stack.pop_many(cnt); + td::BufferSlice hash = hasher.finish(); + if (append) { + Ref builder = stack.pop_builder(); + if (!builder->can_extend_by(hash.size() * 8)) { + throw VmError{Excno::cell_ov}; + } + builder.write().store_bytes(hash.as_slice()); + stack.push_builder(std::move(builder)); + } else { + if (hash.size() <= 32) { + td::RefInt256 res{true}; + CHECK(res.write().import_bytes((unsigned char*)hash.data(), hash.size(), false)); + stack.push_int(std::move(res)); + } else { + std::vector res; + for (size_t i = 0; i < hash.size(); i += 32) { + td::RefInt256 x{true}; + CHECK(x.write().import_bytes((unsigned char*)hash.data() + i, std::min(hash.size() - i, 32), false)); + res.push_back(std::move(x)); + } + stack.push_tuple(std::move(res)); + } + } + return 0; +} + +std::string dump_hash_ext(CellSlice& cs, unsigned args) { + bool rev = (args >> 8) & 1; + bool append = (args >> 9) & 1; + int hash_id = args & 255; + return PSTRING() << "HASHEXT" << (append ? "A" : "") << (rev ? "R" : "") << " " << (hash_id == 255 ? -1 : hash_id); +} + int exec_ed25519_check_signature(VmState* st, bool from_slice) { VM_LOG(st) << "execute CHKSIGN" << (from_slice ? 'S' : 'U'); Stack& stack = st->get_stack(); @@ -385,19 +516,636 @@ int exec_ed25519_check_signature(VmState* st, bool from_slice) { if (!key_int->export_bytes(key, 32, false)) { throw VmError{Excno::range_chk, "Ed25519 public key must fit in an unsigned 256-bit integer"}; } + st->register_chksgn_call(); td::Ed25519::PublicKey pub_key{td::SecureString(td::Slice{key, 32})}; auto res = pub_key.verify_signature(td::Slice{data, data_len}, td::Slice{signature, 64}); stack.push_bool(res.is_ok() || st->get_chksig_always_succeed()); return 0; } +int exec_ecrecover(VmState* st) { + VM_LOG(st) << "execute ECRECOVER"; + Stack& stack = st->get_stack(); + stack.check_underflow(4); + auto s = stack.pop_int(); + auto r = stack.pop_int(); + auto v = (td::uint8)stack.pop_smallint_range(255); + auto hash = stack.pop_int(); + + unsigned char signature[65]; + if (!r->export_bytes(signature, 32, false)) { + throw VmError{Excno::range_chk, "r must fit in an unsigned 256-bit integer"}; + } + if (!s->export_bytes(signature + 32, 32, false)) { + throw VmError{Excno::range_chk, "s must fit in an unsigned 256-bit integer"}; + } + signature[64] = v; + unsigned char hash_bytes[32]; + if (!hash->export_bytes(hash_bytes, 32, false)) { + throw VmError{Excno::range_chk, "data hash must fit in an unsigned 256-bit integer"}; + } + st->consume_gas(VmState::ecrecover_gas_price); + unsigned char public_key[65]; + if (td::ecrecover(hash_bytes, signature, public_key)) { + td::uint8 h = public_key[0]; + td::RefInt256 x1{true}, x2{true}; + CHECK(x1.write().import_bytes(public_key + 1, 32, false)); + CHECK(x2.write().import_bytes(public_key + 33, 32, false)); + stack.push_smallint(h); + stack.push_int(std::move(x1)); + stack.push_int(std::move(x2)); + stack.push_bool(true); + } else { + stack.push_bool(false); + } + return 0; +} + +int exec_p256_chksign(VmState* st, bool from_slice) { + VM_LOG(st) << "execute P256_CHKSIGN" << (from_slice ? 'S' : 'U'); + Stack& stack = st->get_stack(); + stack.check_underflow(3); + auto key_cs = stack.pop_cellslice(); + auto signature_cs = stack.pop_cellslice(); + unsigned char data[128], key[33], signature[64]; + unsigned data_len; + if (from_slice) { + auto cs = stack.pop_cellslice(); + if (cs->size() & 7) { + throw VmError{Excno::cell_und, "Slice does not consist of an integer number of bytes"}; + } + data_len = (cs->size() >> 3); + CHECK(data_len <= sizeof(data)); + CHECK(cs->prefetch_bytes(data, data_len)); + } else { + auto hash_int = stack.pop_int(); + data_len = 32; + if (!hash_int->export_bytes(data, data_len, false)) { + throw VmError{Excno::range_chk, "data hash must fit in an unsigned 256-bit integer"}; + } + } + if (!signature_cs->prefetch_bytes(signature, 64)) { + throw VmError{Excno::cell_und, "P256 signature must contain at least 512 data bits"}; + } + if (!key_cs->prefetch_bytes(key, 33)) { + throw VmError{Excno::cell_und, "P256 public key must contain at least 33 data bytes"}; + } + st->consume_gas(VmState::p256_chksgn_gas_price); + auto res = td::p256_check_signature(td::Slice{data, data_len}, td::Slice{key, 33}, td::Slice{signature, 64}); + if (res.is_error()) { + VM_LOG(st) << "P256_CHKSIGN: " << res.error().message(); + } + stack.push_bool(res.is_ok() || st->get_chksig_always_succeed()); + return 0; +} + +static_assert(crypto_scalarmult_ristretto255_BYTES == 32, "Unexpected value of ristretto255 constant"); +static_assert(crypto_scalarmult_ristretto255_SCALARBYTES == 32, "Unexpected value of ristretto255 constant"); +static_assert(crypto_core_ristretto255_BYTES == 32, "Unexpected value of ristretto255 constant"); +static_assert(crypto_core_ristretto255_HASHBYTES == 64, "Unexpected value of ristretto255 constant"); +static_assert(crypto_core_ristretto255_SCALARBYTES == 32, "Unexpected value of ristretto255 constant"); +static_assert(crypto_core_ristretto255_NONREDUCEDSCALARBYTES == 64, "Unexpected value of ristretto255 constant"); + +int exec_ristretto255_from_hash(VmState* st) { + VM_LOG(st) << "execute RIST255_FROMHASH"; + Stack& stack = st->get_stack(); + stack.check_underflow(2); + auto x2 = stack.pop_int(); + auto x1 = stack.pop_int(); + st->consume_gas(VmState::rist255_fromhash_gas_price); + unsigned char xb[64], rb[32]; + if (!x1->export_bytes(xb, 32, false)) { + throw VmError{Excno::range_chk, "x1 must fit in an unsigned 256-bit integer"}; + } + if (!x2->export_bytes(xb + 32, 32, false)) { + throw VmError{Excno::range_chk, "x2 must fit in an unsigned 256-bit integer"}; + } + CHECK(sodium_init() >= 0); + crypto_core_ristretto255_from_hash(rb, xb); + td::RefInt256 r{true}; + CHECK(r.write().import_bytes(rb, 32, false)); + stack.push_int(std::move(r)); + return 0; +} + +int exec_ristretto255_validate(VmState* st, bool quiet) { + VM_LOG(st) << "execute RIST255_VALIDATE"; + Stack& stack = st->get_stack(); + auto x = stack.pop_int(); + st->consume_gas(VmState::rist255_validate_gas_price); + unsigned char xb[64]; + CHECK(sodium_init() >= 0); + if (!x->export_bytes(xb, 32, false) || !crypto_core_ristretto255_is_valid_point(xb)) { + if (quiet) { + stack.push_bool(false); + return 0; + } + throw VmError{Excno::range_chk, "x is not a valid encoded element"}; + } + if (quiet) { + stack.push_bool(true); + } + return 0; +} + +int exec_ristretto255_add(VmState* st, bool quiet) { + VM_LOG(st) << "execute RIST255_ADD"; + Stack& stack = st->get_stack(); + stack.check_underflow(2); + auto y = stack.pop_int(); + auto x = stack.pop_int(); + st->consume_gas(VmState::rist255_add_gas_price); + unsigned char xb[32], yb[32], rb[32]; + CHECK(sodium_init() >= 0); + if (!x->export_bytes(xb, 32, false) || !y->export_bytes(yb, 32, false) || crypto_core_ristretto255_add(rb, xb, yb)) { + if (quiet) { + stack.push_bool(false); + return 0; + } + throw VmError{Excno::range_chk, "x and/or y are not valid encoded elements"}; + } + td::RefInt256 r{true}; + CHECK(r.write().import_bytes(rb, 32, false)); + stack.push_int(std::move(r)); + if (quiet) { + stack.push_bool(true); + } + return 0; +} + +int exec_ristretto255_sub(VmState* st, bool quiet) { + VM_LOG(st) << "execute RIST255_SUB"; + Stack& stack = st->get_stack(); + stack.check_underflow(2); + auto y = stack.pop_int(); + auto x = stack.pop_int(); + st->consume_gas(VmState::rist255_add_gas_price); + unsigned char xb[32], yb[32], rb[32]; + CHECK(sodium_init() >= 0); + if (!x->export_bytes(xb, 32, false) || !y->export_bytes(yb, 32, false) || crypto_core_ristretto255_sub(rb, xb, yb)) { + if (quiet) { + stack.push_bool(false); + return 0; + } + throw VmError{Excno::range_chk, "x and/or y are not valid encoded elements"}; + } + td::RefInt256 r{true}; + CHECK(r.write().import_bytes(rb, 32, false)); + stack.push_int(std::move(r)); + if (quiet) { + stack.push_bool(true); + } + return 0; +} + +static bool export_bytes_little(const td::RefInt256& n, unsigned char* nb) { + if (!n->export_bytes(nb, 32, false)) { + return false; + } + std::reverse(nb, nb + 32); + return true; +} + +static td::RefInt256 get_ristretto256_l() { + static td::RefInt256 l = + (td::make_refint(1) << 252) + td::dec_string_to_int256(td::Slice("27742317777372353535851937790883648493")); + return l; +} + +int exec_ristretto255_mul(VmState* st, bool quiet) { + VM_LOG(st) << "execute RIST255_MUL"; + Stack& stack = st->get_stack(); + stack.check_underflow(2); + auto n = stack.pop_int() % get_ristretto256_l(); + auto x = stack.pop_int(); + st->consume_gas(VmState::rist255_mul_gas_price); + unsigned char xb[32], nb[32], rb[32]; + memset(rb, 255, sizeof(rb)); + CHECK(sodium_init() >= 0); + if (!x->export_bytes(xb, 32, false) || !export_bytes_little(n, nb) || crypto_scalarmult_ristretto255(rb, nb, xb)) { + if (std::all_of(rb, rb + 32, [](unsigned char c) { return c == 255; })) { + if (quiet) { + stack.push_bool(false); + return 0; + } + throw VmError{Excno::range_chk, "invalid x or n"}; + } + } + td::RefInt256 r{true}; + CHECK(r.write().import_bytes(rb, 32, false)); + stack.push_int(std::move(r)); + if (quiet) { + stack.push_bool(true); + } + return 0; +} + +int exec_ristretto255_mul_base(VmState* st, bool quiet) { + VM_LOG(st) << "execute RIST255_MULBASE"; + Stack& stack = st->get_stack(); + auto n = stack.pop_int() % get_ristretto256_l(); + st->consume_gas(VmState::rist255_mulbase_gas_price); + unsigned char nb[32], rb[32]; + memset(rb, 255, sizeof(rb)); + CHECK(sodium_init() >= 0); + if (!export_bytes_little(n, nb) || crypto_scalarmult_ristretto255_base(rb, nb)) { + if (std::all_of(rb, rb + 32, [](unsigned char c) { return c == 255; })) { + if (quiet) { + stack.push_bool(false); + return 0; + } + throw VmError{Excno::range_chk, "invalid n"}; + } + } + td::RefInt256 r{true}; + CHECK(r.write().import_bytes(rb, 32, false)); + stack.push_int(std::move(r)); + if (quiet) { + stack.push_bool(true); + } + return 0; +} + +int exec_ristretto255_push_l(VmState* st) { + VM_LOG(st) << "execute RIST255_PUSHL"; + Stack& stack = st->get_stack(); + stack.push_int(get_ristretto256_l()); + return 0; +} + +static bls::P1 slice_to_bls_p1(const CellSlice& cs) { + bls::P1 p1; + if (!cs.prefetch_bytes(p1.as_slice())) { + throw VmError{Excno::cell_und, PSTRING() << "slice must contain at least " << bls::P1_SIZE << " bytes"}; + } + return p1; +} + +static bls::P2 slice_to_bls_p2(const CellSlice& cs) { + bls::P2 p2; + if (!cs.prefetch_bytes(p2.as_slice())) { + throw VmError{Excno::cell_und, PSTRING() << "slice must contain at least " << bls::P2_SIZE << " bytes"}; + } + return p2; +} + +static bls::FP slice_to_bls_fp(const CellSlice& cs) { + bls::FP fp; + if (!cs.prefetch_bytes(fp.as_slice())) { + throw VmError{Excno::cell_und, PSTRING() << "slice must contain at least " << bls::FP_SIZE << " bytes"}; + } + return fp; +} + +static bls::FP2 slice_to_bls_fp2(const CellSlice& cs) { + bls::FP2 fp2; + if (!cs.prefetch_bytes(fp2.as_slice())) { + throw VmError{Excno::cell_und, PSTRING() << "slice must contain at least " << bls::FP_SIZE * 2 << " bytes"}; + } + return fp2; +} + +static td::BufferSlice slice_to_bls_msg(const CellSlice& cs) { + if (cs.size() % 8 != 0) { + throw VmError{Excno::cell_und, "message does not consist of an integer number of bytes"}; + } + size_t msg_size = cs.size() / 8; + td::BufferSlice s(msg_size); + cs.prefetch_bytes((td::uint8*)s.data(), (int)msg_size); + return s; +} + +static Ref bls_to_slice(td::Slice s) { + VmStateInterface::Guard guard{nullptr}; // Don't consume gas for finalize and load_cell_slice + CellBuilder cb; + return load_cell_slice_ref(cb.store_bytes(s).finalize()); +} + +static long long bls_calculate_multiexp_gas(int n, long long base, long long coef1, long long coef2) { + int l = 4; + while ((1LL << (l + 1)) <= n) { + ++l; + } + return base + n * coef1 + n * coef2 / l; +} + +int exec_bls_verify(VmState* st) { + VM_LOG(st) << "execute BLS_VERIFY"; + Stack& stack = st->get_stack(); + stack.check_underflow(3); + st->consume_gas(st->bls_verify_gas_price); + bls::P2 sig = slice_to_bls_p2(*stack.pop_cellslice()); + td::BufferSlice msg = slice_to_bls_msg(*stack.pop_cellslice()); + bls::P1 pub = slice_to_bls_p1(*stack.pop_cellslice()); + stack.push_bool(bls::verify(pub, msg, sig)); + return 0; +} + +int exec_bls_aggregate(VmState* st) { + VM_LOG(st) << "execute BLS_AGGREGATE"; + Stack& stack = st->get_stack(); + int n = stack.pop_smallint_range(stack.depth() - 1, 1); + st->consume_gas( + std::max(0LL, VmState::bls_aggregate_base_gas_price + (long long)n * VmState::bls_aggregate_element_gas_price)); + std::vector sigs(n); + for (int i = n - 1; i >= 0; --i) { + sigs[i] = slice_to_bls_p2(*stack.pop_cellslice()); + } + bls::P2 aggregated = bls::aggregate(sigs); + stack.push_cellslice(bls_to_slice(aggregated.as_slice())); + return 0; +} + +int exec_bls_fast_aggregate_verify(VmState* st) { + VM_LOG(st) << "execute BLS_FASTAGGREGATEVERIFY"; + Stack& stack = st->get_stack(); + stack.check_underflow(3); + Ref sig = stack.pop_cellslice(); + Ref msg = stack.pop_cellslice(); + int n = stack.pop_smallint_range(stack.depth() - 1); + st->consume_gas(VmState::bls_fast_aggregate_verify_base_gas_price + + (long long)n * VmState::bls_fast_aggregate_verify_element_gas_price); + std::vector pubs(n); + for (int i = n - 1; i >= 0; --i) { + pubs[i] = slice_to_bls_p1(*stack.pop_cellslice()); + } + stack.push_bool(bls::fast_aggregate_verify(pubs, slice_to_bls_msg(*msg), slice_to_bls_p2(*sig))); + return 0; +} + +int exec_bls_aggregate_verify(VmState* st) { + VM_LOG(st) << "execute BLS_AGGREGATEVERIFY"; + Stack& stack = st->get_stack(); + stack.check_underflow(2); + Ref sig = stack.pop_cellslice(); + int n = stack.pop_smallint_range((stack.depth() - 1) / 2); + st->consume_gas(VmState::bls_aggregate_verify_base_gas_price + + (long long)n * VmState::bls_aggregate_verify_element_gas_price); + std::vector> vec(n); + for (int i = n - 1; i >= 0; --i) { + vec[i].second = slice_to_bls_msg(*stack.pop_cellslice()); + vec[i].first = slice_to_bls_p1(*stack.pop_cellslice()); + } + stack.push_bool(bls::aggregate_verify(vec, slice_to_bls_p2(*sig))); + return 0; +} + +int exec_bls_g1_add(VmState* st) { + VM_LOG(st) << "execute BLS_G1_ADD"; + Stack& stack = st->get_stack(); + stack.check_underflow(2); + st->consume_gas(VmState::bls_g1_add_sub_gas_price); + bls::P1 b = slice_to_bls_p1(*stack.pop_cellslice()); + bls::P1 a = slice_to_bls_p1(*stack.pop_cellslice()); + stack.push_cellslice(bls_to_slice(bls::g1_add(a, b).as_slice())); + return 0; +} + +int exec_bls_g1_sub(VmState* st) { + VM_LOG(st) << "execute BLS_G1_SUB"; + Stack& stack = st->get_stack(); + stack.check_underflow(2); + st->consume_gas(VmState::bls_g1_add_sub_gas_price); + bls::P1 b = slice_to_bls_p1(*stack.pop_cellslice()); + bls::P1 a = slice_to_bls_p1(*stack.pop_cellslice()); + stack.push_cellslice(bls_to_slice(bls::g1_sub(a, b).as_slice())); + return 0; +} + +int exec_bls_g1_neg(VmState* st) { + VM_LOG(st) << "execute BLS_G1_NEG"; + Stack& stack = st->get_stack(); + st->consume_gas(VmState::bls_g1_neg_gas_price); + bls::P1 a = slice_to_bls_p1(*stack.pop_cellslice()); + stack.push_cellslice(bls_to_slice(bls::g1_neg(a).as_slice())); + return 0; +} + +int exec_bls_g1_mul(VmState* st) { + VM_LOG(st) << "execute BLS_G1_MUL"; + Stack& stack = st->get_stack(); + stack.check_underflow(2); + st->consume_gas(VmState::bls_g1_mul_gas_price); + td::RefInt256 x = stack.pop_int_finite(); + bls::P1 p = slice_to_bls_p1(*stack.pop_cellslice()); + stack.push_cellslice(bls_to_slice(bls::g1_mul(p, x).as_slice())); + return 0; +} + +int exec_bls_g1_multiexp(VmState* st) { + VM_LOG(st) << "execute BLS_G1_MULTIEXP"; + Stack& stack = st->get_stack(); + int n = stack.pop_smallint_range((stack.depth() - 1) / 2); + st->consume_gas(bls_calculate_multiexp_gas(n, VmState::bls_g1_multiexp_base_gas_price, + VmState::bls_g1_multiexp_coef1_gas_price, + VmState::bls_g1_multiexp_coef2_gas_price)); + std::vector> ps(n); + for (int i = n - 1; i >= 0; --i) { + ps[i].second = stack.pop_int_finite(); + ps[i].first = slice_to_bls_p1(*stack.pop_cellslice()); + } + stack.push_cellslice(bls_to_slice(bls::g1_multiexp(ps).as_slice())); + return 0; +} + +int exec_bls_g1_zero(VmState* st) { + VM_LOG(st) << "execute BLS_G1_ZERO"; + Stack& stack = st->get_stack(); + stack.push_cellslice(bls_to_slice(bls::g1_zero().as_slice())); + return 0; +} + +int exec_bls_map_to_g1(VmState* st) { + VM_LOG(st) << "execute BLS_MAP_TO_G1"; + Stack& stack = st->get_stack(); + st->consume_gas(VmState::bls_map_to_g1_gas_price); + bls::FP a = slice_to_bls_fp(*stack.pop_cellslice()); + stack.push_cellslice(bls_to_slice(bls::map_to_g1(a).as_slice())); + return 0; +} + +int exec_bls_g1_in_group(VmState* st) { + VM_LOG(st) << "execute BLS_G1_INGROUP"; + Stack& stack = st->get_stack(); + st->consume_gas(VmState::bls_g1_in_group_gas_price); + bls::P1 a = slice_to_bls_p1(*stack.pop_cellslice()); + stack.push_bool(bls::g1_in_group(a)); + return 0; +} + +int exec_bls_g1_is_zero(VmState* st) { + VM_LOG(st) << "execute BLS_G1_ISZERO"; + Stack& stack = st->get_stack(); + bls::P1 a = slice_to_bls_p1(*stack.pop_cellslice()); + stack.push_bool(bls::g1_is_zero(a)); + return 0; +} + +int exec_bls_g2_add(VmState* st) { + VM_LOG(st) << "execute BLS_G2_ADD"; + Stack& stack = st->get_stack(); + stack.check_underflow(2); + st->consume_gas(VmState::bls_g2_add_sub_gas_price); + bls::P2 b = slice_to_bls_p2(*stack.pop_cellslice()); + bls::P2 a = slice_to_bls_p2(*stack.pop_cellslice()); + stack.push_cellslice(bls_to_slice(bls::g2_add(a, b).as_slice())); + return 0; +} + +int exec_bls_g2_sub(VmState* st) { + VM_LOG(st) << "execute BLS_G2_SUB"; + Stack& stack = st->get_stack(); + stack.check_underflow(2); + st->consume_gas(VmState::bls_g2_add_sub_gas_price); + bls::P2 b = slice_to_bls_p2(*stack.pop_cellslice()); + bls::P2 a = slice_to_bls_p2(*stack.pop_cellslice()); + stack.push_cellslice(bls_to_slice(bls::g2_sub(a, b).as_slice())); + return 0; +} + +int exec_bls_g2_neg(VmState* st) { + VM_LOG(st) << "execute BLS_G2_NEG"; + Stack& stack = st->get_stack(); + st->consume_gas(VmState::bls_g2_neg_gas_price); + bls::P2 a = slice_to_bls_p2(*stack.pop_cellslice()); + stack.push_cellslice(bls_to_slice(bls::g2_neg(a).as_slice())); + return 0; +} + +int exec_bls_g2_mul(VmState* st) { + VM_LOG(st) << "execute BLS_G2_MUL"; + Stack& stack = st->get_stack(); + stack.check_underflow(2); + st->consume_gas(VmState::bls_g2_mul_gas_price); + td::RefInt256 x = stack.pop_int_finite(); + bls::P2 p = slice_to_bls_p2(*stack.pop_cellslice()); + stack.push_cellslice(bls_to_slice(bls::g2_mul(p, x).as_slice())); + return 0; +} + +int exec_bls_g2_multiexp(VmState* st) { + VM_LOG(st) << "execute BLS_G2_MULTIEXP"; + Stack& stack = st->get_stack(); + int n = stack.pop_smallint_range((stack.depth() - 1) / 2); + st->consume_gas(bls_calculate_multiexp_gas(n, VmState::bls_g2_multiexp_base_gas_price, + VmState::bls_g2_multiexp_coef1_gas_price, + VmState::bls_g2_multiexp_coef2_gas_price)); + std::vector> ps(n); + for (int i = n - 1; i >= 0; --i) { + ps[i].second = stack.pop_int_finite(); + ps[i].first = slice_to_bls_p2(*stack.pop_cellslice()); + } + stack.push_cellslice(bls_to_slice(bls::g2_multiexp(ps).as_slice())); + return 0; +} + +int exec_bls_g2_zero(VmState* st) { + VM_LOG(st) << "execute BLS_G2_ZERO"; + Stack& stack = st->get_stack(); + stack.push_cellslice(bls_to_slice(bls::g2_zero().as_slice())); + return 0; +} + +int exec_bls_map_to_g2(VmState* st) { + VM_LOG(st) << "execute BLS_MAP_TO_G2"; + Stack& stack = st->get_stack(); + st->consume_gas(VmState::bls_map_to_g2_gas_price); + bls::FP2 a = slice_to_bls_fp2(*stack.pop_cellslice()); + stack.push_cellslice(bls_to_slice(bls::map_to_g2(a).as_slice())); + return 0; +} + +int exec_bls_g2_in_group(VmState* st) { + VM_LOG(st) << "execute BLS_G2_INGROUP"; + Stack& stack = st->get_stack(); + st->consume_gas(VmState::bls_g2_in_group_gas_price); + bls::P2 a = slice_to_bls_p2(*stack.pop_cellslice()); + stack.push_bool(bls::g2_in_group(a)); + return 0; +} + +int exec_bls_g2_is_zero(VmState* st) { + VM_LOG(st) << "execute BLS_G2_ISZERO"; + Stack& stack = st->get_stack(); + bls::P2 a = slice_to_bls_p2(*stack.pop_cellslice()); + stack.push_bool(bls::g2_is_zero(a)); + return 0; +} + +int exec_bls_pairing(VmState* st) { + VM_LOG(st) << "execute BLS_PAIRING"; + Stack& stack = st->get_stack(); + int n = stack.pop_smallint_range((stack.depth() - 1) / 2); + st->consume_gas(VmState::bls_pairing_base_gas_price + (long long)n * VmState::bls_pairing_element_gas_price); + std::vector> ps(n); + for (int i = n - 1; i >= 0; --i) { + ps[i].second = slice_to_bls_p2(*stack.pop_cellslice()); + ps[i].first = slice_to_bls_p1(*stack.pop_cellslice()); + } + stack.push_bool(bls::pairing(ps)); + return 0; +} + +int exec_bls_push_r(VmState* st) { + VM_LOG(st) << "execute BLS_PUSHR"; + Stack& stack = st->get_stack(); + stack.push_int(bls::get_r()); + return 0; +} + void register_ton_crypto_ops(OpcodeTable& cp0) { using namespace std::placeholders; cp0.insert(OpcodeInstr::mksimple(0xf900, 16, "HASHCU", std::bind(exec_compute_hash, _1, 0))) .insert(OpcodeInstr::mksimple(0xf901, 16, "HASHSU", std::bind(exec_compute_hash, _1, 1))) .insert(OpcodeInstr::mksimple(0xf902, 16, "SHA256U", exec_compute_sha256)) + .insert(OpcodeInstr::mkfixed(0xf904 >> 2, 14, 10, dump_hash_ext, exec_hash_ext)->require_version(4)) .insert(OpcodeInstr::mksimple(0xf910, 16, "CHKSIGNU", std::bind(exec_ed25519_check_signature, _1, false))) - .insert(OpcodeInstr::mksimple(0xf911, 16, "CHKSIGNS", std::bind(exec_ed25519_check_signature, _1, true))); + .insert(OpcodeInstr::mksimple(0xf911, 16, "CHKSIGNS", std::bind(exec_ed25519_check_signature, _1, true))) + .insert(OpcodeInstr::mksimple(0xf912, 16, "ECRECOVER", exec_ecrecover)->require_version(4)) + .insert(OpcodeInstr::mksimple(0xf914, 16, "P256_CHKSIGNU", std::bind(exec_p256_chksign, _1, false))->require_version(4)) + .insert(OpcodeInstr::mksimple(0xf915, 16, "P256_CHKSIGNS", std::bind(exec_p256_chksign, _1, true))->require_version(4)) + + .insert(OpcodeInstr::mksimple(0xf920, 16, "RIST255_FROMHASH", exec_ristretto255_from_hash)->require_version(4)) + .insert(OpcodeInstr::mksimple(0xf921, 16, "RIST255_VALIDATE", std::bind(exec_ristretto255_validate, _1, false))->require_version(4)) + .insert(OpcodeInstr::mksimple(0xf922, 16, "RIST255_ADD", std::bind(exec_ristretto255_add, _1, false))->require_version(4)) + .insert(OpcodeInstr::mksimple(0xf923, 16, "RIST255_SUB", std::bind(exec_ristretto255_sub, _1, false))->require_version(4)) + .insert(OpcodeInstr::mksimple(0xf924, 16, "RIST255_MUL", std::bind(exec_ristretto255_mul, _1, false))->require_version(4)) + .insert(OpcodeInstr::mksimple(0xf925, 16, "RIST255_MULBASE", std::bind(exec_ristretto255_mul_base, _1, false))->require_version(4)) + .insert(OpcodeInstr::mksimple(0xf926, 16, "RIST255_PUSHL", exec_ristretto255_push_l)->require_version(4)) + + .insert(OpcodeInstr::mksimple(0xb7f921, 24, "RIST255_QVALIDATE", std::bind(exec_ristretto255_validate, _1, true))->require_version(4)) + .insert(OpcodeInstr::mksimple(0xb7f922, 24, "RIST255_QADD", std::bind(exec_ristretto255_add, _1, true))->require_version(4)) + .insert(OpcodeInstr::mksimple(0xb7f923, 24, "RIST255_QSUB", std::bind(exec_ristretto255_sub, _1, true))->require_version(4)) + .insert(OpcodeInstr::mksimple(0xb7f924, 24, "RIST255_QMUL", std::bind(exec_ristretto255_mul, _1, true))->require_version(4)) + .insert(OpcodeInstr::mksimple(0xb7f925, 24, "RIST255_QMULBASE", std::bind(exec_ristretto255_mul_base, _1, true))->require_version(4)) + + .insert(OpcodeInstr::mksimple(0xf93000, 24, "BLS_VERIFY", exec_bls_verify)->require_version(4)) + .insert(OpcodeInstr::mksimple(0xf93001, 24, "BLS_AGGREGATE", exec_bls_aggregate)->require_version(4)) + .insert(OpcodeInstr::mksimple(0xf93002, 24, "BLS_FASTAGGREGATEVERIFY", exec_bls_fast_aggregate_verify)->require_version(4)) + .insert(OpcodeInstr::mksimple(0xf93003, 24, "BLS_AGGREGATEVERIFY", exec_bls_aggregate_verify)->require_version(4)) + + .insert(OpcodeInstr::mksimple(0xf93010, 24, "BLS_G1_ADD", exec_bls_g1_add)->require_version(4)) + .insert(OpcodeInstr::mksimple(0xf93011, 24, "BLS_G1_SUB", exec_bls_g1_sub)->require_version(4)) + .insert(OpcodeInstr::mksimple(0xf93012, 24, "BLS_G1_NEG", exec_bls_g1_neg)->require_version(4)) + .insert(OpcodeInstr::mksimple(0xf93013, 24, "BLS_G1_MUL", exec_bls_g1_mul)->require_version(4)) + .insert(OpcodeInstr::mksimple(0xf93014, 24, "BLS_G1_MULTIEXP", exec_bls_g1_multiexp)->require_version(4)) + .insert(OpcodeInstr::mksimple(0xf93015, 24, "BLS_G1_ZERO", exec_bls_g1_zero)->require_version(4)) + .insert(OpcodeInstr::mksimple(0xf93016, 24, "BLS_MAP_TO_G1", exec_bls_map_to_g1)->require_version(4)) + .insert(OpcodeInstr::mksimple(0xf93017, 24, "BLS_G1_INGROUP", exec_bls_g1_in_group)->require_version(4)) + .insert(OpcodeInstr::mksimple(0xf93018, 24, "BLS_G1_ISZERO", exec_bls_g1_is_zero)->require_version(4)) + + .insert(OpcodeInstr::mksimple(0xf93020, 24, "BLS_G2_ADD", exec_bls_g2_add)->require_version(4)) + .insert(OpcodeInstr::mksimple(0xf93021, 24, "BLS_G2_SUB", exec_bls_g2_sub)->require_version(4)) + .insert(OpcodeInstr::mksimple(0xf93022, 24, "BLS_G2_NEG", exec_bls_g2_neg)->require_version(4)) + .insert(OpcodeInstr::mksimple(0xf93023, 24, "BLS_G2_MUL", exec_bls_g2_mul)->require_version(4)) + .insert(OpcodeInstr::mksimple(0xf93024, 24, "BLS_G2_MULTIEXP", exec_bls_g2_multiexp)->require_version(4)) + .insert(OpcodeInstr::mksimple(0xf93025, 24, "BLS_G2_ZERO", exec_bls_g2_zero)->require_version(4)) + .insert(OpcodeInstr::mksimple(0xf93026, 24, "BLS_MAP_TO_G2", exec_bls_map_to_g2)->require_version(4)) + .insert(OpcodeInstr::mksimple(0xf93027, 24, "BLS_G2_INGROUP", exec_bls_g2_in_group)->require_version(4)) + .insert(OpcodeInstr::mksimple(0xf93028, 24, "BLS_G2_ISZERO", exec_bls_g2_is_zero)->require_version(4)) + + .insert(OpcodeInstr::mksimple(0xf93030, 24, "BLS_PAIRING", exec_bls_pairing)->require_version(4)) + .insert(OpcodeInstr::mksimple(0xf93031, 24, "BLS_PUSHR", exec_bls_push_r)->require_version(4)); } int exec_compute_data_size(VmState* st, int mode) { @@ -769,6 +1517,219 @@ int exec_send_raw_message(VmState* st) { return install_output_action(st, cb.finalize()); } +int parse_addr_workchain(CellSlice cs) { + // anycast_info$_ depth:(#<= 30) { depth >= 1 } rewrite_pfx:(bits depth) = Anycast; + // addr_std$10 anycast:(Maybe Anycast) workchain_id:int8 address:bits256 = MsgAddressInt; + // addr_var$11 anycast:(Maybe Anycast) addr_len:(## 9) workchain_id:int32 address:(bits addr_len) = MsgAddressInt; + if (cs.fetch_ulong(1) != 1) { + throw VmError{Excno::range_chk, "not an internal MsgAddress"}; + } + bool is_var = cs.fetch_ulong(1); + if (cs.fetch_ulong(1) == 1) { // Anycast + unsigned depth; + cs.fetch_uint_leq(30, depth); + cs.skip_first(depth); + } + + if (is_var) { + cs.skip_first(9); + return (int)cs.fetch_long(32); + } else { + return (int)cs.fetch_long(8); + } +} + +int exec_send_message(VmState* st) { + VM_LOG(st) << "execute SENDMSG"; + Stack& stack = st->get_stack(); + stack.check_underflow(2); + int mode = stack.pop_smallint_range(2047); + bool send = !(mode & 1024); + mode &= ~1024; + if (mode >= 256) { + throw VmError{Excno::range_chk}; + } + Ref msg_cell = stack.pop_cell(); + + block::gen::MessageRelaxed::Record msg; + if (!tlb::type_unpack_cell(msg_cell, block::gen::t_MessageRelaxed_Any, msg)) { + throw VmError{Excno::unknown, "invalid message"}; + } + + Ref my_addr = get_param(st, 8).as_slice(); + if (my_addr.is_null()) { + throw VmError{Excno::type_chk, "invalid param MYADDR"}; + } + bool ihr_disabled; + Ref dest; + td::RefInt256 value; + td::RefInt256 user_fwd_fee, user_ihr_fee; + bool have_extra_currencies = false; + bool ext_msg = msg.info->prefetch_ulong(1); + if (ext_msg) { // External message + block::gen::CommonMsgInfoRelaxed::Record_ext_out_msg_info info; + if (!tlb::csr_unpack(msg.info, info)) { + throw VmError{Excno::unknown, "invalid message"}; + } + ihr_disabled = true; + dest = std::move(info.dest); + value = user_fwd_fee = user_ihr_fee = td::zero_refint(); + } else { // Internal message + block::gen::CommonMsgInfoRelaxed::Record_int_msg_info info; + if (!tlb::csr_unpack(msg.info, info)) { + throw VmError{Excno::unknown, "invalid message"}; + } + ihr_disabled = info.ihr_disabled; + dest = std::move(info.dest); + Ref extra; + if (!block::tlb::t_CurrencyCollection.unpack_special(info.value.write(), value, extra)) { + throw VmError{Excno::unknown, "invalid message"}; + } + have_extra_currencies = !extra.is_null(); + user_fwd_fee = block::tlb::t_Grams.as_integer(info.fwd_fee); + user_ihr_fee = block::tlb::t_Grams.as_integer(info.ihr_fee); + } + + bool is_masterchain = parse_addr_workchain(*my_addr) == -1 || (!ext_msg && parse_addr_workchain(*dest) == -1); + Ref config_dict = get_param(st, 9).as_cell(); + Dictionary config{config_dict, 32}; + Ref prices_cell = config.lookup_ref(td::BitArray<32>{is_masterchain ? 24 : 25}); + block::gen::MsgForwardPrices::Record prices; + if (prices_cell.is_null() || !tlb::unpack_cell(std::move(prices_cell), prices)) { + throw VmError{Excno::unknown, "invalid prices config"}; + } + + // msg_fwd_fees = (lump_price + ceil((bit_price * msg.bits + cell_price * msg.cells)/2^16)) nanograms + // bits in the root cell of a message are not included in msg.bits (lump_price pays for them) + vm::VmStorageStat stat(1 << 13); + CellSlice cs = load_cell_slice(msg_cell); + cs.skip_first(cs.size()); + stat.add_storage(cs); + + if (!ext_msg) { + if (mode & 128) { // value is balance of the contract + Ref balance = get_param(st, 7).as_tuple(); + if (balance.is_null()) { + throw VmError{Excno::type_chk, "invalid param BALANCE"}; + } + value = tuple_index(balance, 0).as_int(); + if (value.is_null()) { + throw VmError{Excno::type_chk, "invalid param BALANCE"}; + } + have_extra_currencies |= !tuple_index(balance, 1).as_cell().is_null(); + } else if (mode & 64) { // value += value of incoming message + Ref balance = get_param(st, 11).as_tuple(); + if (balance.is_null()) { + throw VmError{Excno::type_chk, "invalid param INCOMINGVALUE"}; + } + td::RefInt256 balance_grams = tuple_index(balance, 0).as_int(); + if (balance_grams.is_null()) { + throw VmError{Excno::type_chk, "invalid param INCOMINGVALUE"}; + } + value += balance_grams; + have_extra_currencies |= !tuple_index(balance, 1).as_cell().is_null(); + } + } + + bool have_init = msg.init->bit_at(0); + bool init_ref = have_init && msg.init->bit_at(1); + bool body_ref = msg.body->bit_at(0); + + td::RefInt256 fwd_fee, ihr_fee; + td::uint64 cells = stat.cells; + td::uint64 bits = stat.bits; + auto compute_fees = [&]() { + td::uint64 fwd_fee_short = prices.lump_price + td::uint128(prices.bit_price) + .mult(bits) + .add(td::uint128(prices.cell_price).mult(cells)) + .add(td::uint128(0xffffu)) + .shr(16) + .lo(); + td::uint64 ihr_fee_short; + if (ihr_disabled) { + ihr_fee_short = 0; + } else { + ihr_fee_short = td::uint128(fwd_fee_short).mult(prices.ihr_price_factor).shr(16).lo(); + } + fwd_fee = td::RefInt256{true, fwd_fee_short}; + ihr_fee = td::RefInt256{true, ihr_fee_short}; + fwd_fee = std::max(fwd_fee, user_fwd_fee); + if (!ihr_disabled) { + ihr_fee = std::max(ihr_fee, user_ihr_fee); + } + }; + compute_fees(); + + auto stored_grams_len = [](td::RefInt256 const& x) -> unsigned { + unsigned bits = x->bit_size(false); + return 4 + ((bits + 7) & ~7); + }; + + auto msg_root_bits = [&]() -> unsigned { + unsigned bits; + // CommonMsgInfo + if (ext_msg) { + bits = 2 + my_addr->size() + dest->size() + 32 + 64; + } else { + bits = 4 + my_addr->size() + dest->size() + stored_grams_len(value) + 1 + 32 + 64; + td::RefInt256 fwd_fee_first = (fwd_fee * prices.first_frac) >> 16; + bits += stored_grams_len(fwd_fee - fwd_fee_first); + bits += stored_grams_len(ihr_fee); + } + // init + bits++; + if (have_init) { + bits += 1 + (init_ref ? 0 : msg.init->size() - 2); + } + // body + bits++; + bits += (body_ref ? 0 : msg.body->size() - 1); + return bits; + }; + auto msg_root_refs = [&]() -> unsigned { + unsigned refs; + // CommonMsgInfo + if (ext_msg) { + refs = 0; + } else { + refs = have_extra_currencies; + } + // init + if (have_init) { + refs += (init_ref ? 1 : msg.init->size_refs()); + } + // body + refs += (body_ref ? 1 : msg.body->size_refs()); + return refs; + }; + + if (have_init && !init_ref && (msg_root_bits() > Cell::max_bits || msg_root_refs() > Cell::max_refs)) { + init_ref = true; + cells += 1; + bits += msg.init->size() - 2; + compute_fees(); + } + if (!body_ref && (msg_root_bits() > Cell::max_bits || msg_root_refs() > Cell::max_refs)) { + body_ref = true; + cells += 1; + bits += msg.body->size() - 1; + compute_fees(); + } + stack.push_int(fwd_fee + ihr_fee); + + if (send) { + CellBuilder cb; + if (!(cb.store_ref_bool(get_actions(st)) // out_list$_ {n:#} prev:^(OutList n) + && cb.store_long_bool(0x0ec3c86d, 32) // action_send_msg#0ec3c86d + && cb.store_long_bool(mode, 8) // mode:(## 8) + && cb.store_ref_bool(std::move(msg_cell)))) { + throw VmError{Excno::cell_ov, "cannot serialize raw output message into an output action cell"}; + } + return install_output_action(st, cb.finalize()); + } + return 0; +} + bool store_grams(CellBuilder& cb, td::RefInt256 value) { int k = value->bit_size(false); return k <= 15 * 8 && cb.store_long_bool((k + 7) >> 3, 4) && cb.store_int256_bool(*value, (k + 7) & -8, false); @@ -778,7 +1739,7 @@ int exec_reserve_raw(VmState* st, int mode) { VM_LOG(st) << "execute RAWRESERVE" << (mode & 1 ? "X" : ""); Stack& stack = st->get_stack(); stack.check_underflow(2 + (mode & 1)); - int f = stack.pop_smallint_range(15); + int f = stack.pop_smallint_range(st->get_global_version() >= 4 ? 31 : 15); Ref y; if (mode & 1) { y = stack.pop_maybe_cell(); @@ -814,12 +1775,20 @@ int exec_set_lib_code(VmState* st) { VM_LOG(st) << "execute SETLIBCODE"; Stack& stack = st->get_stack(); stack.check_underflow(2); - int mode = stack.pop_smallint_range(2); + int mode; + if (st->get_global_version() >= 4) { + mode = stack.pop_smallint_range(31); + if ((mode & ~16) > 2) { + throw VmError{Excno::range_chk}; + } + } else { + mode = stack.pop_smallint_range(2); + } auto code = stack.pop_cell(); CellBuilder cb; if (!(cb.store_ref_bool(get_actions(st)) // out_list$_ {n:#} prev:^(OutList n) && cb.store_long_bool(0x26fa1dd4, 32) // action_change_library#26fa1dd4 - && cb.store_long_bool(mode * 2 + 1, 8) // mode:(## 7) { mode <= 2 } + && cb.store_long_bool(mode * 2 + 1, 8) // mode:(## 7) && cb.store_ref_bool(std::move(code)))) { // libref:LibRef = OutAction; throw VmError{Excno::cell_ov, "cannot serialize new library code into an output action cell"}; } @@ -830,7 +1799,15 @@ int exec_change_lib(VmState* st) { VM_LOG(st) << "execute CHANGELIB"; Stack& stack = st->get_stack(); stack.check_underflow(2); - int mode = stack.pop_smallint_range(2); + int mode; + if (st->get_global_version() >= 4) { + mode = stack.pop_smallint_range(31); + if ((mode & ~16) > 2) { + throw VmError{Excno::range_chk}; + } + } else { + mode = stack.pop_smallint_range(2); + } auto hash = stack.pop_int_finite(); if (!hash->unsigned_fits_bits(256)) { throw VmError{Excno::range_chk, "library hash must be non-negative"}; @@ -852,7 +1829,8 @@ void register_ton_message_ops(OpcodeTable& cp0) { .insert(OpcodeInstr::mksimple(0xfb03, 16, "RAWRESERVEX", std::bind(exec_reserve_raw, _1, 1))) .insert(OpcodeInstr::mksimple(0xfb04, 16, "SETCODE", exec_set_code)) .insert(OpcodeInstr::mksimple(0xfb06, 16, "SETLIBCODE", exec_set_lib_code)) - .insert(OpcodeInstr::mksimple(0xfb07, 16, "CHANGELIB", exec_change_lib)); + .insert(OpcodeInstr::mksimple(0xfb07, 16, "CHANGELIB", exec_change_lib)) + .insert(OpcodeInstr::mksimple(0xfb08, 16, "SENDMSG", exec_send_message)->require_version(4)); } void register_ton_ops(OpcodeTable& cp0) { diff --git a/crypto/vm/tupleops.cpp b/crypto/vm/tupleops.cpp index ef906f6ac..f4be2c76b 100644 --- a/crypto/vm/tupleops.cpp +++ b/crypto/vm/tupleops.cpp @@ -99,7 +99,7 @@ int exec_mktuple_var(VmState* st) { int exec_tuple_index_common(Stack& stack, unsigned n) { auto tuple = stack.pop_tuple_range(255); - stack.push(tuple_index(*tuple, n)); + stack.push(tuple_index(tuple, n)); return 0; } @@ -322,11 +322,11 @@ int exec_tuple_index2(VmState* st, unsigned args) { VM_LOG(st) << "execute INDEX2 " << i << "," << j; Stack& stack = st->get_stack(); auto tuple = stack.pop_tuple_range(255); - auto t1 = tuple_index(*tuple, i).as_tuple_range(255); + auto t1 = tuple_index(tuple, i).as_tuple_range(255); if (t1.is_null()) { throw VmError{Excno::type_chk, "intermediate value is not a tuple"}; } - stack.push(tuple_index(*t1, j)); + stack.push(tuple_index(t1, j)); return 0; } @@ -342,15 +342,15 @@ int exec_tuple_index3(VmState* st, unsigned args) { VM_LOG(st) << "execute INDEX3 " << i << "," << j << "," << k; Stack& stack = st->get_stack(); auto tuple = stack.pop_tuple_range(255); - auto t1 = tuple_index(*tuple, i).as_tuple_range(255); + auto t1 = tuple_index(tuple, i).as_tuple_range(255); if (t1.is_null()) { throw VmError{Excno::type_chk, "intermediate value is not a tuple"}; } - auto t2 = tuple_index(*t1, j).as_tuple_range(255); + auto t2 = tuple_index(t1, j).as_tuple_range(255); if (t2.is_null()) { throw VmError{Excno::type_chk, "intermediate value is not a tuple"}; } - stack.push(tuple_index(*t2, k)); + stack.push(tuple_index(t2, k)); return 0; } diff --git a/crypto/vm/vm.cpp b/crypto/vm/vm.cpp index fbea19522..630f49916 100644 --- a/crypto/vm/vm.cpp +++ b/crypto/vm/vm.cpp @@ -389,7 +389,7 @@ int VmState::throw_exception(int excno) { stack_ref.push_smallint(0); stack_ref.push_smallint(excno); code.clear(); - gas.consume_chk(exception_gas_price); + consume_gas_chk(exception_gas_price); return jump(get_c2()); } @@ -399,7 +399,7 @@ int VmState::throw_exception(int excno, StackEntry&& arg) { stack_ref.push(std::move(arg)); stack_ref.push_smallint(excno); code.clear(); - gas.consume_chk(exception_gas_price); + consume_gas_chk(exception_gas_price); return jump(get_c2()); } @@ -453,54 +453,41 @@ int VmState::step() { VM_LOG(this) << "execute implicit JMPREF"; auto ref_cell = code->prefetch_ref(); VM_LOG_MASK(this, vm::VmLog::ExecLocation) << "code cell hash: " << ref_cell->get_hash().to_hex() << " offset: 0"; - gas.consume_chk(implicit_jmpref_gas_price); + consume_gas_chk(implicit_jmpref_gas_price); Ref cont = Ref{true, load_cell_slice_ref(std::move(ref_cell)), get_cp()}; return jump(std::move(cont)); } else { VM_LOG(this) << "execute implicit RET"; - gas.consume_chk(implicit_ret_gas_price); + consume_gas_chk(implicit_ret_gas_price); return ret(); } } -int VmState::run() { - if (code.is_null() || stack.is_null()) { - // throw VmError{Excno::fatal, "cannot run an uninitialized VM"}; - return (int)Excno::fatal; // no ~ for unhandled exceptions - } +int VmState::run_inner() { int res; Guard guard(this); do { try { try { - try { - res = step(); - VM_LOG_MASK(this, vm::VmLog::GasRemaining) << "gas remaining: " << gas.gas_remaining; - gas.check(); - } catch (vm::CellBuilder::CellWriteError) { - throw VmError{Excno::cell_ov}; - } catch (vm::CellBuilder::CellCreateError) { - throw VmError{Excno::cell_ov}; - } catch (vm::CellSlice::CellReadError) { - throw VmError{Excno::cell_und}; - } - } catch (const VmError& vme) { - VM_LOG(this) << "handling exception code " << vme.get_errno() << ": " << vme.get_msg(); - try { - ++steps; - res = throw_exception(vme.get_errno()); - } catch (const VmError& vme2) { - VM_LOG(this) << "exception " << vme2.get_errno() << " while handling exception: " << vme.get_msg(); - return ~vme2.get_errno(); - } + res = step(); + VM_LOG_MASK(this, vm::VmLog::GasRemaining) << "gas remaining: " << gas.gas_remaining; + gas.check(); + } catch (vm::CellBuilder::CellWriteError) { + throw VmError{Excno::cell_ov}; + } catch (vm::CellBuilder::CellCreateError) { + throw VmError{Excno::cell_ov}; + } catch (vm::CellSlice::CellReadError) { + throw VmError{Excno::cell_und}; + } + } catch (const VmError& vme) { + VM_LOG(this) << "handling exception code " << vme.get_errno() << ": " << vme.get_msg(); + try { + ++steps; + res = throw_exception(vme.get_errno()); + } catch (const VmError& vme2) { + VM_LOG(this) << "exception " << vme2.get_errno() << " while handling exception: " << vme.get_msg(); + return ~vme2.get_errno(); } - } catch (VmNoGas vmoog) { - ++steps; - VM_LOG(this) << "unhandled out-of-gas exception: gas consumed=" << gas.gas_consumed() - << ", limit=" << gas.gas_limit; - get_stack().clear(); - get_stack().push_smallint(gas.gas_consumed()); - return vmoog.get_errno(); // no ~ for unhandled exceptions (to make their faking impossible) } } while (!res); if ((res | 1) == -1 && !try_commit()) { @@ -512,6 +499,34 @@ int VmState::run() { return res; } +int VmState::run() { + if (code.is_null() || stack.is_null()) { + // throw VmError{Excno::fatal, "cannot run an uninitialized VM"}; + return (int)Excno::fatal; // no ~ for unhandled exceptions + } + int res = 0; + bool restore_parent = false; + while (true) { + try { + if (restore_parent) { + restore_parent_vm(~res); + } + res = run_inner(); + } catch (VmNoGas &vmoog) { + ++steps; + VM_LOG(this) << "unhandled out-of-gas exception: gas consumed=" << gas.gas_consumed() + << ", limit=" << gas.gas_limit; + get_stack().clear(); + get_stack().push_smallint(gas.gas_consumed()); + res = vmoog.get_errno(); // no ~ for unhandled exceptions (to make their faking impossible) + } + if (!parent) { + return res; + } + restore_parent = true; + } +} + bool VmState::try_commit() { if (cr.d[0].not_null() && cr.d[1].not_null() && cr.d[0]->get_depth() <= max_data_depth && cr.d[1]->get_depth() <= max_data_depth && cr.d[0]->get_level() == 0 && cr.d[1]->get_level() == 0) { @@ -544,7 +559,8 @@ ControlRegs* force_cregs(Ref& cont) { } int run_vm_code(Ref code, Ref& stack, int flags, Ref* data_ptr, VmLog log, long long* steps, - GasLimits* gas_limits, std::vector> libraries, Ref init_c7, Ref* actions_ptr) { + GasLimits* gas_limits, std::vector> libraries, Ref init_c7, Ref* actions_ptr, + int global_version) { VmState vm{code, std::move(stack), gas_limits ? *gas_limits : GasLimits{}, @@ -553,6 +569,7 @@ int run_vm_code(Ref code, Ref& stack, int flags, Ref* da log, std::move(libraries), std::move(init_c7)}; + vm.set_global_version(global_version); int res = vm.run(); stack = vm.get_stack_ref(); if (vm.committed() && data_ptr) { @@ -582,12 +599,13 @@ int run_vm_code(Ref code, Ref& stack, int flags, Ref* da } int run_vm_code(Ref code, Stack& stack, int flags, Ref* data_ptr, VmLog log, long long* steps, - GasLimits* gas_limits, std::vector> libraries, Ref init_c7, Ref* actions_ptr) { + GasLimits* gas_limits, std::vector> libraries, Ref init_c7, Ref* actions_ptr, + int global_version) { Ref stk{true}; stk.unique_write().set_contents(std::move(stack)); stack.clear(); int res = run_vm_code(code, stk, flags, data_ptr, log, steps, gas_limits, std::move(libraries), std::move(init_c7), - actions_ptr); + actions_ptr, global_version); CHECK(stack.is_unique()); if (stk.is_null()) { stack.clear(); @@ -608,7 +626,7 @@ int run_vm_code(Ref code, Stack& stack, int flags, Ref* data_pt Ref VmState::load_library(td::ConstBitPtr hash) { std::unique_ptr tmp_ctx; // install temporary dummy vm state interface to prevent charging for cell load operations during library lookup - VmStateInterface::Guard(tmp_ctx.get()); + VmStateInterface::Guard guard{global_version >= 4 ? tmp_ctx.get() : VmStateInterface::get()}; for (const auto& lib_collection : libraries) { auto lib = lookup_library_in(hash, lib_collection); if (lib.not_null()) { @@ -632,9 +650,6 @@ void VmState::register_cell_load(const CellHash& cell_hash) { consume_gas(cell_load_gas_price); } else { auto ok = loaded_cells.insert(cell_hash); // check whether this is the first time this cell is loaded - if (ok.second) { - loaded_cells_count++; - } consume_gas(ok.second ? cell_load_gas_price : cell_reload_gas_price); } } @@ -681,4 +696,78 @@ Ref lookup_library_in(td::ConstBitPtr key, Ref lib_root) { return lookup_library_in(key, dict); } +void VmState::run_child_vm(VmState&& new_state, bool return_data, bool return_actions, bool return_gas, + bool isolate_gas, int ret_vals) { + new_state.log = std::move(log); + new_state.libraries = std::move(libraries); + new_state.stack_trace = stack_trace; + new_state.max_data_depth = max_data_depth; + if (!isolate_gas) { + new_state.loaded_cells = std::move(loaded_cells); + } else { + consume_gas(std::min(chksgn_counter, chksgn_free_count) * chksgn_gas_price); + chksgn_counter = 0; + } + new_state.chksgn_counter = chksgn_counter; + + auto new_parent = std::make_unique(); + new_parent->return_data = return_data; + new_parent->return_actions = return_actions; + new_parent->return_gas = return_gas; + new_parent->isolate_gas = isolate_gas; + new_parent->ret_vals = ret_vals; + new_parent->state = std::move(*this); + new_state.parent = std::move(new_parent); + *this = std::move(new_state); +} + +void VmState::restore_parent_vm(int res) { + auto parent = std::move(this->parent); + CHECK(parent); + VmState child_state = std::move(*this); + *this = std::move(parent->state); + log = std::move(child_state.log); + libraries = std::move(child_state.libraries); + steps += child_state.steps; + if (!parent->isolate_gas) { + loaded_cells = std::move(child_state.loaded_cells); + } + chksgn_counter = child_state.chksgn_counter; + VM_LOG(this) << "Child VM finished. res: " << res << ", steps: " << child_state.steps + << ", gas: " << child_state.gas_consumed(); + + consume_gas(std::min(child_state.gas_consumed(), child_state.gas.gas_limit + 1)); + Stack& cur_stack = get_stack(); + int ret_cnt; + if (res == 0 || res == 1) { + if (parent->ret_vals >= 0) { + if (child_state.stack->depth() >= parent->ret_vals) { + ret_cnt = parent->ret_vals; + } else { + ret_cnt = 0; + res = ~(int)Excno::stk_und; + cur_stack.push(td::zero_refint()); + } + } else { + ret_cnt = child_state.stack->depth(); + } + } else { + ret_cnt = std::min(child_state.stack->depth(), 1); + } + consume_stack_gas(ret_cnt); + for (int i = ret_cnt - 1; i >= 0; --i) { + cur_stack.push(std::move(child_state.stack->at(i))); + } + cur_stack.push_smallint(res); + if (parent->return_data) { + cur_stack.push_cell(child_state.get_committed_state().c4); + } + if (parent->return_actions) { + cur_stack.push_cell(child_state.get_committed_state().c5); + } + if (parent->return_gas) { + cur_stack.push_smallint(child_state.gas.gas_consumed()); + } +} + } // namespace vm diff --git a/crypto/vm/vm.h b/crypto/vm/vm.h index 17ce1aa32..c8649477f 100644 --- a/crypto/vm/vm.h +++ b/crypto/vm/vm.h @@ -80,6 +80,8 @@ struct CommittedState { bool committed{false}; }; +struct ParentVmState; + class VmState final : public VmStateInterface { Ref code; Ref stack; @@ -93,11 +95,13 @@ class VmState final : public VmStateInterface { GasLimits gas; std::vector> libraries; td::HashSet loaded_cells; - td::int64 loaded_cells_count{0}; int stack_trace{0}, debug_off{0}; bool chksig_always_succeed{false}; td::ConstBitPtr missing_library{0}; td::uint16 max_data_depth = 512; // Default value + int global_version{0}; + size_t chksgn_counter = 0; + std::unique_ptr parent = nullptr; public: enum { @@ -109,7 +113,51 @@ class VmState final : public VmStateInterface { implicit_jmpref_gas_price = 10, implicit_ret_gas_price = 5, free_stack_depth = 32, - stack_entry_gas_price = 1 + stack_entry_gas_price = 1, + runvm_gas_price = 40, + hash_ext_entry_gas_price = 1, + + rist255_mul_gas_price = 2000, + rist255_mulbase_gas_price = 750, + rist255_add_gas_price = 600, + rist255_fromhash_gas_price = 600, + rist255_validate_gas_price = 200, + + ecrecover_gas_price = 1500, + chksgn_free_count = 10, + chksgn_gas_price = 4000, + p256_chksgn_gas_price = 3500, + + bls_verify_gas_price = 61300, + bls_aggregate_base_gas_price = -2645, + bls_aggregate_element_gas_price = 4355, + bls_fast_aggregate_verify_base_gas_price = 58400, + bls_fast_aggregate_verify_element_gas_price = 2990, + bls_aggregate_verify_base_gas_price = 37275, + bls_aggregate_verify_element_gas_price = 22290, + + bls_g1_add_sub_gas_price = 3925, + bls_g1_neg_gas_price = 765, + bls_g1_mul_gas_price = 5180, + bls_map_to_g1_gas_price = 2330, + bls_g1_in_group_gas_price = 2930, + + bls_g2_add_sub_gas_price = 6100, + bls_g2_neg_gas_price = 1550, + bls_g2_mul_gas_price = 10530, + bls_map_to_g2_gas_price = 7970, + bls_g2_in_group_gas_price = 4255, + + // multiexp gas = base + n * coef1 + n/floor(max(log2(n), 4)) * coef2 + bls_g1_multiexp_base_gas_price = 11375, + bls_g1_multiexp_coef1_gas_price = 630, + bls_g1_multiexp_coef2_gas_price = 8820, + bls_g2_multiexp_base_gas_price = 30388, + bls_g2_multiexp_coef1_gas_price = 1280, + bls_g2_multiexp_coef2_gas_price = 22840, + + bls_pairing_base_gas_price = 20000, + bls_pairing_element_gas_price = 11770 }; VmState(); VmState(Ref _code); @@ -122,9 +170,9 @@ class VmState final : public VmStateInterface { : VmState(convert_code_cell(std::move(code_cell)), std::forward(args)...) { } VmState(const VmState&) = delete; - VmState(VmState&&) = delete; + VmState(VmState&&) = default; VmState& operator=(const VmState&) = delete; - VmState& operator=(VmState&&) = delete; + VmState& operator=(VmState&&) = default; bool set_gas_limits(long long _max, long long _limit, long long _credit = 0); bool final_gas_ok() const { return gas.final_ok(); @@ -138,8 +186,15 @@ class VmState final : public VmStateInterface { const CommittedState& get_committed_state() const { return cstate; } + void consume_gas_chk(long long amount) { + gas.consume_chk(amount); + } void consume_gas(long long amount) { - gas.consume(amount); + if (global_version >= 4) { + gas.consume_chk(amount); + } else { + gas.consume(amount); + } } void consume_tuple_gas(unsigned tuple_len) { consume_gas(tuple_len * tuple_entry_gas_price); @@ -283,6 +338,12 @@ class VmState final : public VmStateInterface { void preclear_cr(const ControlRegs& save) { cr &= save; } + int get_global_version() const { + return global_version; + } + void set_global_version(int version) { + global_version = version; + } int call(Ref cont); int call(Ref cont, int pass_args, int ret_args = -1); int jump(Ref cont); @@ -328,17 +389,36 @@ class VmState final : public VmStateInterface { void set_max_data_depth(td::uint16 depth) { max_data_depth = depth; } + void run_child_vm(VmState&& new_state, bool return_data, bool return_actions, bool return_gas, bool isolate_gas, + int ret_vals); + void restore_parent_vm(int res); + + void register_chksgn_call() { + if (global_version >= 4) { + ++chksgn_counter; + if (chksgn_counter > chksgn_free_count) { + consume_gas(chksgn_gas_price); + } + } + } private: void init_cregs(bool same_c3 = false, bool push_0 = true); + int run_inner(); +}; + +struct ParentVmState { + VmState state; + bool return_data, return_actions, return_gas, isolate_gas; + int ret_vals; }; int run_vm_code(Ref _code, Ref& _stack, int flags = 0, Ref* data_ptr = nullptr, VmLog log = {}, long long* steps = nullptr, GasLimits* gas_limits = nullptr, std::vector> libraries = {}, - Ref init_c7 = {}, Ref* actions_ptr = nullptr); + Ref init_c7 = {}, Ref* actions_ptr = nullptr, int global_version = 0); int run_vm_code(Ref _code, Stack& _stack, int flags = 0, Ref* data_ptr = nullptr, VmLog log = {}, long long* steps = nullptr, GasLimits* gas_limits = nullptr, std::vector> libraries = {}, - Ref init_c7 = {}, Ref* actions_ptr = nullptr); + Ref init_c7 = {}, Ref* actions_ptr = nullptr, int global_version = 0); Ref lookup_library_in(td::ConstBitPtr key, Ref lib_root); diff --git a/doc/GlobalVersions.md b/doc/GlobalVersions.md new file mode 100644 index 000000000..ccfca9406 --- /dev/null +++ b/doc/GlobalVersions.md @@ -0,0 +1,39 @@ +# Global versions +Global version is a parameter specified in `ConfigParam 8` ([block.tlb](https://github.com/ton-blockchain/ton/blob/master/crypto/block/block.tlb#L595)). +Various features are enabled depending on the global version. + +## Version 4 + +### New TVM instructions +* `PREVMCBLOCKS`, `PREVKEYBLOCK` +* `GLOBALID` +* `HASHEXT(A)(R)` +* `ECRECOVER` +* `SENDMSG` +* `RUNVM`, `RUNVMX` +* `GASCONSUMED` +* `RIST255_...` instructions +* `BLS_...` instructions +* `P256_CHKSIGNS`, `P256_CHKSIGNU` + +### Division +[Division instruction](https://ton.org/docs/learn/tvm-instructions/instructions#52-division) can add a number to the +intermediate value before division (e.g. `(xy+w)/z`). + +### Stack operations +* Arguments of `PICK`, `ROLL`, `ROLLREV`, `BLKSWX`, `REVX`, `DROPX`, `XCHGX`, `CHKDEPTH`, `ONLYTOPX`, `ONLYX` are now unlimited. +* `ROLL`, `ROLLREV`, `BLKSWX`, `REVX`, `ONLYTOPX` consume more gas when arguments are big. + +### c7 tuple +**c7** tuple extended from 10 to 14 elements: +* **10**: code of the smart contract. +* **11**: value of the incoming message. +* **12**: fees collected in the storage phase. +* **13**: information about previous blocks. + +### Action phase +* If "send message" action fails, the account is required to pay for processing cells of the message. +* Flag +16 in actions "Send message", "Reserve", "Change library" causes bounce if action fails. + +### Storage phase +* Unpaid storage fee is now saved to `due_payment` \ No newline at end of file diff --git a/docker/Dockerfile b/docker/Dockerfile index 38ea62670..595b4d87e 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,6 +1,6 @@ FROM ubuntu:20.04 as builder RUN apt-get update && \ - DEBIAN_FRONTEND=noninteractive apt-get install -y build-essential cmake clang-6.0 openssl libmicrohttpd-dev pkg-config libssl-dev zlib1g-dev gperf wget git ninja-build && \ + DEBIAN_FRONTEND=noninteractive apt-get install -y build-essential cmake clang-6.0 openssl libssl-dev zlib1g-dev gperf wget git ninja-build libsecp256k1-dev libsodium-dev libmicrohttpd-dev pkg-config && \ rm -rf /var/lib/apt/lists/* ENV CC clang-6.0 ENV CXX clang++-6.0 diff --git a/emulator/CMakeLists.txt b/emulator/CMakeLists.txt index 1389050c6..c23f071c5 100644 --- a/emulator/CMakeLists.txt +++ b/emulator/CMakeLists.txt @@ -63,3 +63,5 @@ if (USE_EMSCRIPTEN) endif() target_compile_options(emulator-emscripten PRIVATE -fexceptions) endif() + +install(TARGETS emulator LIBRARY DESTINATION lib) diff --git a/emulator/emulator-extern.cpp b/emulator/emulator-extern.cpp index c5717dcd3..0ffc316ab 100644 --- a/emulator/emulator-extern.cpp +++ b/emulator/emulator-extern.cpp @@ -336,6 +336,33 @@ bool transaction_emulator_set_debug_enabled(void *transaction_emulator, bool deb return true; } +bool transaction_emulator_set_prev_blocks_info(void *transaction_emulator, const char* info_boc) { + auto emulator = static_cast(transaction_emulator); + + if (info_boc != nullptr) { + auto info_cell = boc_b64_to_cell(info_boc); + if (info_cell.is_error()) { + LOG(ERROR) << "Can't deserialize previous blocks boc: " << info_cell.move_as_error(); + return false; + } + vm::StackEntry info_value; + if (!info_value.deserialize(info_cell.move_as_ok())) { + LOG(ERROR) << "Can't deserialize previous blocks tuple"; + return false; + } + if (info_value.is_null()) { + emulator->set_prev_blocks_info({}); + } else if (info_value.is_tuple()) { + emulator->set_prev_blocks_info(info_value.as_tuple()); + } else { + LOG(ERROR) << "Can't set previous blocks tuple: not a tuple"; + return false; + } + } + + return true; +} + void transaction_emulator_destroy(void *transaction_emulator) { delete static_cast(transaction_emulator); } diff --git a/emulator/emulator-extern.h b/emulator/emulator-extern.h index c2b0bf9a2..4409608f0 100644 --- a/emulator/emulator-extern.h +++ b/emulator/emulator-extern.h @@ -72,6 +72,14 @@ EMULATOR_EXPORT bool transaction_emulator_set_libs(void *transaction_emulator, c */ EMULATOR_EXPORT bool transaction_emulator_set_debug_enabled(void *transaction_emulator, bool debug_enabled); +/** + * @brief Set tuple of previous blocks (13th element of c7) + * @param transaction_emulator Pointer to TransactionEmulator object + * @param info_boc Base64 encoded BoC serialized TVM tuple (VmStackValue). + * @return true in case of success, false in case of error + */ +EMULATOR_EXPORT bool transaction_emulator_set_prev_blocks_info(void *transaction_emulator, const char* info_boc); + /** * @brief Emulate transaction * @param transaction_emulator Pointer to TransactionEmulator object diff --git a/emulator/emulator_export_list b/emulator/emulator_export_list index 950c57a07..acd79df8e 100644 --- a/emulator/emulator_export_list +++ b/emulator/emulator_export_list @@ -6,6 +6,7 @@ _transaction_emulator_set_ignore_chksig _transaction_emulator_set_config _transaction_emulator_set_libs _transaction_emulator_set_debug_enabled +_transaction_emulator_set_prev_blocks_info _transaction_emulator_emulate_transaction _transaction_emulator_emulate_tick_tock_transaction _transaction_emulator_destroy diff --git a/emulator/transaction-emulator.cpp b/emulator/transaction-emulator.cpp index 7c8ade627..505c0c370 100644 --- a/emulator/transaction-emulator.cpp +++ b/emulator/transaction-emulator.cpp @@ -25,7 +25,7 @@ td::Result> TransactionEmu utime = (unsigned)std::time(nullptr); } - auto fetch_res = block::FetchConfigParams::fetch_config_params(config_, &old_mparams, + auto fetch_res = block::FetchConfigParams::fetch_config_params(config_, prev_blocks_info_, &old_mparams, &storage_prices, &storage_phase_cfg, &rand_seed_, &compute_phase_cfg, &action_phase_cfg, &masterchain_create_fee, @@ -261,4 +261,8 @@ void TransactionEmulator::set_debug_enabled(bool debug_enabled) { debug_enabled_ = debug_enabled; } +void TransactionEmulator::set_prev_blocks_info(td::Ref prev_blocks_info) { + prev_blocks_info_ = std::move(prev_blocks_info); +} + } // namespace emulator diff --git a/emulator/transaction-emulator.h b/emulator/transaction-emulator.h index b26f4e8a8..8186a3c4a 100644 --- a/emulator/transaction-emulator.h +++ b/emulator/transaction-emulator.h @@ -17,9 +17,10 @@ class TransactionEmulator { td::BitArray<256> rand_seed_; bool ignore_chksig_; bool debug_enabled_; + td::Ref prev_blocks_info_; public: - TransactionEmulator(block::Config&& config, int vm_log_verbosity = 0) : + TransactionEmulator(block::Config&& config, int vm_log_verbosity = 0) : config_(std::move(config)), libraries_(256), vm_log_verbosity_(vm_log_verbosity), unixtime_(0), lt_(0), rand_seed_(td::BitArray<256>::zero()), ignore_chksig_(false), debug_enabled_(false) { } @@ -35,7 +36,7 @@ class TransactionEmulator { struct EmulationSuccess: EmulationResult { td::Ref transaction; block::Account account; - td::Ref actions; + td::Ref actions; EmulationSuccess(td::Ref transaction_, block::Account account_, std::string vm_log_, td::Ref actions_, double elapsed_time_) : EmulationResult(vm_log_, elapsed_time_), transaction(transaction_), account(account_) , actions(actions_) @@ -45,8 +46,8 @@ class TransactionEmulator { struct EmulationExternalNotAccepted: EmulationResult { int vm_exit_code; - EmulationExternalNotAccepted(std::string vm_log_, int vm_exit_code_, double elapsed_time_) : - EmulationResult(vm_log_, elapsed_time_), vm_exit_code(vm_exit_code_) + EmulationExternalNotAccepted(std::string vm_log_, int vm_exit_code_, double elapsed_time_) : + EmulationResult(vm_log_, elapsed_time_), vm_exit_code(vm_exit_code_) {} }; @@ -76,6 +77,7 @@ class TransactionEmulator { void set_config(block::Config &&config); void set_libs(vm::Dictionary &&libs); void set_debug_enabled(bool debug_enabled); + void set_prev_blocks_info(td::Ref prev_blocks_info); private: bool check_state_update(const block::Account& account, const block::gen::Transaction::Record& trans); diff --git a/example/android/CMakeLists.txt b/example/android/CMakeLists.txt index fc8067ddf..b9651f61b 100644 --- a/example/android/CMakeLists.txt +++ b/example/android/CMakeLists.txt @@ -37,9 +37,6 @@ add_subdirectory(${TON_DIR} ton EXCLUDE_FROM_ALL) target_link_libraries(native-lib tonlibjson) target_link_libraries(native-lib tonlib) -#target_sources(native-lib PRIVATE ${ALL_TEST_SOURCE}) -#target_link_libraries(native-lib all_tests) - set(TONLIB_API_JAVA_PACKAGE "drinkless/org/ton") target_compile_definitions(native-lib PRIVATE PACKAGE_NAME="${TONLIB_API_JAVA_PACKAGE}") diff --git a/example/android/README.md b/example/android/README.md index 0d10ff1ed..f17ba9d26 100644 --- a/example/android/README.md +++ b/example/android/README.md @@ -16,6 +16,10 @@ export JAVA_INCLUDE_PATH2=${JAVA_HOME}/include/linux export ANDROID_NDK_ROOT=$(pwd)/android-ndk-r25b export OPENSSL_DIR=$(pwd)/example/android/third_party/crypto +export SECP256K1_INCLUDE_DIR=$(pwd)/example/android/third_party/secp256k1/include +export SECP256K1_LIBRARY=$(pwd)/example/android/third_party/secp256k1/.libs/libsecp256k1.a +export SODIUM_INCLUDE_DIR=$(pwd)/example/android/third_party/libsodium/libsodium-android-westmere/include +export SODIUM_LIBRARY=$(pwd)/example/android/third_party/libsodium/libsodium-android-westmere/lib/libsodium.a rm -rf example/android/src/drinkless/org/ton/TonApi.java cd example/android/ diff --git a/example/android/build-all.sh b/example/android/build-all.sh index e1abc469b..f436e3612 100755 --- a/example/android/build-all.sh +++ b/example/android/build-all.sh @@ -1,5 +1,16 @@ #!/bin/bash +echo Building tonlib for x86... +echo ARCH="x86" ./build.sh || exit 1 + +echo Building tonlib for x86_64... +echo ARCH="x86_64" ./build.sh || exit 1 + +echo Building tonlib for arm... +echo ARCH="arm" ./build.sh || exit 1 + +echo Building tonlib for arm64... +echo ARCH="arm64" ./build.sh || exit 1 diff --git a/example/android/build.sh b/example/android/build.sh index 61681da26..8cecfa41b 100755 --- a/example/android/build.sh +++ b/example/android/build.sh @@ -1,43 +1,62 @@ #!/bin/bash + pushd . -# ANDROID_TOOLCHAIN -# ANDROID_ABI -# ANDROID_PLATFORM -# ANDROID_STL -# ANDROID_PIE -# ANDROID_CPP_FEATURES -# ANDROID_ALLOW_UNDEFINED_SYMBOLS -# ANDROID_ARM_MODE -# ANDROID_ARM_NEON -# ANDROID_DISABLE_FORMAT_STRING_CHECKS -# ANDROID_CCACHE + +SECP256K1_INCLUDE_DIR=$(pwd)/third_party/secp256k1/include +OPENSSL_DIR=$(pwd)/third_party/crypto/ if [ $ARCH == "arm" ] then ABI="armeabi-v7a" + SODIUM_INCLUDE_DIR=$(pwd)/third_party/libsodium/libsodium-android-armv7-a/include + SODIUM_LIBRARY_RELEASE=$(pwd)/third_party/libsodium/libsodium-android-armv7-a/lib/libsodium.a + SECP256K1_LIBRARY=$(pwd)/third_party/secp256k1/armv7/libsecp256k1.a + BLST_LIBRARY=$(pwd)/third_party/blst/armv7/libblst.a elif [ $ARCH == "x86" ] then ABI=$ARCH + SODIUM_INCLUDE_DIR=$(pwd)/third_party/libsodium/libsodium-android-i686/include + SODIUM_LIBRARY_RELEASE=$(pwd)/third_party/libsodium/libsodium-android-i686/lib/libsodium.a + SECP256K1_LIBRARY=$(pwd)/third_party/secp256k1/i686/libsecp256k1.a + BLST_LIBRARY=$(pwd)/third_party/blst/i686/libblst.a + TARGET=i686-linux-android21 elif [ $ARCH == "x86_64" ] then ABI=$ARCH + SODIUM_INCLUDE_DIR=$(pwd)/third_party/libsodium/libsodium-android-westmere/include + SODIUM_LIBRARY_RELEASE=$(pwd)/third_party/libsodium/libsodium-android-westmere/lib/libsodium.a + SECP256K1_LIBRARY=$(pwd)/third_party/secp256k1/x86-64/libsecp256k1.a + BLST_LIBRARY=$(pwd)/third_party/blst/x86-64/libblst.a elif [ $ARCH == "arm64" ] then ABI="arm64-v8a" + SODIUM_INCLUDE_DIR=$(pwd)/third_party/libsodium/libsodium-android-armv8-a/include + SODIUM_LIBRARY_RELEASE=$(pwd)/third_party/libsodium/libsodium-android-armv8-a/lib/libsodium.a + SECP256K1_LIBRARY=$(pwd)/third_party/secp256k1/armv8/libsecp256k1.a + BLST_LIBRARY=$(pwd)/third_party/blst/armv8/libblst.a fi + ARCH=$ABI -echo $ABI mkdir -p build-$ARCH cd build-$ARCH +cmake .. -GNinja -DPORTABLE=1 \ +-DANDROID_ABI=x86 -DANDROID_PLATFORM=android-32 -DANDROID_NDK=${ANDROID_NDK_ROOT} \ +-DCMAKE_TOOLCHAIN_FILE=${ANDROID_NDK_ROOT}/build/cmake/android.toolchain.cmake \ +-DCMAKE_BUILD_TYPE=Release -DANDROID_ABI=${ABI} \ +-DOPENSSL_ROOT_DIR=${OPENSSL_DIR}/${ARCH} -DTON_ARCH="" \ +-DTON_ONLY_TONLIB=ON \ +-DSECP256K1_INCLUDE_DIR=${SECP256K1_INCLUDE_DIR} -DSECP256K1_LIBRARY=${SECP256K1_LIBRARY} \ +-DSODIUM_INCLUDE_DIR=${SODIUM_INCLUDE_DIR} -DSODIUM_LIBRARY_RELEASE=${SODIUM_LIBRARY_RELEASE} \ +-DSODIUM_USE_STATIC_LIBS=1 \ +-DBLST_LIB=${BLST_LIBRARY} || exit 1 -cmake .. -DCMAKE_TOOLCHAIN_FILE=${ANDROID_NDK_ROOT}/build/cmake/android.toolchain.cmake -DCMAKE_BUILD_TYPE=Release -GNinja -DANDROID_ABI=${ABI} -DOPENSSL_ROOT_DIR=${OPENSSL_DIR}/${ARCH} -DTON_ARCH="" -DTON_ONLY_TONLIB=ON -DBUILD_SHARED_LIBS=OFF || exit 1 ninja native-lib || exit 1 popd +$ANDROID_NDK_ROOT/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-strip build-$ARCH/libnative-lib.so + mkdir -p libs/$ARCH/ cp build-$ARCH/libnative-lib.so* libs/$ARCH/ - - diff --git a/example/android/third_party/blst/armv7/libblst.a b/example/android/third_party/blst/armv7/libblst.a new file mode 100644 index 0000000000000000000000000000000000000000..d9e8ff8d15b9c7935a3a85e88c38905b827c7bc2 GIT binary patch literal 287466 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 E7ufaIHvj+t literal 0 HcmV?d00001 diff --git a/example/android/third_party/blst/i686/libblst.a b/example/android/third_party/blst/i686/libblst.a new file mode 100644 index 0000000000000000000000000000000000000000..666954b2d24c87eda30fdfa60d9df15530f70b81 GIT binary patch literal 337346 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

+zS^PO% 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

rFT)t zB7F|nl0Na*ntne%nv#B&B%S_6#l!1-e_$Jw8+m`A=sYM^q(bT1jz4FsU%Oc<`Nx+F+-gxBY186Q7mIh6oW7CGGv(`b;?3Tb9+npAC}=3??5>L_)eFjvYlJgYR?W&V_IxO%tJs%0#m51)_e1Gh#UYqkgebFDOXhEt%zIN< z&-`)(R7W`!hvAY5w_<(h6WE!G4N$$|&8&0hZ)hA>XQ5Jv-DMw;5M&UP1jT2#z~~^O z0ZA?z{uzvS&a8d6`Rg2Q@{oI>L`R`L0p}$+Wm_l+jWa^!l3!EmEv75R5fGO#O3I;L z0CCiGb^dF-%ZUT3>*S8E0yBXRcoZec>-7)g8;{TGewGGwy7aF^b$R`>+Mljm&tK%P z1`En0vN1(#H~h8EmfpD+9G=%4E;c_w-Mq^Bi^zimU`7M%R`e!`g%uUVuVez5tizcD zMkPnB4xyALw$pE9wr$~Gd|rmI`bin3w~K){fje6AB@Uqo20pehl}YEwsrW8{?^Mus z4BXX4frpSl!5jTFe+nps+8jUx(%LuJTja)sLZgF>Gv3KO(&t&>zb`5Ya(SMFF7E+eye<1 zKZZP`U8y`_+q}N6;7O*Q#h?aOmXM98cWE>1H!+B4y6W&X`~Rxg=u6K zhlGUrJf)UbK49`lkGRYc3koMzLO^b3Xphw5VedB5JTgQ2J4!>cN9QM*#*JdhH3o`A z>d69MU93cD3yTp3rYKQR+7nZfhX|34sjlu@uu+RrRuE78n(P^;>x!o&qvRCj9#$nd zC6w1h@FF(W0oKWaRDqdrFJ(K#QyayL57puExrL0+d;Dk!qCZ!Dy#873&pM$0k|KY_ zxU8eY@Q=e4GrY>r6!Fv#d!yF`0)EzlL~qIVn(g%5xR{he!Hf5!t|lu_A&pHXDgH#L z!XN;dx#Obx)2rKaxDW+<4s0?MT;2kqcIwa~PB)m{z9WQe$PlltBXvGW>K3)Ohikm zJ5djykd5Thy~5i$D8@DfhsO%EwdYxjAn>EnG<#Px!z2fWo6wY`J22BuL&46%%wv0@ zkW~2cwT!yCz-)340`ORGQ*q^F@xAQ6RrxK{Nl#5 zSwviDRCQ8{eP%iQ<7i~&&RYx1!pjRelxk!37qW)DvbNbq&bgaBapPf#e6)B-iycCX zKV3CEwOz}kM}*H+x$=H)eW4pb=(+uk_pabJSql=O-RXQ(>8jtOBu1I!9A70Og>A_jtg@BoDK_gfC zbwP~@DJ!$v*vjaYXXj9Q7fY1)Eli;5@VO=S=GOI|#BWjs*6r~JhI z4=f!1_?1n@Lmiu%K6PbRB|^nIZtS|UsjB>V`Mw7}zVOj6Um34{=<~Ghcq3y)L}&7V5Mnq3)z0^@l1BI1{vyA{`D8tnQ{qAg;Dp$2_-O9ASzyGr(g`e7sv!a0+E;v^ z#nwMT8~%X0gZWB60=sEO=9zO=TOeRQmC6~ZXR7ueS(7Nii@+XonI@N-xdK&%oWTcy zcQ~1cXJ$^n((~`QFH7Ykla0JuR+x(im>>IkNq;fY&*}7!uIU6>(${23ALLSVAJbP< zqz@9(cQV^wk@Ov=pH%733L%Bpl!JU#2=M#P&%OO9q|Q?Ob!6%HoS*b?mieI-C0Cj` zGc(xt1G%81(G|E`qhRR5_K6GUFVL_chAaCX@3}M6^t43q}@-ih2_3Kt9oJF=i)K7q%M`N(laG>N}1yk49_ zo4Jn|SI8g$OeP=|sjTv&vJc{za+HQHq8>zp=~txK@8Cp~6IBj5AH<|`x|EYrPQP*n zlryB9ta3(`Gp3vg^g!Gd(!t=b-#pu?fse^X-2-3hf7J4T_`@Q zK#9(np9Ls!8S_U0N<_x|v0%k@DFmE=+fQ3##dQP0S`@wFx*@om;AY`&hC3>3aUH)v z=u7l*+up4UJk%YOx)<){e;qg?SrJqHWR-5r>4VJ&*65* z`W7XDVcTWMb-@qspSd1$;gQ)D@%pv9eoMU{nJW*%y7OnsPmaY{Er&d9Meuh&AM>G& zD0I*FgSCAuWw4?Y&>DfRMnCG?q`(ls%?gYF+^WDRz!3$;0kTqp6;~$#ItuIpcv`@8 z3dsOtwFE2D{R*p6*nq-n6-E}e)9fxL`L>T0hEGTU)}$j)*g_qF!dQI>DV+-CQJD0t z+SnR+uzx|Y&afX`&P=V^hm^qocGIL4J8TazQ|M1Jmg;&oW9STHoI0EVTa*3o#LiGQ z@O7hR>KA>Wi1S}g9Y`Il)~V6x{4=ku-?%as2Nt=#5%um}YYmC<(R{o?II`^a=wEb&r9pjs;rcQBR(UJuBHfKcDBsA>&^wNPwijHBL*NIs?pK@?2GO=?skidt=GJ|{js_ny!NCSD0+^RSGE|}W0hha z3{`VzsN!WU#`RdApn(dMs9e)xTpuR|KUl4j3tEipyVSl#?9NSrr*LVCa@GplV;Mua zSZYze%2`Xsmjw@T^-f=7RhFnB_f64vRQrwzd6jb3P6*ZA<*PO`A>9(xA-*-};9KRc z3x|X(`{m#p0cLA^1_BYy?{qd+MJ4RoxKNc<0~Uy+4kWIzN;zx0bRgxT^zyCjk3l;9 z+E=+Kz4BGg+9B<$T$En0U@s6h2Vpe=;-}r||2elCb35GGn`StFyGO|(+=M<0&9^ax=qabh z;nyyHKKp-mSL<^VT>J9auR=I=120Un0w_T>uGDd@5*=JD#09&0m=D2wh1a{_#cLU8 zGC7MNY9sy&KVt^DLURb8@Yt2J?P*;6Beqi*t0pU@a3`E^l8TKDEbIx#0hzL{gxCvh#~tP=sT)?$CU4Y z@^yRQg!ZL*8=6X1`Kq1=J|dNTqzq<-!2JO)6iu8hj&g zP>o&U>AL7XDo|7fit8x)K}8)8NMQ6L6)33!b?HDu+Bd6wQ_8m=4!CSoJW&Zc(3lD| zpaKo)C?>RT37UzOpnONQuR$s+LHUj;-wEv-(Y{gTTOzeAYn)OE+Bd0uL&`TIm5$PD z-xOT%m=9eg&yNNWk8yNrZ`>je!xZ<>E#bL{Xew=~m&PM~T+YFQUNvsi#&**1Az@|J zOXs3cML9rl&giGoes7Y%XFiYKa|Dgdj+Jok_=)6(i#W~$71FhiIG_G8IuQ=NBi|x1 z{)rw~Aa1DqN771{8#0Mm3Y%kXa2(!mE2iOdp;WYQ4s%| zCVuA$S4Mi)YCJaa&EAIg(92NFJOgl>7Mlv1+YIL*w)m>#Mj)9bxf#w5Mbt9|R!*KH zJ&`s*ZWba{fw>N`p@^>76m8EW+nwc4DemB*8{vi{&h0@YOkQZjDGiPaYU6;zXq+Yq z&vE1gHz7E46|Q1!cjn~1kK9!1_;q2ngrzWiqnS&X@HxIiikUA_=yxcQg=Jq3bto#! z6nE}9$U_5l(94Q7JaxW=%~)ht!R;O(VZ&V`Ap#Kq7)#`| zNi0er4hlvQ?5qNiB+vyw#*dVU^*(Vp%qUbGpaTjO2k4MO#Q~Zns*MmpM~l(1VswHi z%oGS%!tBE}v>SqpQ#yvpD-$uCz5_R>*|(C4J-|Lv&pLno2x(FFI>FC?vF%%vXe5P? z3r=BL_~!lc%>da`zIj-}WI1XJ{yo9RX1n;m2wp-pIiK!vEJ7hKxc*Chla?@1+^VSX zFAAQ-Vur#$EqLmUE`EdH1DCq^)q-cqxsr!^!N&|2uMwP=$0+{_!9zH^RMewl?x%f?jm*5H_72hJkLs1vMUhwGEF8*hNC$DkwcMG1n*2Ui@ z_`p0De}mxJn2Vo9x5VbL>scScW%x`-fw&JN?tCnDVTj-qK17CZfsUfD5y5?+he5>kLa+D!(7b)5 zH=II5uoiLcw_m{PU?J%Z4=6Z9cu2vpk!T@Mab1+~sG`G4qAo;+;VDUYLeXI-(Vf3y zb&4dQA_FQ`OG-f5>0#>{(7q9cGCj5E2#&4fXHn&mq60Lp(0+|36*{2NE`<(hR6eR$ zoz=u;5?m@js0*S1O}bBBF#W1Uw4K>!$da8}MBckfO5?aJwhq zH{F1*jIgkjsfB?5-4k%78}JDUNMTzD*yRb><_7$Z1f&!$1f1^)_#QXlDhWvOTnPA1 zPrw;&z)wg(%I!kHmmoylQa{DR*3?ZR5|9ENLtKc`aopMK2{_~ioQ;4Mw!@LD`dxuP z?hJUs_9ARPh>QUe-AYf8Pb0_=y<-98mt^EyxOC3_xN@$}wVh}5xt>U>5sA7rEj=m2 z#zPj4-7{mi6Lr7EH5=$OxJvRIj_$H#EbkZ(LOv`b3G~1E$$a{M%=EEQ%AO|iA20&l z%l?rO42KYNdXm-FlhXz_Ua-u`_;ez4b(}f5h%f0#xpMk1DHbmFr83W5%vV|J#24$b zW<#-9$0kP9m<%Rr{8)!>K4ttE012x_mv9lua2Jud6#kc7KYE5_t}Xoymz1tcg2deo zTps@<*ZY5pze7N7O+h}wm4ljazc~OLe*FHsl%0T&FkDu_dx3ME`;JkCKM9<-F0CE| z4)+@q%Kc^uss?^z^fMH^gZ^wB(3$o(Bc3o(9R_|}7n75xfSDfG-0w)jpWk;W_nRpd z{#p9$6zJ>??s_r}>Hp$4+2QwDbGQT7~VL$bs6)$$1HO z6~XtL;_K6!H@}m&TFI8MdH5hdC!#%S9SC`I6*gdcOjXCG_u}-7_Yz==QHA6_kk8CA zoy`q$I2B&iDkp`RS1&>oC9zk1qC*sU)q!W-jDh#Pcb2+2;IY<`AIW?Tn{d=t9{~9+ zK4^=!Ue^5L-edT^r?*-fAiu?DLoc_(;*0z)pWbs4I)LBa-bUr=?(|vL+pGx1yM69d zt@+z_`}Adb_Piw6d!?#X-I%4$sqeWHTv|rBGYr$gXEpH$G%QN(SWw&K<*}j`RI^>7 z--EC773iV+km)=Xmf!D-k_iK1pRMrh&e70a)HZS z;8GWuMZ=m1&#p7=a%}2o7;VEh!Gd~p$pvS0{`X$_qf16xWLz4z;uC>3w+rH z{>BA9>jH~i;NvcEy$f9J0&`v9eJ=1W7kGyYRJwrQ1!lOwnH{cmP1Yz8+E6+e)MUlN(}_3#@m6)h@8o1-f0}b1v{17x;t=#9d&%3w+oG-tPi+ zE^q|^tv$#xHcWK+E{El~IJ)K(5{INIB#uB+NE~pANK+T>z%J+#?v|UaUC?D+1PW1m z{q78Ol9J%y>nBxs6&{DLWPx!X%UyWGBF+Y zg^4=QzhLF7&6h-y*Yjas5>=E+>4VJr<{81hAZ;j*L1~O&bCiMTYT-}J z-8|D01(pawSaa)M3pJh2SKmA{dXddDQ(lA#_EjQ1vodTYc$~tpT6pfF(u$Qq53DNR zXJMNXjB(|oR*!+@piudU)go`#mp^K?R3T_BfJ8OI)ZvEfSO{N5%C}pwFn|UEwE*S< zXsJWs#_|(ZECNcjJZHrk0L&vW7eEt%MgYwKdZI`xj?`oGKxt#lO#l`WXa=yDKpa4l zKpTK11Qr5V%8V^WTFc5u$|t;cTjBv+*{s@9Qj<#`Cx}p8_sh=J79VK@LF-m~SX;_S z<91fimftV?Sz7|65d>|8+Sl4*kj5>prZPL+FWX#ODoG{?axa=(?RjmfBAMG?L0&_$ zY=3R3CYd0}>qwT}uq`2y34+{DvTTiQ36o3^#(lCawImY+c@xR9Wwxb`WP%{y z1u`Z$O<*}(yjp>Q+;CR?86ND(27CVsoN2G8-PoGF+30z1X2dXOBXF|>rb!h*_owxwWl*@Y(&IjHoqnK40uKzW+;C&7y#s$$nYkryikCY_ndDn#SbA1FqZ$gLU zMC2Ojr$9LCkd=M7H^y~$mBoAz7IlH(ZX;gH>@ZZ+4K<($pGku74E`>De-*{2B~vAXtlh{Mcw{I z%l(U1`0q?1HUFLLpZ+`99sPH*_xbN+CjED^Z~5EKX8T;q*5cfSGWO6eyXR3NeY5d1R58DZP?~`&hw$Hh)7dGB?vepTuxav+|Sdm0y z>)S$##&YaXfDdkKD~#`QmtGmD&Nh=$z@mBJNcX2WBw!^JtYTrp1n1=JsP*MQPn;c@ zM%WQ^Ty7WV{ZQ@Z&#-({8OJSUOA!>#@`B_1#aB5;;Iv291CQKPa`eUrQLvKnH=-u4^x1r*ap#c86vL_ugU2a}O1j?*h%&3B8%I9M5LRxa z+hhI)akEU?adKhl^#~AW?IM8l$!E_`TJwEa0mAzqQFBl3*-L^Iy_YGT#aa?zGA#Td zpL#DNuL6dA>b;Du2pICI_p%`cLq7FhmQ^t1Q}1P?3Wj{@y=+Y2z7+CFbV8xhOMsT3 zZGuMMfcBNOcB7B%#=s%?=AM})=3RE$ir!!s)C%HBji)r;rSX1^r!+pG@qUdD0T%%| z00IPLZ!il=CR>_0UB*dQNl&}Iu?v~BZ(&j=XNP*K>{bI6Z2sn^vbf`eX$qQMDi}KY z9wD0N!MauE8G8QeaaGeFLwE?>4)c_=bDNOrv*vuC>0qS~4O2W*Qu>q}=ZQGXfqRob z_FX|^n}=T2M2)Q(`r%?Qa1vrI#LX+z;KUT>E+x1cTk<5+jCiz9dG9ZC?4t1_>SjcZ zMM5YfN;Bm015H}8QeiM(NCra$6~5`>zlgrc7@=@Bhnr9isxToQ1O$g+Rb=Z+%%{>U z|Ig^F+=x?D$68;-4)p6$HqKbB!SEJ@%8blV8tZ?c#1P!E5Pn)XEGED|GA=6p6$r;g zn;cDFcU-i|#2|Ef$3;7(Lq+i!m0f#45k8v);nl~*(Tj|WQ+3{6igk?dcyZun7}~At z%Ixpzu|0?s=Nm|grn%NAemX)rBdyfBKNSJ?I<~CK$n1DW=B;{U?)@6NnfdVeF{}-M zZ_6lgxcF=UFbISIga||cU>Jtr0}v$uZv4G1S)*_wRb=SRqJqq)tWKZ5v&7$7=I;#n zI}LwlrN6Vv-&yVN4Ea05{?1x|XPv(@;_qzmch2>9Hu^iG{?2*+&L)3nv%fR$?`-pT zF7$UU_ID=zolE?kOZ}b8{GDC?&TfC_a)0Lv|J^C1hAa9eB-j)OX^>#`Dy(t=HP}=#`cJ{;_vf=@`fislFJgSdVYif zW-IzaN%vpFHWev_Q0&GMJ?v9fb=dhfj(%WFp{&H%yyELJHdFFXKQ>d+UpO}NYbUfy zY3NI_5(P;VurAqb1pEB(qKlQXwV2CZl zDc_&oDPnj0MI8Oassai!#DWBSZv;PDmzf)+I996vVhF7Cs;tRnz_E(2p? z_yxlpl%+<@4O=S_nl`@jN37N=z)cG7s7Cl^!Vg>XLx_h)105gi#hwv}kO`q|%vgQW@kFOXifAry-o0R<;(Vm6)fIET~6m-udM=kiqj2IL^E46xWhB!J>QVYzU9Q zIeAIc`kO$o?_b!JL^GrL*c=rdP~C?D-RvMj!f^_Ya~T>_>5|-fWGg1Tsbu_HjA)zm z0%*`UFN-yId=~6&fi}UpZ453`qUwrSCp!V6W?r=8?A^!?!6!kWnDBn$KkrmM%jG%N>PiEuJUwlL2ML%W5xB_C235l`vy{IvC**|6< zR7GIst5lbyeFpuJ_8D|WWuHM$RQ4HkL+puAeXuzkRvnP`nMW-2KH6ub>nZyT`kk`R zpwlV)40;^xGt%9ZeFl9^*=Odv_L=#veFj}@nb>F0zi6M4&PDqS0A-&6pzJdMlzj$( zvd>6wQudkO(v|Y&8BagTn`b^>Zkrs+N$qNeFS z9J8kBJ{-iR={_9Qrs+N$=E!TJFq>zmVbix%3HQj-$Nf)Yl5(Ao+P)~{g^9{riIXmq zl#1TBiVM7-bl~CwAJDkCz=t$0F7T|z#RWd9adCl&0os?h<3 zj%k$24tysxnpJ2CD;^a}g$2HbM#mHy(&&UjBN{D1=@2-oQA43|pfUpt0Y{ClPJ)06 z8y|U*k}v=fiRVATn}LM$uFnZOj{lo@l|c&s2&^!%=)J$)>WMs?6e`6=!;na9Ht0c&js z=h`96we|e_`{ZQ^VD74LY^>tQoLhUY&wB>K>ez*I6Bl|~4TLuLI4%E%7x(6)0kDN+ zCzCCj3}ecz&f}~5Gd`6b1`Cv685eKF;SP;=;_0_%XLi5EYAHFHo7w$F(Sd9B1bdqh zp&*&B`tV%oRX{T<3B3;x))??r`P1fGF$6!E`Q^-D@0*cu=9L-UAIZFe8Ri=h$b7^q zt=VyMhY{@kYp@@#heQzE9D-jp(?%G8d(4-e2acYfG{?uW`K<6&_aDF77i$twcE`u> z#uuCM(m=5HHb9v@hWXZ@k!BL;4B{B+q{758(p?G@$4I9XCXSKrSC}|PdO%^~80jH} ziDRU*3KPdjk19+YBR!@tag6kY!o)GsCG4LStHm+W(zSIDH_{>HCytSpj*TO;BpT_c z@)HN;Q%lmhBbiNK)nlAajRfPW{5DsC0b$c!q#G36&% z#jS!FnF-~mMXq2Kw+d!tMDQ9GdTm*eXv8Q4>tE%?&U4D;3uN!&Jr-7Z zefDH76zqK?3@}{cc|r264|w{*Ji7@dDxB|x?FB2tphR)v6U!YO-9Z5(U6TX_3mqKS zLFu~iaA%5bK1bhwX{;I$7RVp&6coNgLSB_szN2*J=sm;m6&%MKmG6Z16%@XLUvRjy zgk^%SA!YL(?qtj%?Hf_PQE~F8It9hIapjv-zFlH?G~JcDuBj(r&+Y2edn+-K=&;wL7NW3GJ$?L;6yMU=HoFvW|W> z^UTc5nHk;h%bdaR{1cGuJL3GsDk2>0YW>sQ=Q%mHZbPwnXbwkYJC43Z9c&YA%U`g%61Fr47^dJ!;0-j0yX`2gJyNmqu`B)^;^F#Iq*l`}`0; z_-nx5T>LfSFN(i;_-n#nGydZEYs23{{4MrcnW4smPhqo$jKZ&CR{_Yc0t~nSIaVlH z7a-3HWy}T0wL&RD)e2y^0Gm)K5f_NMK->kAF3{xyDHrH>fdLm7a)GQ1jJm*>3rx5G z*;wVr1<1%MKLY&rORCa4Ia=h^V6`8a`wfdm9f&}Xf(HI?GJDJ7QP>~sugGOpV1sb9QUqRt3xRJ^#-%;%=D0~Gs zQe(<@Li-8|U%^oc(voXj(I+T;1xF<)-v}L~D=2)4=S5ZFURTJJ{4vf8jwVB9(Oz0u zc1LK?oM~vZ_2t9yhE+MS30q?qJe-aHsDu*_5iEG{{|hIIG;+3dbh5SpC8$>=3|t`O z0udL8x?i*C@n z*!ybJ$fu=<5}P)bz=2Kd>JWZD%4OLKBsfZntZxG0s;t?MN`ret90abnnnQ~4362`> zZY49NLq*+C1B&qJBnYp*Dm(pdrS0V>%mb$m@TkBE92G#qW%yH1Hv?#j;)ic;OP-pz z^tv$OW(f85qvwI}LF;`9hWX3jSEo;AxcroP9?1+()||?{aCzU4gMBxmRV-~*>A(h$ zQoG?s^QGJ`xxeFmT^Ip^2Ch2-oKkRzaKC~vi|l>hfP$lhhZKz2Wbga33QiIpRWPQM zz3&?nIL#^~I-yY3J5e!=!fc>XwZB82@20PqMW2INlwm(WlTOgUrDlMYSrnrV;C@AC z?mnQ*q8NJs4}s2F6|?9E#4NhKG;_AB=VRJPRJ4P`l#L9&GUUYh$iFLV(iI+}l0{A! zUU@6h?0>*q{Bg6xcOieu{3{M7EE+y>T@2atI-l6HE}=c^V}`cPK9o0EHHMuBhmeCy zv4=!^-kSG>J&Wg{&p3A?2);IPsA`Y166=|ITQD>_bK(M{mKx8wUR;zREJ%SQ`ykgo zb{;#Ry8Y>$3?*|C10 z<%EXZ{vPJ?phDyLC7QRU22PLpz)l@nJ^n{pN^XR&gU%2}eErOH{RoG#^b zD`&ZKR*17YMF;^D-Qh&CpBq1-NJq!PU+|5bR~(k#Xmn zL9Rh|zX`9LS7DhOCZw~@jlVcQdGxc&s&7cNob&NCFIq`#M*z^7t_zWZo&@U=fH;6C zfh2%9fi3_^S!H2PU_nAI)J%|8^Aw1%Q+*fLOmYX4;=g6+{SG|x2Hp+wP`UYxv-o|I zQ*a-{DDK-L>on7r3UPW!@QYV}`OBD{A`cmNRsT_y|(MM}`4$G~@YiLwY_ zgUnC?@VF2Tvvoa9K7AU%e)1`)!qs0L1ti?cb9AqTW4k|HpT*j1FLDh-?}xy%_hZKa zHbdQd7!F-2Fx+DrpV01$+C8n^bK?4LrIX2(WzMwr+&_NI+wfY;Ewue8f}-SwwjUG1 z3t3?VCL}nl(`=};O%OunufPkJ{5f`I464Uac}vlOF4?8Qb^pAQmsiIOTj_B{ z^G7$fBhFWF5g~Z(53LPS8GVm;*I;IeI~lPp3`f&$5Y=s*m7#d=O;R$0|42dF4+H1H2Yt8pDNfnZ#lq~l2})8Mqt{_@bc7G zvG?We2(%z z49wlh2a*Aj0}{YW3#A80djT-K#MORN3H~dEdVUUcoPE0wx0PV!39I&fYmlggrUy%W z?j(!_p`Lf)t14_-SdOlOsnT)`&nOL^8yfvr;f)kB5IXv&ZisDe2!!noAP2|sDBHiN zpp1#kg+qjy+vH<6%kU|yf82TH2u9}J$j649?KAPr8S>{fr)qihUtM1Z_P(C_8rb}r z>#Iiv_0-qLzdl`kJu?1V>g)B~Czv_5LLP%Fx`iGiQxqf9y1G)m5loIj=(p}WoVJgH zE3j$`&da~N(4KHUq{vX`X5+6FBf$$8wE%L1;tOq5NM2~Bl5r6wWcRefJX=2E-OfaT z618B@lFL73$m7+YGUQzy%IsX>;h?GYk?)srbmeM&5?6I)4u6{8I0Sh6Cwi0*g2HmI zDJ-RR1h#b~D`pbo>X0(ELIb900H2En47eXKwOf=Kf_(s3eU?@P05%56`ja^C5Rs(i z$Hb18%rPJ8wfUw1pFe1hJ4GfMzV3fzd>>~0x;@L3FK<|&}nh?s(* zO1qWFcZr!lRE8}vjb_dbdg^D~8Egf@HOI{ZxZN3>0&zutNy#6aw3dYfSKv|_ z1ghU%`h4)~xjDa)UDbc^h=q08eKp7Tjn|Bqo`JNPTYnT=nGBo^7|%RYDkLMbzoh;| z&5`;8W(*$x~RzC{b_WE7$uQW#xMKvCIc93vm{V>8#T!9ti zIoq)%s0`)w)r`y;#=g_)(v!$#Rq1XKbJ%GV9DKTT-%-mKHgop!8Mzl`%v=$kYaWaR z``(NS!I#{D6oOj~Hw?E5ZY|tOxOKKNQenyvmxBtCn|QMe9-J7ILr<)JybS!Ws`^bN zB9GF58o{GtXs9^Wv!!V;w(HTVR^5V$#wLTz;SHN0$ruHs3mlX}4V#bdd;W@saOrun z0CLli;l}kp2=={#amd2vK88WDp_V_49+8Fa^VJ<&pJyBYyud4j5Gug-bTVV5rw&?Z z%ba;+&K}kqcK4wzce5hVGWCy_=7L|}KIbt--e(@UqB6YiNX?$o6ZMawS<31kHAfIh z=|twoC0EvkYaXeu<1)Ih{x>y0LcI0DEWyFkrTbp6zc?fJ{EX5A=F8^8$bBFh?CVC} zFoS)rlye$(AKeG1_CGZDtFDKs@v$0AEAJ~UG}ZYt>5T6B{=F<1dPuGLvcAeVaig>2 zV@e>kN6@P45CD5QS&cdb-qE?y`9~Fo7nHGE#v$V(h0FOU;GAP;QOB=<)mE6NOenSp z##d|V;;0HdpoOz3{7}mc!#vu7IO-CReClly0}Nb?JtuYM!Ey&o9YJ{;Oc>M6v$U53 zn+vQ8mBw9amDnr_QO1_0X&y<)DFNVR<_UyG2WR^V#Eoi3`S$WXh@;I6gv*OAF*x-! zIE$sOAFtV0KaMnNafl6Oc92=r`lmpC3WPBJ>OkB;;u#RxheP;_fbCc|L|={mI$A%1 z1lemE;BlAosLFe=8_k8sfbyu!dn|`XBRuX=9=^OsH$0+9cr!fek0asZNVE%o^FSPA zXq37>2M-F0W%z4?$B^;}gKX-oeJMW}GBpg0Dbkh8B`d0&wNB+v(pZ>)U z-_-XT2Xj}e*_&5{mxC4nt()-!E(6@f_yHS$mjO23yezzwJ14EW zFu)}y9L(s0U#Cz*^ufU$r3h9V9K-=#a4YK47aYu$qU@32;6!O~@I2`aDBfH&a3DDN zSSfhCk#(-aMZtX#rxT^{4+RGwW%zjr-(*4cS5Y+w2S-Vc2k%3=!Fxt82hwKasW8+z zBpDfhh4YmwWUfLPfPoC^D|=xFbWgHpzMpus3BDUOB7T$COCK)s6EXXocu?&nGs~Me z$%HfZN#64X1;rIMkcX5XnPba}2Jda*6uwg1*=>{_%X)b|W}QkhGaNxjZbZr+zb@s6 zhn2uEcsFfWck;4!_pLpzrlI8W>ydY^{^j%Lno2~>bdgX=TSSc2{@=>&CAbo<1iRz>=q!LsO zbcvH(O@wr7E!~QmizXRpR5#6%# z-21tc8(Z65n{(lb1?O@cBQ4K$ho}Y`!u}N{ghO~dL3BgRQlp`xZ$w6XC{da7B`|2Q zswfS3(f0c|roow=WmAsNPdi^k{1@Htq4^UhBa80T&^O6o-Bhz?$BoYM`KsX(5sv0$ z+=Abe%8yS-8hk}&o@e%tfar{k&ObqyfF-H$E*i9-xbqL{%M32`KhBD9<3uFzU8&>s zEE5&;_(kjI3Mc^6)Q>7}vzN0uk|O0L!r_&dgTudr?y0Vgs6;$) zV6`|(*y7jxjrFIQ;bi^eIKm%0Z~iQJ`*yqGHrb$k^^iQ;TXA((Zso4HdK50iz|~`L zqi`qS!cDjSg`MJz~sf3_$z*E zl=-u|jo;+~AEz7f%xU9GUo+2}xxU?ybYZJH-2I+><^j+;@`!BdNbh1UoIihr+eMKk z4#)RAliAtmVQ!Z9JfcYN;tL{p?i?~HJ4

calUdhpekLM{e%h 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%0Dd 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 literal 0 HcmV?d00001 diff --git a/example/android/third_party/libsodium/build.sh b/example/android/third_party/libsodium/build.sh new file mode 100644 index 000000000..4eca044cd --- /dev/null +++ b/example/android/third_party/libsodium/build.sh @@ -0,0 +1,31 @@ +#!/bin/sh + +rm -rf libsodium-1.0.18 libsodium-1.0.18.tar.gz + +export ANDROID_NDK_ROOT=../../../../android-ndk-r25b +export NDK_PLATFORM="android-32" +export OPENSSL_DIR=../crypto +export LIBSODIUM_FULL_BUILD=1 +export CC= +export CXX= + +wget https://download.libsodium.org/libsodium/releases/libsodium-1.0.18.tar.gz +tar -xvf libsodium-1.0.18.tar.gz + +cd libsodium-1.0.18 +#./autogen.sh -s + +./dist-build/android-x86.sh +cp -R libsodium-android-i686 .. + +./dist-build/android-x86_64.sh +cp -R libsodium-android-westmere .. + +./dist-build/android-armv7-a.sh +cp -R libsodium-android-armv7-a .. + +./dist-build/android-armv8-a.sh +cp -R libsodium-android-armv8-a .. + +#./dist-build/android-aar.sh + diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium.h new file mode 100644 index 000000000..295f911cf --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium.h @@ -0,0 +1,69 @@ + +#ifndef sodium_H +#define sodium_H + +#include "sodium/version.h" + +#include "sodium/core.h" +#include "sodium/crypto_aead_aes256gcm.h" +#include "sodium/crypto_aead_chacha20poly1305.h" +#include "sodium/crypto_aead_xchacha20poly1305.h" +#include "sodium/crypto_auth.h" +#include "sodium/crypto_auth_hmacsha256.h" +#include "sodium/crypto_auth_hmacsha512.h" +#include "sodium/crypto_auth_hmacsha512256.h" +#include "sodium/crypto_box.h" +#include "sodium/crypto_box_curve25519xsalsa20poly1305.h" +#include "sodium/crypto_core_hsalsa20.h" +#include "sodium/crypto_core_hchacha20.h" +#include "sodium/crypto_core_salsa20.h" +#include "sodium/crypto_core_salsa2012.h" +#include "sodium/crypto_core_salsa208.h" +#include "sodium/crypto_generichash.h" +#include "sodium/crypto_generichash_blake2b.h" +#include "sodium/crypto_hash.h" +#include "sodium/crypto_hash_sha256.h" +#include "sodium/crypto_hash_sha512.h" +#include "sodium/crypto_kdf.h" +#include "sodium/crypto_kdf_blake2b.h" +#include "sodium/crypto_kx.h" +#include "sodium/crypto_onetimeauth.h" +#include "sodium/crypto_onetimeauth_poly1305.h" +#include "sodium/crypto_pwhash.h" +#include "sodium/crypto_pwhash_argon2i.h" +#include "sodium/crypto_scalarmult.h" +#include "sodium/crypto_scalarmult_curve25519.h" +#include "sodium/crypto_secretbox.h" +#include "sodium/crypto_secretbox_xsalsa20poly1305.h" +#include "sodium/crypto_secretstream_xchacha20poly1305.h" +#include "sodium/crypto_shorthash.h" +#include "sodium/crypto_shorthash_siphash24.h" +#include "sodium/crypto_sign.h" +#include "sodium/crypto_sign_ed25519.h" +#include "sodium/crypto_stream.h" +#include "sodium/crypto_stream_chacha20.h" +#include "sodium/crypto_stream_salsa20.h" +#include "sodium/crypto_stream_xsalsa20.h" +#include "sodium/crypto_verify_16.h" +#include "sodium/crypto_verify_32.h" +#include "sodium/crypto_verify_64.h" +#include "sodium/randombytes.h" +#include "sodium/randombytes_internal_random.h" +#include "sodium/randombytes_sysrandom.h" +#include "sodium/runtime.h" +#include "sodium/utils.h" + +#ifndef SODIUM_LIBRARY_MINIMAL +# include "sodium/crypto_box_curve25519xchacha20poly1305.h" +# include "sodium/crypto_core_ed25519.h" +# include "sodium/crypto_core_ristretto255.h" +# include "sodium/crypto_scalarmult_ed25519.h" +# include "sodium/crypto_scalarmult_ristretto255.h" +# include "sodium/crypto_secretbox_xchacha20poly1305.h" +# include "sodium/crypto_pwhash_scryptsalsa208sha256.h" +# include "sodium/crypto_stream_salsa2012.h" +# include "sodium/crypto_stream_salsa208.h" +# include "sodium/crypto_stream_xchacha20.h" +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/core.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/core.h new file mode 100644 index 000000000..dd088d2ca --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/core.h @@ -0,0 +1,28 @@ + +#ifndef sodium_core_H +#define sodium_core_H + +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +SODIUM_EXPORT +int sodium_init(void) + __attribute__ ((warn_unused_result)); + +/* ---- */ + +SODIUM_EXPORT +int sodium_set_misuse_handler(void (*handler)(void)); + +SODIUM_EXPORT +void sodium_misuse(void) + __attribute__ ((noreturn)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_aead_aes256gcm.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_aead_aes256gcm.h new file mode 100644 index 000000000..9baeb3f19 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_aead_aes256gcm.h @@ -0,0 +1,179 @@ +#ifndef crypto_aead_aes256gcm_H +#define crypto_aead_aes256gcm_H + +/* + * WARNING: Despite being the most popular AEAD construction due to its + * use in TLS, safely using AES-GCM in a different context is tricky. + * + * No more than ~ 350 GB of input data should be encrypted with a given key. + * This is for ~ 16 KB messages -- Actual figures vary according to + * message sizes. + * + * In addition, nonces are short and repeated nonces would totally destroy + * the security of this scheme. + * + * Nonces should thus come from atomic counters, which can be difficult to + * set up in a distributed environment. + * + * Unless you absolutely need AES-GCM, use crypto_aead_xchacha20poly1305_ietf_*() + * instead. It doesn't have any of these limitations. + * Or, if you don't need to authenticate additional data, just stick to + * crypto_secretbox(). + */ + +#include +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +SODIUM_EXPORT +int crypto_aead_aes256gcm_is_available(void); + +#define crypto_aead_aes256gcm_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_aead_aes256gcm_keybytes(void); + +#define crypto_aead_aes256gcm_NSECBYTES 0U +SODIUM_EXPORT +size_t crypto_aead_aes256gcm_nsecbytes(void); + +#define crypto_aead_aes256gcm_NPUBBYTES 12U +SODIUM_EXPORT +size_t crypto_aead_aes256gcm_npubbytes(void); + +#define crypto_aead_aes256gcm_ABYTES 16U +SODIUM_EXPORT +size_t crypto_aead_aes256gcm_abytes(void); + +#define crypto_aead_aes256gcm_MESSAGEBYTES_MAX \ + SODIUM_MIN(SODIUM_SIZE_MAX - crypto_aead_aes256gcm_ABYTES, \ + (16ULL * ((1ULL << 32) - 2ULL))) +SODIUM_EXPORT +size_t crypto_aead_aes256gcm_messagebytes_max(void); + +typedef struct CRYPTO_ALIGN(16) crypto_aead_aes256gcm_state_ { + unsigned char opaque[512]; +} crypto_aead_aes256gcm_state; + +SODIUM_EXPORT +size_t crypto_aead_aes256gcm_statebytes(void); + +SODIUM_EXPORT +int crypto_aead_aes256gcm_encrypt(unsigned char *c, + unsigned long long *clen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((nonnull(1, 8, 9))); + +SODIUM_EXPORT +int crypto_aead_aes256gcm_decrypt(unsigned char *m, + unsigned long long *mlen_p, + unsigned char *nsec, + const unsigned char *c, + unsigned long long clen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(4, 8, 9))); + +SODIUM_EXPORT +int crypto_aead_aes256gcm_encrypt_detached(unsigned char *c, + unsigned char *mac, + unsigned long long *maclen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((nonnull(1, 2, 9, 10))); + +SODIUM_EXPORT +int crypto_aead_aes256gcm_decrypt_detached(unsigned char *m, + unsigned char *nsec, + const unsigned char *c, + unsigned long long clen, + const unsigned char *mac, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(3, 5, 8, 9))); + +/* -- Precomputation interface -- */ + +SODIUM_EXPORT +int crypto_aead_aes256gcm_beforenm(crypto_aead_aes256gcm_state *ctx_, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_aead_aes256gcm_encrypt_afternm(unsigned char *c, + unsigned long long *clen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const crypto_aead_aes256gcm_state *ctx_) + __attribute__ ((nonnull(1, 8, 9))); + +SODIUM_EXPORT +int crypto_aead_aes256gcm_decrypt_afternm(unsigned char *m, + unsigned long long *mlen_p, + unsigned char *nsec, + const unsigned char *c, + unsigned long long clen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *npub, + const crypto_aead_aes256gcm_state *ctx_) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(4, 8, 9))); + +SODIUM_EXPORT +int crypto_aead_aes256gcm_encrypt_detached_afternm(unsigned char *c, + unsigned char *mac, + unsigned long long *maclen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const crypto_aead_aes256gcm_state *ctx_) + __attribute__ ((nonnull(1, 2, 9, 10))); + +SODIUM_EXPORT +int crypto_aead_aes256gcm_decrypt_detached_afternm(unsigned char *m, + unsigned char *nsec, + const unsigned char *c, + unsigned long long clen, + const unsigned char *mac, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *npub, + const crypto_aead_aes256gcm_state *ctx_) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(3, 5, 8, 9))); + +SODIUM_EXPORT +void crypto_aead_aes256gcm_keygen(unsigned char k[crypto_aead_aes256gcm_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_aead_chacha20poly1305.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_aead_chacha20poly1305.h new file mode 100644 index 000000000..5d671df14 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_aead_chacha20poly1305.h @@ -0,0 +1,180 @@ +#ifndef crypto_aead_chacha20poly1305_H +#define crypto_aead_chacha20poly1305_H + +#include +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +/* -- IETF ChaCha20-Poly1305 construction with a 96-bit nonce and a 32-bit internal counter -- */ + +#define crypto_aead_chacha20poly1305_ietf_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_aead_chacha20poly1305_ietf_keybytes(void); + +#define crypto_aead_chacha20poly1305_ietf_NSECBYTES 0U +SODIUM_EXPORT +size_t crypto_aead_chacha20poly1305_ietf_nsecbytes(void); + +#define crypto_aead_chacha20poly1305_ietf_NPUBBYTES 12U + +SODIUM_EXPORT +size_t crypto_aead_chacha20poly1305_ietf_npubbytes(void); + +#define crypto_aead_chacha20poly1305_ietf_ABYTES 16U +SODIUM_EXPORT +size_t crypto_aead_chacha20poly1305_ietf_abytes(void); + +#define crypto_aead_chacha20poly1305_ietf_MESSAGEBYTES_MAX \ + SODIUM_MIN(SODIUM_SIZE_MAX - crypto_aead_chacha20poly1305_ietf_ABYTES, \ + (64ULL * ((1ULL << 32) - 1ULL))) +SODIUM_EXPORT +size_t crypto_aead_chacha20poly1305_ietf_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_aead_chacha20poly1305_ietf_encrypt(unsigned char *c, + unsigned long long *clen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((nonnull(1, 8, 9))); + +SODIUM_EXPORT +int crypto_aead_chacha20poly1305_ietf_decrypt(unsigned char *m, + unsigned long long *mlen_p, + unsigned char *nsec, + const unsigned char *c, + unsigned long long clen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(4, 8, 9))); + +SODIUM_EXPORT +int crypto_aead_chacha20poly1305_ietf_encrypt_detached(unsigned char *c, + unsigned char *mac, + unsigned long long *maclen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((nonnull(1, 2, 9, 10))); + +SODIUM_EXPORT +int crypto_aead_chacha20poly1305_ietf_decrypt_detached(unsigned char *m, + unsigned char *nsec, + const unsigned char *c, + unsigned long long clen, + const unsigned char *mac, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(3, 5, 8, 9))); + +SODIUM_EXPORT +void crypto_aead_chacha20poly1305_ietf_keygen(unsigned char k[crypto_aead_chacha20poly1305_ietf_KEYBYTES]) + __attribute__ ((nonnull)); + +/* -- Original ChaCha20-Poly1305 construction with a 64-bit nonce and a 64-bit internal counter -- */ + +#define crypto_aead_chacha20poly1305_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_aead_chacha20poly1305_keybytes(void); + +#define crypto_aead_chacha20poly1305_NSECBYTES 0U +SODIUM_EXPORT +size_t crypto_aead_chacha20poly1305_nsecbytes(void); + +#define crypto_aead_chacha20poly1305_NPUBBYTES 8U +SODIUM_EXPORT +size_t crypto_aead_chacha20poly1305_npubbytes(void); + +#define crypto_aead_chacha20poly1305_ABYTES 16U +SODIUM_EXPORT +size_t crypto_aead_chacha20poly1305_abytes(void); + +#define crypto_aead_chacha20poly1305_MESSAGEBYTES_MAX \ + (SODIUM_SIZE_MAX - crypto_aead_chacha20poly1305_ABYTES) +SODIUM_EXPORT +size_t crypto_aead_chacha20poly1305_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_aead_chacha20poly1305_encrypt(unsigned char *c, + unsigned long long *clen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((nonnull(1, 8, 9))); + +SODIUM_EXPORT +int crypto_aead_chacha20poly1305_decrypt(unsigned char *m, + unsigned long long *mlen_p, + unsigned char *nsec, + const unsigned char *c, + unsigned long long clen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(4, 8, 9))); + +SODIUM_EXPORT +int crypto_aead_chacha20poly1305_encrypt_detached(unsigned char *c, + unsigned char *mac, + unsigned long long *maclen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((nonnull(1, 2, 9, 10))); + +SODIUM_EXPORT +int crypto_aead_chacha20poly1305_decrypt_detached(unsigned char *m, + unsigned char *nsec, + const unsigned char *c, + unsigned long long clen, + const unsigned char *mac, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(3, 5, 8, 9))); + +SODIUM_EXPORT +void crypto_aead_chacha20poly1305_keygen(unsigned char k[crypto_aead_chacha20poly1305_KEYBYTES]) + __attribute__ ((nonnull)); + +/* Aliases */ + +#define crypto_aead_chacha20poly1305_IETF_KEYBYTES crypto_aead_chacha20poly1305_ietf_KEYBYTES +#define crypto_aead_chacha20poly1305_IETF_NSECBYTES crypto_aead_chacha20poly1305_ietf_NSECBYTES +#define crypto_aead_chacha20poly1305_IETF_NPUBBYTES crypto_aead_chacha20poly1305_ietf_NPUBBYTES +#define crypto_aead_chacha20poly1305_IETF_ABYTES crypto_aead_chacha20poly1305_ietf_ABYTES +#define crypto_aead_chacha20poly1305_IETF_MESSAGEBYTES_MAX crypto_aead_chacha20poly1305_ietf_MESSAGEBYTES_MAX + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_aead_xchacha20poly1305.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_aead_xchacha20poly1305.h new file mode 100644 index 000000000..6643b0cbf --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_aead_xchacha20poly1305.h @@ -0,0 +1,100 @@ +#ifndef crypto_aead_xchacha20poly1305_H +#define crypto_aead_xchacha20poly1305_H + +#include +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_aead_xchacha20poly1305_ietf_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_aead_xchacha20poly1305_ietf_keybytes(void); + +#define crypto_aead_xchacha20poly1305_ietf_NSECBYTES 0U +SODIUM_EXPORT +size_t crypto_aead_xchacha20poly1305_ietf_nsecbytes(void); + +#define crypto_aead_xchacha20poly1305_ietf_NPUBBYTES 24U +SODIUM_EXPORT +size_t crypto_aead_xchacha20poly1305_ietf_npubbytes(void); + +#define crypto_aead_xchacha20poly1305_ietf_ABYTES 16U +SODIUM_EXPORT +size_t crypto_aead_xchacha20poly1305_ietf_abytes(void); + +#define crypto_aead_xchacha20poly1305_ietf_MESSAGEBYTES_MAX \ + (SODIUM_SIZE_MAX - crypto_aead_xchacha20poly1305_ietf_ABYTES) +SODIUM_EXPORT +size_t crypto_aead_xchacha20poly1305_ietf_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_aead_xchacha20poly1305_ietf_encrypt(unsigned char *c, + unsigned long long *clen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((nonnull(1, 8, 9))); + +SODIUM_EXPORT +int crypto_aead_xchacha20poly1305_ietf_decrypt(unsigned char *m, + unsigned long long *mlen_p, + unsigned char *nsec, + const unsigned char *c, + unsigned long long clen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(4, 8, 9))); + +SODIUM_EXPORT +int crypto_aead_xchacha20poly1305_ietf_encrypt_detached(unsigned char *c, + unsigned char *mac, + unsigned long long *maclen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((nonnull(1, 2, 9, 10))); + +SODIUM_EXPORT +int crypto_aead_xchacha20poly1305_ietf_decrypt_detached(unsigned char *m, + unsigned char *nsec, + const unsigned char *c, + unsigned long long clen, + const unsigned char *mac, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(3, 5, 8, 9))); + +SODIUM_EXPORT +void crypto_aead_xchacha20poly1305_ietf_keygen(unsigned char k[crypto_aead_xchacha20poly1305_ietf_KEYBYTES]) + __attribute__ ((nonnull)); + +/* Aliases */ + +#define crypto_aead_xchacha20poly1305_IETF_KEYBYTES crypto_aead_xchacha20poly1305_ietf_KEYBYTES +#define crypto_aead_xchacha20poly1305_IETF_NSECBYTES crypto_aead_xchacha20poly1305_ietf_NSECBYTES +#define crypto_aead_xchacha20poly1305_IETF_NPUBBYTES crypto_aead_xchacha20poly1305_ietf_NPUBBYTES +#define crypto_aead_xchacha20poly1305_IETF_ABYTES crypto_aead_xchacha20poly1305_ietf_ABYTES +#define crypto_aead_xchacha20poly1305_IETF_MESSAGEBYTES_MAX crypto_aead_xchacha20poly1305_ietf_MESSAGEBYTES_MAX + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_auth.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_auth.h new file mode 100644 index 000000000..540aee0e8 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_auth.h @@ -0,0 +1,46 @@ +#ifndef crypto_auth_H +#define crypto_auth_H + +#include + +#include "crypto_auth_hmacsha512256.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_auth_BYTES crypto_auth_hmacsha512256_BYTES +SODIUM_EXPORT +size_t crypto_auth_bytes(void); + +#define crypto_auth_KEYBYTES crypto_auth_hmacsha512256_KEYBYTES +SODIUM_EXPORT +size_t crypto_auth_keybytes(void); + +#define crypto_auth_PRIMITIVE "hmacsha512256" +SODIUM_EXPORT +const char *crypto_auth_primitive(void); + +SODIUM_EXPORT +int crypto_auth(unsigned char *out, const unsigned char *in, + unsigned long long inlen, const unsigned char *k) + __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_auth_verify(const unsigned char *h, const unsigned char *in, + unsigned long long inlen, const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +void crypto_auth_keygen(unsigned char k[crypto_auth_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_auth_hmacsha256.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_auth_hmacsha256.h new file mode 100644 index 000000000..3da864c7d --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_auth_hmacsha256.h @@ -0,0 +1,70 @@ +#ifndef crypto_auth_hmacsha256_H +#define crypto_auth_hmacsha256_H + +#include +#include "crypto_hash_sha256.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_auth_hmacsha256_BYTES 32U +SODIUM_EXPORT +size_t crypto_auth_hmacsha256_bytes(void); + +#define crypto_auth_hmacsha256_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_auth_hmacsha256_keybytes(void); + +SODIUM_EXPORT +int crypto_auth_hmacsha256(unsigned char *out, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *k) __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_auth_hmacsha256_verify(const unsigned char *h, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4))); + +/* ------------------------------------------------------------------------- */ + +typedef struct crypto_auth_hmacsha256_state { + crypto_hash_sha256_state ictx; + crypto_hash_sha256_state octx; +} crypto_auth_hmacsha256_state; + +SODIUM_EXPORT +size_t crypto_auth_hmacsha256_statebytes(void); + +SODIUM_EXPORT +int crypto_auth_hmacsha256_init(crypto_auth_hmacsha256_state *state, + const unsigned char *key, + size_t keylen) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_auth_hmacsha256_update(crypto_auth_hmacsha256_state *state, + const unsigned char *in, + unsigned long long inlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_auth_hmacsha256_final(crypto_auth_hmacsha256_state *state, + unsigned char *out) __attribute__ ((nonnull)); + + +SODIUM_EXPORT +void crypto_auth_hmacsha256_keygen(unsigned char k[crypto_auth_hmacsha256_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_auth_hmacsha512.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_auth_hmacsha512.h new file mode 100644 index 000000000..d992cb816 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_auth_hmacsha512.h @@ -0,0 +1,68 @@ +#ifndef crypto_auth_hmacsha512_H +#define crypto_auth_hmacsha512_H + +#include +#include "crypto_hash_sha512.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_auth_hmacsha512_BYTES 64U +SODIUM_EXPORT +size_t crypto_auth_hmacsha512_bytes(void); + +#define crypto_auth_hmacsha512_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_auth_hmacsha512_keybytes(void); + +SODIUM_EXPORT +int crypto_auth_hmacsha512(unsigned char *out, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *k) __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_auth_hmacsha512_verify(const unsigned char *h, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4))); + +/* ------------------------------------------------------------------------- */ + +typedef struct crypto_auth_hmacsha512_state { + crypto_hash_sha512_state ictx; + crypto_hash_sha512_state octx; +} crypto_auth_hmacsha512_state; + +SODIUM_EXPORT +size_t crypto_auth_hmacsha512_statebytes(void); + +SODIUM_EXPORT +int crypto_auth_hmacsha512_init(crypto_auth_hmacsha512_state *state, + const unsigned char *key, + size_t keylen) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_auth_hmacsha512_update(crypto_auth_hmacsha512_state *state, + const unsigned char *in, + unsigned long long inlen) __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_auth_hmacsha512_final(crypto_auth_hmacsha512_state *state, + unsigned char *out) __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_auth_hmacsha512_keygen(unsigned char k[crypto_auth_hmacsha512_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_auth_hmacsha512256.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_auth_hmacsha512256.h new file mode 100644 index 000000000..3fb526389 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_auth_hmacsha512256.h @@ -0,0 +1,65 @@ +#ifndef crypto_auth_hmacsha512256_H +#define crypto_auth_hmacsha512256_H + +#include +#include "crypto_auth_hmacsha512.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_auth_hmacsha512256_BYTES 32U +SODIUM_EXPORT +size_t crypto_auth_hmacsha512256_bytes(void); + +#define crypto_auth_hmacsha512256_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_auth_hmacsha512256_keybytes(void); + +SODIUM_EXPORT +int crypto_auth_hmacsha512256(unsigned char *out, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *k) __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_auth_hmacsha512256_verify(const unsigned char *h, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4))); + +/* ------------------------------------------------------------------------- */ + +typedef crypto_auth_hmacsha512_state crypto_auth_hmacsha512256_state; + +SODIUM_EXPORT +size_t crypto_auth_hmacsha512256_statebytes(void); + +SODIUM_EXPORT +int crypto_auth_hmacsha512256_init(crypto_auth_hmacsha512256_state *state, + const unsigned char *key, + size_t keylen) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_auth_hmacsha512256_update(crypto_auth_hmacsha512256_state *state, + const unsigned char *in, + unsigned long long inlen) __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_auth_hmacsha512256_final(crypto_auth_hmacsha512256_state *state, + unsigned char *out) __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_auth_hmacsha512256_keygen(unsigned char k[crypto_auth_hmacsha512256_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_box.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_box.h new file mode 100644 index 000000000..e060dd29f --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_box.h @@ -0,0 +1,177 @@ +#ifndef crypto_box_H +#define crypto_box_H + +/* + * THREAD SAFETY: crypto_box_keypair() is thread-safe, + * provided that sodium_init() was called before. + * + * Other functions are always thread-safe. + */ + +#include + +#include "crypto_box_curve25519xsalsa20poly1305.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_box_SEEDBYTES crypto_box_curve25519xsalsa20poly1305_SEEDBYTES +SODIUM_EXPORT +size_t crypto_box_seedbytes(void); + +#define crypto_box_PUBLICKEYBYTES crypto_box_curve25519xsalsa20poly1305_PUBLICKEYBYTES +SODIUM_EXPORT +size_t crypto_box_publickeybytes(void); + +#define crypto_box_SECRETKEYBYTES crypto_box_curve25519xsalsa20poly1305_SECRETKEYBYTES +SODIUM_EXPORT +size_t crypto_box_secretkeybytes(void); + +#define crypto_box_NONCEBYTES crypto_box_curve25519xsalsa20poly1305_NONCEBYTES +SODIUM_EXPORT +size_t crypto_box_noncebytes(void); + +#define crypto_box_MACBYTES crypto_box_curve25519xsalsa20poly1305_MACBYTES +SODIUM_EXPORT +size_t crypto_box_macbytes(void); + +#define crypto_box_MESSAGEBYTES_MAX crypto_box_curve25519xsalsa20poly1305_MESSAGEBYTES_MAX +SODIUM_EXPORT +size_t crypto_box_messagebytes_max(void); + +#define crypto_box_PRIMITIVE "curve25519xsalsa20poly1305" +SODIUM_EXPORT +const char *crypto_box_primitive(void); + +SODIUM_EXPORT +int crypto_box_seed_keypair(unsigned char *pk, unsigned char *sk, + const unsigned char *seed) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_box_keypair(unsigned char *pk, unsigned char *sk) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_box_easy(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *pk, const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4, 5, 6))); + +SODIUM_EXPORT +int crypto_box_open_easy(unsigned char *m, const unsigned char *c, + unsigned long long clen, const unsigned char *n, + const unsigned char *pk, const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5, 6))); + +SODIUM_EXPORT +int crypto_box_detached(unsigned char *c, unsigned char *mac, + const unsigned char *m, unsigned long long mlen, + const unsigned char *n, const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 2, 5, 6, 7))); + +SODIUM_EXPORT +int crypto_box_open_detached(unsigned char *m, const unsigned char *c, + const unsigned char *mac, + unsigned long long clen, + const unsigned char *n, + const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 3, 5, 6, 7))); + +/* -- Precomputation interface -- */ + +#define crypto_box_BEFORENMBYTES crypto_box_curve25519xsalsa20poly1305_BEFORENMBYTES +SODIUM_EXPORT +size_t crypto_box_beforenmbytes(void); + +SODIUM_EXPORT +int crypto_box_beforenm(unsigned char *k, const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_box_easy_afternm(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) __attribute__ ((nonnull(1, 4, 5))); + +SODIUM_EXPORT +int crypto_box_open_easy_afternm(unsigned char *m, const unsigned char *c, + unsigned long long clen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5))); + +SODIUM_EXPORT +int crypto_box_detached_afternm(unsigned char *c, unsigned char *mac, + const unsigned char *m, unsigned long long mlen, + const unsigned char *n, const unsigned char *k) + __attribute__ ((nonnull(1, 2, 5, 6))); + +SODIUM_EXPORT +int crypto_box_open_detached_afternm(unsigned char *m, const unsigned char *c, + const unsigned char *mac, + unsigned long long clen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 3, 5, 6))); + +/* -- Ephemeral SK interface -- */ + +#define crypto_box_SEALBYTES (crypto_box_PUBLICKEYBYTES + crypto_box_MACBYTES) +SODIUM_EXPORT +size_t crypto_box_sealbytes(void); + +SODIUM_EXPORT +int crypto_box_seal(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *pk) + __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_box_seal_open(unsigned char *m, const unsigned char *c, + unsigned long long clen, + const unsigned char *pk, const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5))); + +/* -- NaCl compatibility interface ; Requires padding -- */ + +#define crypto_box_ZEROBYTES crypto_box_curve25519xsalsa20poly1305_ZEROBYTES +SODIUM_EXPORT +size_t crypto_box_zerobytes(void); + +#define crypto_box_BOXZEROBYTES crypto_box_curve25519xsalsa20poly1305_BOXZEROBYTES +SODIUM_EXPORT +size_t crypto_box_boxzerobytes(void); + +SODIUM_EXPORT +int crypto_box(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *pk, const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4, 5, 6))); + +SODIUM_EXPORT +int crypto_box_open(unsigned char *m, const unsigned char *c, + unsigned long long clen, const unsigned char *n, + const unsigned char *pk, const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5, 6))); + +SODIUM_EXPORT +int crypto_box_afternm(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) __attribute__ ((nonnull(1, 4, 5))); + +SODIUM_EXPORT +int crypto_box_open_afternm(unsigned char *m, const unsigned char *c, + unsigned long long clen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5))); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_box_curve25519xchacha20poly1305.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_box_curve25519xchacha20poly1305.h new file mode 100644 index 000000000..26a3d31ef --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_box_curve25519xchacha20poly1305.h @@ -0,0 +1,164 @@ + +#ifndef crypto_box_curve25519xchacha20poly1305_H +#define crypto_box_curve25519xchacha20poly1305_H + +#include +#include "crypto_stream_xchacha20.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_box_curve25519xchacha20poly1305_SEEDBYTES 32U +SODIUM_EXPORT +size_t crypto_box_curve25519xchacha20poly1305_seedbytes(void); + +#define crypto_box_curve25519xchacha20poly1305_PUBLICKEYBYTES 32U +SODIUM_EXPORT +size_t crypto_box_curve25519xchacha20poly1305_publickeybytes(void); + +#define crypto_box_curve25519xchacha20poly1305_SECRETKEYBYTES 32U +SODIUM_EXPORT +size_t crypto_box_curve25519xchacha20poly1305_secretkeybytes(void); + +#define crypto_box_curve25519xchacha20poly1305_BEFORENMBYTES 32U +SODIUM_EXPORT +size_t crypto_box_curve25519xchacha20poly1305_beforenmbytes(void); + +#define crypto_box_curve25519xchacha20poly1305_NONCEBYTES 24U +SODIUM_EXPORT +size_t crypto_box_curve25519xchacha20poly1305_noncebytes(void); + +#define crypto_box_curve25519xchacha20poly1305_MACBYTES 16U +SODIUM_EXPORT +size_t crypto_box_curve25519xchacha20poly1305_macbytes(void); + +#define crypto_box_curve25519xchacha20poly1305_MESSAGEBYTES_MAX \ + (crypto_stream_xchacha20_MESSAGEBYTES_MAX - crypto_box_curve25519xchacha20poly1305_MACBYTES) +SODIUM_EXPORT +size_t crypto_box_curve25519xchacha20poly1305_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_seed_keypair(unsigned char *pk, + unsigned char *sk, + const unsigned char *seed) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_keypair(unsigned char *pk, + unsigned char *sk) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_easy(unsigned char *c, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, + const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4, 5, 6))); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_open_easy(unsigned char *m, + const unsigned char *c, + unsigned long long clen, + const unsigned char *n, + const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5, 6))); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_detached(unsigned char *c, + unsigned char *mac, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, + const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 2, 5, 6, 7))); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_open_detached(unsigned char *m, + const unsigned char *c, + const unsigned char *mac, + unsigned long long clen, + const unsigned char *n, + const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 3, 5, 6, 7))); + +/* -- Precomputation interface -- */ + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_beforenm(unsigned char *k, + const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_easy_afternm(unsigned char *c, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull(1, 4, 5))); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_open_easy_afternm(unsigned char *m, + const unsigned char *c, + unsigned long long clen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5))); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_detached_afternm(unsigned char *c, + unsigned char *mac, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull(1, 2, 5, 6))); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_open_detached_afternm(unsigned char *m, + const unsigned char *c, + const unsigned char *mac, + unsigned long long clen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 3, 5, 6))); + +/* -- Ephemeral SK interface -- */ + +#define crypto_box_curve25519xchacha20poly1305_SEALBYTES \ + (crypto_box_curve25519xchacha20poly1305_PUBLICKEYBYTES + \ + crypto_box_curve25519xchacha20poly1305_MACBYTES) + +SODIUM_EXPORT +size_t crypto_box_curve25519xchacha20poly1305_sealbytes(void); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_seal(unsigned char *c, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *pk) + __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_seal_open(unsigned char *m, + const unsigned char *c, + unsigned long long clen, + const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5))); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_box_curve25519xsalsa20poly1305.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_box_curve25519xsalsa20poly1305.h new file mode 100644 index 000000000..e733f4999 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_box_curve25519xsalsa20poly1305.h @@ -0,0 +1,112 @@ +#ifndef crypto_box_curve25519xsalsa20poly1305_H +#define crypto_box_curve25519xsalsa20poly1305_H + +#include +#include "crypto_stream_xsalsa20.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_box_curve25519xsalsa20poly1305_SEEDBYTES 32U +SODIUM_EXPORT +size_t crypto_box_curve25519xsalsa20poly1305_seedbytes(void); + +#define crypto_box_curve25519xsalsa20poly1305_PUBLICKEYBYTES 32U +SODIUM_EXPORT +size_t crypto_box_curve25519xsalsa20poly1305_publickeybytes(void); + +#define crypto_box_curve25519xsalsa20poly1305_SECRETKEYBYTES 32U +SODIUM_EXPORT +size_t crypto_box_curve25519xsalsa20poly1305_secretkeybytes(void); + +#define crypto_box_curve25519xsalsa20poly1305_BEFORENMBYTES 32U +SODIUM_EXPORT +size_t crypto_box_curve25519xsalsa20poly1305_beforenmbytes(void); + +#define crypto_box_curve25519xsalsa20poly1305_NONCEBYTES 24U +SODIUM_EXPORT +size_t crypto_box_curve25519xsalsa20poly1305_noncebytes(void); + +#define crypto_box_curve25519xsalsa20poly1305_MACBYTES 16U +SODIUM_EXPORT +size_t crypto_box_curve25519xsalsa20poly1305_macbytes(void); + +/* Only for the libsodium API - The NaCl compatibility API would require BOXZEROBYTES extra bytes */ +#define crypto_box_curve25519xsalsa20poly1305_MESSAGEBYTES_MAX \ + (crypto_stream_xsalsa20_MESSAGEBYTES_MAX - crypto_box_curve25519xsalsa20poly1305_MACBYTES) +SODIUM_EXPORT +size_t crypto_box_curve25519xsalsa20poly1305_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_box_curve25519xsalsa20poly1305_seed_keypair(unsigned char *pk, + unsigned char *sk, + const unsigned char *seed) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_box_curve25519xsalsa20poly1305_keypair(unsigned char *pk, + unsigned char *sk) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_box_curve25519xsalsa20poly1305_beforenm(unsigned char *k, + const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +/* -- NaCl compatibility interface ; Requires padding -- */ + +#define crypto_box_curve25519xsalsa20poly1305_BOXZEROBYTES 16U +SODIUM_EXPORT +size_t crypto_box_curve25519xsalsa20poly1305_boxzerobytes(void); + +#define crypto_box_curve25519xsalsa20poly1305_ZEROBYTES \ + (crypto_box_curve25519xsalsa20poly1305_BOXZEROBYTES + \ + crypto_box_curve25519xsalsa20poly1305_MACBYTES) +SODIUM_EXPORT +size_t crypto_box_curve25519xsalsa20poly1305_zerobytes(void); + +SODIUM_EXPORT +int crypto_box_curve25519xsalsa20poly1305(unsigned char *c, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, + const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4, 5, 6))); + +SODIUM_EXPORT +int crypto_box_curve25519xsalsa20poly1305_open(unsigned char *m, + const unsigned char *c, + unsigned long long clen, + const unsigned char *n, + const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5, 6))); + +SODIUM_EXPORT +int crypto_box_curve25519xsalsa20poly1305_afternm(unsigned char *c, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull(1, 4, 5))); + +SODIUM_EXPORT +int crypto_box_curve25519xsalsa20poly1305_open_afternm(unsigned char *m, + const unsigned char *c, + unsigned long long clen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5))); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_core_ed25519.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_core_ed25519.h new file mode 100644 index 000000000..3eae00c45 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_core_ed25519.h @@ -0,0 +1,100 @@ +#ifndef crypto_core_ed25519_H +#define crypto_core_ed25519_H + +#include +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_core_ed25519_BYTES 32 +SODIUM_EXPORT +size_t crypto_core_ed25519_bytes(void); + +#define crypto_core_ed25519_UNIFORMBYTES 32 +SODIUM_EXPORT +size_t crypto_core_ed25519_uniformbytes(void); + +#define crypto_core_ed25519_HASHBYTES 64 +SODIUM_EXPORT +size_t crypto_core_ed25519_hashbytes(void); + +#define crypto_core_ed25519_SCALARBYTES 32 +SODIUM_EXPORT +size_t crypto_core_ed25519_scalarbytes(void); + +#define crypto_core_ed25519_NONREDUCEDSCALARBYTES 64 +SODIUM_EXPORT +size_t crypto_core_ed25519_nonreducedscalarbytes(void); + +SODIUM_EXPORT +int crypto_core_ed25519_is_valid_point(const unsigned char *p) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_core_ed25519_add(unsigned char *r, + const unsigned char *p, const unsigned char *q) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_core_ed25519_sub(unsigned char *r, + const unsigned char *p, const unsigned char *q) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_core_ed25519_from_uniform(unsigned char *p, const unsigned char *r) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_core_ed25519_from_hash(unsigned char *p, const unsigned char *h) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ed25519_random(unsigned char *p) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ed25519_scalar_random(unsigned char *r) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_core_ed25519_scalar_invert(unsigned char *recip, const unsigned char *s) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ed25519_scalar_negate(unsigned char *neg, const unsigned char *s) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ed25519_scalar_complement(unsigned char *comp, const unsigned char *s) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ed25519_scalar_add(unsigned char *z, const unsigned char *x, + const unsigned char *y) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ed25519_scalar_sub(unsigned char *z, const unsigned char *x, + const unsigned char *y) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ed25519_scalar_mul(unsigned char *z, const unsigned char *x, + const unsigned char *y) + __attribute__ ((nonnull)); + +/* + * The interval `s` is sampled from should be at least 317 bits to ensure almost + * uniformity of `r` over `L`. + */ +SODIUM_EXPORT +void crypto_core_ed25519_scalar_reduce(unsigned char *r, const unsigned char *s) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_core_hchacha20.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_core_hchacha20.h new file mode 100644 index 000000000..ece141b09 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_core_hchacha20.h @@ -0,0 +1,36 @@ +#ifndef crypto_core_hchacha20_H +#define crypto_core_hchacha20_H + +#include +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_core_hchacha20_OUTPUTBYTES 32U +SODIUM_EXPORT +size_t crypto_core_hchacha20_outputbytes(void); + +#define crypto_core_hchacha20_INPUTBYTES 16U +SODIUM_EXPORT +size_t crypto_core_hchacha20_inputbytes(void); + +#define crypto_core_hchacha20_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_core_hchacha20_keybytes(void); + +#define crypto_core_hchacha20_CONSTBYTES 16U +SODIUM_EXPORT +size_t crypto_core_hchacha20_constbytes(void); + +SODIUM_EXPORT +int crypto_core_hchacha20(unsigned char *out, const unsigned char *in, + const unsigned char *k, const unsigned char *c) + __attribute__ ((nonnull(1, 2, 3))); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_core_hsalsa20.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_core_hsalsa20.h new file mode 100644 index 000000000..4bf7a4878 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_core_hsalsa20.h @@ -0,0 +1,36 @@ +#ifndef crypto_core_hsalsa20_H +#define crypto_core_hsalsa20_H + +#include +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_core_hsalsa20_OUTPUTBYTES 32U +SODIUM_EXPORT +size_t crypto_core_hsalsa20_outputbytes(void); + +#define crypto_core_hsalsa20_INPUTBYTES 16U +SODIUM_EXPORT +size_t crypto_core_hsalsa20_inputbytes(void); + +#define crypto_core_hsalsa20_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_core_hsalsa20_keybytes(void); + +#define crypto_core_hsalsa20_CONSTBYTES 16U +SODIUM_EXPORT +size_t crypto_core_hsalsa20_constbytes(void); + +SODIUM_EXPORT +int crypto_core_hsalsa20(unsigned char *out, const unsigned char *in, + const unsigned char *k, const unsigned char *c) + __attribute__ ((nonnull(1, 2, 3))); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_core_ristretto255.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_core_ristretto255.h new file mode 100644 index 000000000..f2820e557 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_core_ristretto255.h @@ -0,0 +1,100 @@ +#ifndef crypto_core_ristretto255_H +#define crypto_core_ristretto255_H + +#include +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_core_ristretto255_BYTES 32 +SODIUM_EXPORT +size_t crypto_core_ristretto255_bytes(void); + +#define crypto_core_ristretto255_HASHBYTES 64 +SODIUM_EXPORT +size_t crypto_core_ristretto255_hashbytes(void); + +#define crypto_core_ristretto255_SCALARBYTES 32 +SODIUM_EXPORT +size_t crypto_core_ristretto255_scalarbytes(void); + +#define crypto_core_ristretto255_NONREDUCEDSCALARBYTES 64 +SODIUM_EXPORT +size_t crypto_core_ristretto255_nonreducedscalarbytes(void); + +SODIUM_EXPORT +int crypto_core_ristretto255_is_valid_point(const unsigned char *p) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_core_ristretto255_add(unsigned char *r, + const unsigned char *p, const unsigned char *q) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_core_ristretto255_sub(unsigned char *r, + const unsigned char *p, const unsigned char *q) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_core_ristretto255_from_hash(unsigned char *p, + const unsigned char *r) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ristretto255_random(unsigned char *p) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ristretto255_scalar_random(unsigned char *r) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_core_ristretto255_scalar_invert(unsigned char *recip, + const unsigned char *s) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ristretto255_scalar_negate(unsigned char *neg, + const unsigned char *s) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ristretto255_scalar_complement(unsigned char *comp, + const unsigned char *s) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ristretto255_scalar_add(unsigned char *z, + const unsigned char *x, + const unsigned char *y) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ristretto255_scalar_sub(unsigned char *z, + const unsigned char *x, + const unsigned char *y) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ristretto255_scalar_mul(unsigned char *z, + const unsigned char *x, + const unsigned char *y) + __attribute__ ((nonnull)); + +/* + * The interval `s` is sampled from should be at least 317 bits to ensure almost + * uniformity of `r` over `L`. + */ +SODIUM_EXPORT +void crypto_core_ristretto255_scalar_reduce(unsigned char *r, + const unsigned char *s) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_core_salsa20.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_core_salsa20.h new file mode 100644 index 000000000..bd79fd9f5 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_core_salsa20.h @@ -0,0 +1,36 @@ +#ifndef crypto_core_salsa20_H +#define crypto_core_salsa20_H + +#include +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_core_salsa20_OUTPUTBYTES 64U +SODIUM_EXPORT +size_t crypto_core_salsa20_outputbytes(void); + +#define crypto_core_salsa20_INPUTBYTES 16U +SODIUM_EXPORT +size_t crypto_core_salsa20_inputbytes(void); + +#define crypto_core_salsa20_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_core_salsa20_keybytes(void); + +#define crypto_core_salsa20_CONSTBYTES 16U +SODIUM_EXPORT +size_t crypto_core_salsa20_constbytes(void); + +SODIUM_EXPORT +int crypto_core_salsa20(unsigned char *out, const unsigned char *in, + const unsigned char *k, const unsigned char *c) + __attribute__ ((nonnull(1, 2, 3))); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_core_salsa2012.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_core_salsa2012.h new file mode 100644 index 000000000..05957591c --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_core_salsa2012.h @@ -0,0 +1,36 @@ +#ifndef crypto_core_salsa2012_H +#define crypto_core_salsa2012_H + +#include +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_core_salsa2012_OUTPUTBYTES 64U +SODIUM_EXPORT +size_t crypto_core_salsa2012_outputbytes(void); + +#define crypto_core_salsa2012_INPUTBYTES 16U +SODIUM_EXPORT +size_t crypto_core_salsa2012_inputbytes(void); + +#define crypto_core_salsa2012_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_core_salsa2012_keybytes(void); + +#define crypto_core_salsa2012_CONSTBYTES 16U +SODIUM_EXPORT +size_t crypto_core_salsa2012_constbytes(void); + +SODIUM_EXPORT +int crypto_core_salsa2012(unsigned char *out, const unsigned char *in, + const unsigned char *k, const unsigned char *c) + __attribute__ ((nonnull(1, 2, 3))); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_core_salsa208.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_core_salsa208.h new file mode 100644 index 000000000..d2f216af2 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_core_salsa208.h @@ -0,0 +1,40 @@ +#ifndef crypto_core_salsa208_H +#define crypto_core_salsa208_H + +#include +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_core_salsa208_OUTPUTBYTES 64U +SODIUM_EXPORT +size_t crypto_core_salsa208_outputbytes(void) + __attribute__ ((deprecated)); + +#define crypto_core_salsa208_INPUTBYTES 16U +SODIUM_EXPORT +size_t crypto_core_salsa208_inputbytes(void) + __attribute__ ((deprecated)); + +#define crypto_core_salsa208_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_core_salsa208_keybytes(void) + __attribute__ ((deprecated)); + +#define crypto_core_salsa208_CONSTBYTES 16U +SODIUM_EXPORT +size_t crypto_core_salsa208_constbytes(void) + __attribute__ ((deprecated)); + +SODIUM_EXPORT +int crypto_core_salsa208(unsigned char *out, const unsigned char *in, + const unsigned char *k, const unsigned char *c) + __attribute__ ((nonnull(1, 2, 3))); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_generichash.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_generichash.h new file mode 100644 index 000000000..d897e5d26 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_generichash.h @@ -0,0 +1,84 @@ +#ifndef crypto_generichash_H +#define crypto_generichash_H + +#include + +#include "crypto_generichash_blake2b.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_generichash_BYTES_MIN crypto_generichash_blake2b_BYTES_MIN +SODIUM_EXPORT +size_t crypto_generichash_bytes_min(void); + +#define crypto_generichash_BYTES_MAX crypto_generichash_blake2b_BYTES_MAX +SODIUM_EXPORT +size_t crypto_generichash_bytes_max(void); + +#define crypto_generichash_BYTES crypto_generichash_blake2b_BYTES +SODIUM_EXPORT +size_t crypto_generichash_bytes(void); + +#define crypto_generichash_KEYBYTES_MIN crypto_generichash_blake2b_KEYBYTES_MIN +SODIUM_EXPORT +size_t crypto_generichash_keybytes_min(void); + +#define crypto_generichash_KEYBYTES_MAX crypto_generichash_blake2b_KEYBYTES_MAX +SODIUM_EXPORT +size_t crypto_generichash_keybytes_max(void); + +#define crypto_generichash_KEYBYTES crypto_generichash_blake2b_KEYBYTES +SODIUM_EXPORT +size_t crypto_generichash_keybytes(void); + +#define crypto_generichash_PRIMITIVE "blake2b" +SODIUM_EXPORT +const char *crypto_generichash_primitive(void); + +/* + * Important when writing bindings for other programming languages: + * the state address should be 64-bytes aligned. + */ +typedef crypto_generichash_blake2b_state crypto_generichash_state; + +SODIUM_EXPORT +size_t crypto_generichash_statebytes(void); + +SODIUM_EXPORT +int crypto_generichash(unsigned char *out, size_t outlen, + const unsigned char *in, unsigned long long inlen, + const unsigned char *key, size_t keylen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_generichash_init(crypto_generichash_state *state, + const unsigned char *key, + const size_t keylen, const size_t outlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_generichash_update(crypto_generichash_state *state, + const unsigned char *in, + unsigned long long inlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_generichash_final(crypto_generichash_state *state, + unsigned char *out, const size_t outlen) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_generichash_keygen(unsigned char k[crypto_generichash_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_generichash_blake2b.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_generichash_blake2b.h new file mode 100644 index 000000000..fee9d8ad1 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_generichash_blake2b.h @@ -0,0 +1,118 @@ +#ifndef crypto_generichash_blake2b_H +#define crypto_generichash_blake2b_H + +#include +#include +#include + +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#if defined(__IBMC__) || defined(__SUNPRO_C) || defined(__SUNPRO_CC) +# pragma pack(1) +#else +# pragma pack(push, 1) +#endif + +typedef struct CRYPTO_ALIGN(64) crypto_generichash_blake2b_state { + unsigned char opaque[384]; +} crypto_generichash_blake2b_state; + +#if defined(__IBMC__) || defined(__SUNPRO_C) || defined(__SUNPRO_CC) +# pragma pack() +#else +# pragma pack(pop) +#endif + +#define crypto_generichash_blake2b_BYTES_MIN 16U +SODIUM_EXPORT +size_t crypto_generichash_blake2b_bytes_min(void); + +#define crypto_generichash_blake2b_BYTES_MAX 64U +SODIUM_EXPORT +size_t crypto_generichash_blake2b_bytes_max(void); + +#define crypto_generichash_blake2b_BYTES 32U +SODIUM_EXPORT +size_t crypto_generichash_blake2b_bytes(void); + +#define crypto_generichash_blake2b_KEYBYTES_MIN 16U +SODIUM_EXPORT +size_t crypto_generichash_blake2b_keybytes_min(void); + +#define crypto_generichash_blake2b_KEYBYTES_MAX 64U +SODIUM_EXPORT +size_t crypto_generichash_blake2b_keybytes_max(void); + +#define crypto_generichash_blake2b_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_generichash_blake2b_keybytes(void); + +#define crypto_generichash_blake2b_SALTBYTES 16U +SODIUM_EXPORT +size_t crypto_generichash_blake2b_saltbytes(void); + +#define crypto_generichash_blake2b_PERSONALBYTES 16U +SODIUM_EXPORT +size_t crypto_generichash_blake2b_personalbytes(void); + +SODIUM_EXPORT +size_t crypto_generichash_blake2b_statebytes(void); + +SODIUM_EXPORT +int crypto_generichash_blake2b(unsigned char *out, size_t outlen, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *key, size_t keylen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_generichash_blake2b_salt_personal(unsigned char *out, size_t outlen, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *key, + size_t keylen, + const unsigned char *salt, + const unsigned char *personal) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_generichash_blake2b_init(crypto_generichash_blake2b_state *state, + const unsigned char *key, + const size_t keylen, const size_t outlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_generichash_blake2b_init_salt_personal(crypto_generichash_blake2b_state *state, + const unsigned char *key, + const size_t keylen, const size_t outlen, + const unsigned char *salt, + const unsigned char *personal) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_generichash_blake2b_update(crypto_generichash_blake2b_state *state, + const unsigned char *in, + unsigned long long inlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_generichash_blake2b_final(crypto_generichash_blake2b_state *state, + unsigned char *out, + const size_t outlen) __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_generichash_blake2b_keygen(unsigned char k[crypto_generichash_blake2b_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_hash.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_hash.h new file mode 100644 index 000000000..8752f9caf --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_hash.h @@ -0,0 +1,40 @@ +#ifndef crypto_hash_H +#define crypto_hash_H + +/* + * WARNING: Unless you absolutely need to use SHA512 for interoperatibility, + * purposes, you might want to consider crypto_generichash() instead. + * Unlike SHA512, crypto_generichash() is not vulnerable to length + * extension attacks. + */ + +#include + +#include "crypto_hash_sha512.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_hash_BYTES crypto_hash_sha512_BYTES +SODIUM_EXPORT +size_t crypto_hash_bytes(void); + +SODIUM_EXPORT +int crypto_hash(unsigned char *out, const unsigned char *in, + unsigned long long inlen) __attribute__ ((nonnull(1))); + +#define crypto_hash_PRIMITIVE "sha512" +SODIUM_EXPORT +const char *crypto_hash_primitive(void) + __attribute__ ((warn_unused_result)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_hash_sha256.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_hash_sha256.h new file mode 100644 index 000000000..b18217e18 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_hash_sha256.h @@ -0,0 +1,60 @@ +#ifndef crypto_hash_sha256_H +#define crypto_hash_sha256_H + +/* + * WARNING: Unless you absolutely need to use SHA256 for interoperatibility, + * purposes, you might want to consider crypto_generichash() instead. + * Unlike SHA256, crypto_generichash() is not vulnerable to length + * extension attacks. + */ + +#include +#include +#include + +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +typedef struct crypto_hash_sha256_state { + uint32_t state[8]; + uint64_t count; + uint8_t buf[64]; +} crypto_hash_sha256_state; + +SODIUM_EXPORT +size_t crypto_hash_sha256_statebytes(void); + +#define crypto_hash_sha256_BYTES 32U +SODIUM_EXPORT +size_t crypto_hash_sha256_bytes(void); + +SODIUM_EXPORT +int crypto_hash_sha256(unsigned char *out, const unsigned char *in, + unsigned long long inlen) __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_hash_sha256_init(crypto_hash_sha256_state *state) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_hash_sha256_update(crypto_hash_sha256_state *state, + const unsigned char *in, + unsigned long long inlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_hash_sha256_final(crypto_hash_sha256_state *state, + unsigned char *out) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_hash_sha512.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_hash_sha512.h new file mode 100644 index 000000000..8efa7193a --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_hash_sha512.h @@ -0,0 +1,60 @@ +#ifndef crypto_hash_sha512_H +#define crypto_hash_sha512_H + +/* + * WARNING: Unless you absolutely need to use SHA512 for interoperatibility, + * purposes, you might want to consider crypto_generichash() instead. + * Unlike SHA512, crypto_generichash() is not vulnerable to length + * extension attacks. + */ + +#include +#include +#include + +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +typedef struct crypto_hash_sha512_state { + uint64_t state[8]; + uint64_t count[2]; + uint8_t buf[128]; +} crypto_hash_sha512_state; + +SODIUM_EXPORT +size_t crypto_hash_sha512_statebytes(void); + +#define crypto_hash_sha512_BYTES 64U +SODIUM_EXPORT +size_t crypto_hash_sha512_bytes(void); + +SODIUM_EXPORT +int crypto_hash_sha512(unsigned char *out, const unsigned char *in, + unsigned long long inlen) __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_hash_sha512_init(crypto_hash_sha512_state *state) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_hash_sha512_update(crypto_hash_sha512_state *state, + const unsigned char *in, + unsigned long long inlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_hash_sha512_final(crypto_hash_sha512_state *state, + unsigned char *out) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_kdf.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_kdf.h new file mode 100644 index 000000000..ac2fc6183 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_kdf.h @@ -0,0 +1,53 @@ +#ifndef crypto_kdf_H +#define crypto_kdf_H + +#include +#include + +#include "crypto_kdf_blake2b.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_kdf_BYTES_MIN crypto_kdf_blake2b_BYTES_MIN +SODIUM_EXPORT +size_t crypto_kdf_bytes_min(void); + +#define crypto_kdf_BYTES_MAX crypto_kdf_blake2b_BYTES_MAX +SODIUM_EXPORT +size_t crypto_kdf_bytes_max(void); + +#define crypto_kdf_CONTEXTBYTES crypto_kdf_blake2b_CONTEXTBYTES +SODIUM_EXPORT +size_t crypto_kdf_contextbytes(void); + +#define crypto_kdf_KEYBYTES crypto_kdf_blake2b_KEYBYTES +SODIUM_EXPORT +size_t crypto_kdf_keybytes(void); + +#define crypto_kdf_PRIMITIVE "blake2b" +SODIUM_EXPORT +const char *crypto_kdf_primitive(void) + __attribute__ ((warn_unused_result)); + +SODIUM_EXPORT +int crypto_kdf_derive_from_key(unsigned char *subkey, size_t subkey_len, + uint64_t subkey_id, + const char ctx[crypto_kdf_CONTEXTBYTES], + const unsigned char key[crypto_kdf_KEYBYTES]) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_kdf_keygen(unsigned char k[crypto_kdf_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_kdf_blake2b.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_kdf_blake2b.h new file mode 100644 index 000000000..3ae47dd32 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_kdf_blake2b.h @@ -0,0 +1,44 @@ +#ifndef crypto_kdf_blake2b_H +#define crypto_kdf_blake2b_H + +#include +#include + +#include "crypto_kdf_blake2b.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_kdf_blake2b_BYTES_MIN 16 +SODIUM_EXPORT +size_t crypto_kdf_blake2b_bytes_min(void); + +#define crypto_kdf_blake2b_BYTES_MAX 64 +SODIUM_EXPORT +size_t crypto_kdf_blake2b_bytes_max(void); + +#define crypto_kdf_blake2b_CONTEXTBYTES 8 +SODIUM_EXPORT +size_t crypto_kdf_blake2b_contextbytes(void); + +#define crypto_kdf_blake2b_KEYBYTES 32 +SODIUM_EXPORT +size_t crypto_kdf_blake2b_keybytes(void); + +SODIUM_EXPORT +int crypto_kdf_blake2b_derive_from_key(unsigned char *subkey, size_t subkey_len, + uint64_t subkey_id, + const char ctx[crypto_kdf_blake2b_CONTEXTBYTES], + const unsigned char key[crypto_kdf_blake2b_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_kx.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_kx.h new file mode 100644 index 000000000..347132c32 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_kx.h @@ -0,0 +1,66 @@ +#ifndef crypto_kx_H +#define crypto_kx_H + +#include + +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_kx_PUBLICKEYBYTES 32 +SODIUM_EXPORT +size_t crypto_kx_publickeybytes(void); + +#define crypto_kx_SECRETKEYBYTES 32 +SODIUM_EXPORT +size_t crypto_kx_secretkeybytes(void); + +#define crypto_kx_SEEDBYTES 32 +SODIUM_EXPORT +size_t crypto_kx_seedbytes(void); + +#define crypto_kx_SESSIONKEYBYTES 32 +SODIUM_EXPORT +size_t crypto_kx_sessionkeybytes(void); + +#define crypto_kx_PRIMITIVE "x25519blake2b" +SODIUM_EXPORT +const char *crypto_kx_primitive(void); + +SODIUM_EXPORT +int crypto_kx_seed_keypair(unsigned char pk[crypto_kx_PUBLICKEYBYTES], + unsigned char sk[crypto_kx_SECRETKEYBYTES], + const unsigned char seed[crypto_kx_SEEDBYTES]) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_kx_keypair(unsigned char pk[crypto_kx_PUBLICKEYBYTES], + unsigned char sk[crypto_kx_SECRETKEYBYTES]) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_kx_client_session_keys(unsigned char rx[crypto_kx_SESSIONKEYBYTES], + unsigned char tx[crypto_kx_SESSIONKEYBYTES], + const unsigned char client_pk[crypto_kx_PUBLICKEYBYTES], + const unsigned char client_sk[crypto_kx_SECRETKEYBYTES], + const unsigned char server_pk[crypto_kx_PUBLICKEYBYTES]) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(3, 4, 5))); + +SODIUM_EXPORT +int crypto_kx_server_session_keys(unsigned char rx[crypto_kx_SESSIONKEYBYTES], + unsigned char tx[crypto_kx_SESSIONKEYBYTES], + const unsigned char server_pk[crypto_kx_PUBLICKEYBYTES], + const unsigned char server_sk[crypto_kx_SECRETKEYBYTES], + const unsigned char client_pk[crypto_kx_PUBLICKEYBYTES]) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(3, 4, 5))); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_onetimeauth.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_onetimeauth.h new file mode 100644 index 000000000..7cd7b0706 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_onetimeauth.h @@ -0,0 +1,65 @@ +#ifndef crypto_onetimeauth_H +#define crypto_onetimeauth_H + +#include + +#include "crypto_onetimeauth_poly1305.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +typedef crypto_onetimeauth_poly1305_state crypto_onetimeauth_state; + +SODIUM_EXPORT +size_t crypto_onetimeauth_statebytes(void); + +#define crypto_onetimeauth_BYTES crypto_onetimeauth_poly1305_BYTES +SODIUM_EXPORT +size_t crypto_onetimeauth_bytes(void); + +#define crypto_onetimeauth_KEYBYTES crypto_onetimeauth_poly1305_KEYBYTES +SODIUM_EXPORT +size_t crypto_onetimeauth_keybytes(void); + +#define crypto_onetimeauth_PRIMITIVE "poly1305" +SODIUM_EXPORT +const char *crypto_onetimeauth_primitive(void); + +SODIUM_EXPORT +int crypto_onetimeauth(unsigned char *out, const unsigned char *in, + unsigned long long inlen, const unsigned char *k) + __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_onetimeauth_verify(const unsigned char *h, const unsigned char *in, + unsigned long long inlen, const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_onetimeauth_init(crypto_onetimeauth_state *state, + const unsigned char *key) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_onetimeauth_update(crypto_onetimeauth_state *state, + const unsigned char *in, + unsigned long long inlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_onetimeauth_final(crypto_onetimeauth_state *state, + unsigned char *out) __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_onetimeauth_keygen(unsigned char k[crypto_onetimeauth_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_onetimeauth_poly1305.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_onetimeauth_poly1305.h new file mode 100644 index 000000000..f3e34d86d --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_onetimeauth_poly1305.h @@ -0,0 +1,72 @@ +#ifndef crypto_onetimeauth_poly1305_H +#define crypto_onetimeauth_poly1305_H + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#include +#include +#include + +#include + +#include "export.h" + +typedef struct CRYPTO_ALIGN(16) crypto_onetimeauth_poly1305_state { + unsigned char opaque[256]; +} crypto_onetimeauth_poly1305_state; + +SODIUM_EXPORT +size_t crypto_onetimeauth_poly1305_statebytes(void); + +#define crypto_onetimeauth_poly1305_BYTES 16U +SODIUM_EXPORT +size_t crypto_onetimeauth_poly1305_bytes(void); + +#define crypto_onetimeauth_poly1305_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_onetimeauth_poly1305_keybytes(void); + +SODIUM_EXPORT +int crypto_onetimeauth_poly1305(unsigned char *out, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *k) + __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_onetimeauth_poly1305_verify(const unsigned char *h, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_onetimeauth_poly1305_init(crypto_onetimeauth_poly1305_state *state, + const unsigned char *key) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_onetimeauth_poly1305_update(crypto_onetimeauth_poly1305_state *state, + const unsigned char *in, + unsigned long long inlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_onetimeauth_poly1305_final(crypto_onetimeauth_poly1305_state *state, + unsigned char *out) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_onetimeauth_poly1305_keygen(unsigned char k[crypto_onetimeauth_poly1305_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_pwhash.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_pwhash.h new file mode 100644 index 000000000..585a993ef --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_pwhash.h @@ -0,0 +1,147 @@ +#ifndef crypto_pwhash_H +#define crypto_pwhash_H + +#include + +#include "crypto_pwhash_argon2i.h" +#include "crypto_pwhash_argon2id.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_pwhash_ALG_ARGON2I13 crypto_pwhash_argon2i_ALG_ARGON2I13 +SODIUM_EXPORT +int crypto_pwhash_alg_argon2i13(void); + +#define crypto_pwhash_ALG_ARGON2ID13 crypto_pwhash_argon2id_ALG_ARGON2ID13 +SODIUM_EXPORT +int crypto_pwhash_alg_argon2id13(void); + +#define crypto_pwhash_ALG_DEFAULT crypto_pwhash_ALG_ARGON2ID13 +SODIUM_EXPORT +int crypto_pwhash_alg_default(void); + +#define crypto_pwhash_BYTES_MIN crypto_pwhash_argon2id_BYTES_MIN +SODIUM_EXPORT +size_t crypto_pwhash_bytes_min(void); + +#define crypto_pwhash_BYTES_MAX crypto_pwhash_argon2id_BYTES_MAX +SODIUM_EXPORT +size_t crypto_pwhash_bytes_max(void); + +#define crypto_pwhash_PASSWD_MIN crypto_pwhash_argon2id_PASSWD_MIN +SODIUM_EXPORT +size_t crypto_pwhash_passwd_min(void); + +#define crypto_pwhash_PASSWD_MAX crypto_pwhash_argon2id_PASSWD_MAX +SODIUM_EXPORT +size_t crypto_pwhash_passwd_max(void); + +#define crypto_pwhash_SALTBYTES crypto_pwhash_argon2id_SALTBYTES +SODIUM_EXPORT +size_t crypto_pwhash_saltbytes(void); + +#define crypto_pwhash_STRBYTES crypto_pwhash_argon2id_STRBYTES +SODIUM_EXPORT +size_t crypto_pwhash_strbytes(void); + +#define crypto_pwhash_STRPREFIX crypto_pwhash_argon2id_STRPREFIX +SODIUM_EXPORT +const char *crypto_pwhash_strprefix(void); + +#define crypto_pwhash_OPSLIMIT_MIN crypto_pwhash_argon2id_OPSLIMIT_MIN +SODIUM_EXPORT +size_t crypto_pwhash_opslimit_min(void); + +#define crypto_pwhash_OPSLIMIT_MAX crypto_pwhash_argon2id_OPSLIMIT_MAX +SODIUM_EXPORT +size_t crypto_pwhash_opslimit_max(void); + +#define crypto_pwhash_MEMLIMIT_MIN crypto_pwhash_argon2id_MEMLIMIT_MIN +SODIUM_EXPORT +size_t crypto_pwhash_memlimit_min(void); + +#define crypto_pwhash_MEMLIMIT_MAX crypto_pwhash_argon2id_MEMLIMIT_MAX +SODIUM_EXPORT +size_t crypto_pwhash_memlimit_max(void); + +#define crypto_pwhash_OPSLIMIT_INTERACTIVE crypto_pwhash_argon2id_OPSLIMIT_INTERACTIVE +SODIUM_EXPORT +size_t crypto_pwhash_opslimit_interactive(void); + +#define crypto_pwhash_MEMLIMIT_INTERACTIVE crypto_pwhash_argon2id_MEMLIMIT_INTERACTIVE +SODIUM_EXPORT +size_t crypto_pwhash_memlimit_interactive(void); + +#define crypto_pwhash_OPSLIMIT_MODERATE crypto_pwhash_argon2id_OPSLIMIT_MODERATE +SODIUM_EXPORT +size_t crypto_pwhash_opslimit_moderate(void); + +#define crypto_pwhash_MEMLIMIT_MODERATE crypto_pwhash_argon2id_MEMLIMIT_MODERATE +SODIUM_EXPORT +size_t crypto_pwhash_memlimit_moderate(void); + +#define crypto_pwhash_OPSLIMIT_SENSITIVE crypto_pwhash_argon2id_OPSLIMIT_SENSITIVE +SODIUM_EXPORT +size_t crypto_pwhash_opslimit_sensitive(void); + +#define crypto_pwhash_MEMLIMIT_SENSITIVE crypto_pwhash_argon2id_MEMLIMIT_SENSITIVE +SODIUM_EXPORT +size_t crypto_pwhash_memlimit_sensitive(void); + +/* + * With this function, do not forget to store all parameters, including the + * algorithm identifier in order to produce deterministic output. + * The crypto_pwhash_* definitions, including crypto_pwhash_ALG_DEFAULT, + * may change. + */ +SODIUM_EXPORT +int crypto_pwhash(unsigned char * const out, unsigned long long outlen, + const char * const passwd, unsigned long long passwdlen, + const unsigned char * const salt, + unsigned long long opslimit, size_t memlimit, int alg) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +/* + * The output string already includes all the required parameters, including + * the algorithm identifier. The string is all that has to be stored in + * order to verify a password. + */ +SODIUM_EXPORT +int crypto_pwhash_str(char out[crypto_pwhash_STRBYTES], + const char * const passwd, unsigned long long passwdlen, + unsigned long long opslimit, size_t memlimit) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_str_alg(char out[crypto_pwhash_STRBYTES], + const char * const passwd, unsigned long long passwdlen, + unsigned long long opslimit, size_t memlimit, int alg) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_str_verify(const char str[crypto_pwhash_STRBYTES], + const char * const passwd, + unsigned long long passwdlen) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_str_needs_rehash(const char str[crypto_pwhash_STRBYTES], + unsigned long long opslimit, size_t memlimit) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +#define crypto_pwhash_PRIMITIVE "argon2i" +SODIUM_EXPORT +const char *crypto_pwhash_primitive(void) + __attribute__ ((warn_unused_result)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_pwhash_argon2i.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_pwhash_argon2i.h new file mode 100644 index 000000000..88ff6221d --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_pwhash_argon2i.h @@ -0,0 +1,122 @@ +#ifndef crypto_pwhash_argon2i_H +#define crypto_pwhash_argon2i_H + +#include +#include +#include + +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_pwhash_argon2i_ALG_ARGON2I13 1 +SODIUM_EXPORT +int crypto_pwhash_argon2i_alg_argon2i13(void); + +#define crypto_pwhash_argon2i_BYTES_MIN 16U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_bytes_min(void); + +#define crypto_pwhash_argon2i_BYTES_MAX SODIUM_MIN(SODIUM_SIZE_MAX, 4294967295U) +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_bytes_max(void); + +#define crypto_pwhash_argon2i_PASSWD_MIN 0U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_passwd_min(void); + +#define crypto_pwhash_argon2i_PASSWD_MAX 4294967295U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_passwd_max(void); + +#define crypto_pwhash_argon2i_SALTBYTES 16U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_saltbytes(void); + +#define crypto_pwhash_argon2i_STRBYTES 128U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_strbytes(void); + +#define crypto_pwhash_argon2i_STRPREFIX "$argon2i$" +SODIUM_EXPORT +const char *crypto_pwhash_argon2i_strprefix(void); + +#define crypto_pwhash_argon2i_OPSLIMIT_MIN 3U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_opslimit_min(void); + +#define crypto_pwhash_argon2i_OPSLIMIT_MAX 4294967295U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_opslimit_max(void); + +#define crypto_pwhash_argon2i_MEMLIMIT_MIN 8192U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_memlimit_min(void); + +#define crypto_pwhash_argon2i_MEMLIMIT_MAX \ + ((SIZE_MAX >= 4398046510080U) ? 4398046510080U : (SIZE_MAX >= 2147483648U) ? 2147483648U : 32768U) +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_memlimit_max(void); + +#define crypto_pwhash_argon2i_OPSLIMIT_INTERACTIVE 4U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_opslimit_interactive(void); + +#define crypto_pwhash_argon2i_MEMLIMIT_INTERACTIVE 33554432U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_memlimit_interactive(void); + +#define crypto_pwhash_argon2i_OPSLIMIT_MODERATE 6U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_opslimit_moderate(void); + +#define crypto_pwhash_argon2i_MEMLIMIT_MODERATE 134217728U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_memlimit_moderate(void); + +#define crypto_pwhash_argon2i_OPSLIMIT_SENSITIVE 8U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_opslimit_sensitive(void); + +#define crypto_pwhash_argon2i_MEMLIMIT_SENSITIVE 536870912U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_memlimit_sensitive(void); + +SODIUM_EXPORT +int crypto_pwhash_argon2i(unsigned char * const out, + unsigned long long outlen, + const char * const passwd, + unsigned long long passwdlen, + const unsigned char * const salt, + unsigned long long opslimit, size_t memlimit, + int alg) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_argon2i_str(char out[crypto_pwhash_argon2i_STRBYTES], + const char * const passwd, + unsigned long long passwdlen, + unsigned long long opslimit, size_t memlimit) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_argon2i_str_verify(const char str[crypto_pwhash_argon2i_STRBYTES], + const char * const passwd, + unsigned long long passwdlen) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_argon2i_str_needs_rehash(const char str[crypto_pwhash_argon2i_STRBYTES], + unsigned long long opslimit, size_t memlimit) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_pwhash_argon2id.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_pwhash_argon2id.h new file mode 100644 index 000000000..7183abd18 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_pwhash_argon2id.h @@ -0,0 +1,122 @@ +#ifndef crypto_pwhash_argon2id_H +#define crypto_pwhash_argon2id_H + +#include +#include +#include + +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_pwhash_argon2id_ALG_ARGON2ID13 2 +SODIUM_EXPORT +int crypto_pwhash_argon2id_alg_argon2id13(void); + +#define crypto_pwhash_argon2id_BYTES_MIN 16U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_bytes_min(void); + +#define crypto_pwhash_argon2id_BYTES_MAX SODIUM_MIN(SODIUM_SIZE_MAX, 4294967295U) +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_bytes_max(void); + +#define crypto_pwhash_argon2id_PASSWD_MIN 0U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_passwd_min(void); + +#define crypto_pwhash_argon2id_PASSWD_MAX 4294967295U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_passwd_max(void); + +#define crypto_pwhash_argon2id_SALTBYTES 16U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_saltbytes(void); + +#define crypto_pwhash_argon2id_STRBYTES 128U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_strbytes(void); + +#define crypto_pwhash_argon2id_STRPREFIX "$argon2id$" +SODIUM_EXPORT +const char *crypto_pwhash_argon2id_strprefix(void); + +#define crypto_pwhash_argon2id_OPSLIMIT_MIN 1U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_opslimit_min(void); + +#define crypto_pwhash_argon2id_OPSLIMIT_MAX 4294967295U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_opslimit_max(void); + +#define crypto_pwhash_argon2id_MEMLIMIT_MIN 8192U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_memlimit_min(void); + +#define crypto_pwhash_argon2id_MEMLIMIT_MAX \ + ((SIZE_MAX >= 4398046510080U) ? 4398046510080U : (SIZE_MAX >= 2147483648U) ? 2147483648U : 32768U) +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_memlimit_max(void); + +#define crypto_pwhash_argon2id_OPSLIMIT_INTERACTIVE 2U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_opslimit_interactive(void); + +#define crypto_pwhash_argon2id_MEMLIMIT_INTERACTIVE 67108864U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_memlimit_interactive(void); + +#define crypto_pwhash_argon2id_OPSLIMIT_MODERATE 3U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_opslimit_moderate(void); + +#define crypto_pwhash_argon2id_MEMLIMIT_MODERATE 268435456U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_memlimit_moderate(void); + +#define crypto_pwhash_argon2id_OPSLIMIT_SENSITIVE 4U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_opslimit_sensitive(void); + +#define crypto_pwhash_argon2id_MEMLIMIT_SENSITIVE 1073741824U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_memlimit_sensitive(void); + +SODIUM_EXPORT +int crypto_pwhash_argon2id(unsigned char * const out, + unsigned long long outlen, + const char * const passwd, + unsigned long long passwdlen, + const unsigned char * const salt, + unsigned long long opslimit, size_t memlimit, + int alg) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_argon2id_str(char out[crypto_pwhash_argon2id_STRBYTES], + const char * const passwd, + unsigned long long passwdlen, + unsigned long long opslimit, size_t memlimit) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_argon2id_str_verify(const char str[crypto_pwhash_argon2id_STRBYTES], + const char * const passwd, + unsigned long long passwdlen) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_argon2id_str_needs_rehash(const char str[crypto_pwhash_argon2id_STRBYTES], + unsigned long long opslimit, size_t memlimit) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_pwhash_scryptsalsa208sha256.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_pwhash_scryptsalsa208sha256.h new file mode 100644 index 000000000..5c0bf7d39 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_pwhash_scryptsalsa208sha256.h @@ -0,0 +1,120 @@ +#ifndef crypto_pwhash_scryptsalsa208sha256_H +#define crypto_pwhash_scryptsalsa208sha256_H + +#include +#include +#include + +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_pwhash_scryptsalsa208sha256_BYTES_MIN 16U +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_bytes_min(void); + +#define crypto_pwhash_scryptsalsa208sha256_BYTES_MAX \ + SODIUM_MIN(SODIUM_SIZE_MAX, 0x1fffffffe0ULL) +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_bytes_max(void); + +#define crypto_pwhash_scryptsalsa208sha256_PASSWD_MIN 0U +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_passwd_min(void); + +#define crypto_pwhash_scryptsalsa208sha256_PASSWD_MAX SODIUM_SIZE_MAX +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_passwd_max(void); + +#define crypto_pwhash_scryptsalsa208sha256_SALTBYTES 32U +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_saltbytes(void); + +#define crypto_pwhash_scryptsalsa208sha256_STRBYTES 102U +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_strbytes(void); + +#define crypto_pwhash_scryptsalsa208sha256_STRPREFIX "$7$" +SODIUM_EXPORT +const char *crypto_pwhash_scryptsalsa208sha256_strprefix(void); + +#define crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_MIN 32768U +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_opslimit_min(void); + +#define crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_MAX 4294967295U +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_opslimit_max(void); + +#define crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_MIN 16777216U +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_memlimit_min(void); + +#define crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_MAX \ + SODIUM_MIN(SIZE_MAX, 68719476736ULL) +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_memlimit_max(void); + +#define crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_INTERACTIVE 524288U +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_opslimit_interactive(void); + +#define crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_INTERACTIVE 16777216U +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_memlimit_interactive(void); + +#define crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_SENSITIVE 33554432U +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_opslimit_sensitive(void); + +#define crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_SENSITIVE 1073741824U +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_memlimit_sensitive(void); + +SODIUM_EXPORT +int crypto_pwhash_scryptsalsa208sha256(unsigned char * const out, + unsigned long long outlen, + const char * const passwd, + unsigned long long passwdlen, + const unsigned char * const salt, + unsigned long long opslimit, + size_t memlimit) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_scryptsalsa208sha256_str(char out[crypto_pwhash_scryptsalsa208sha256_STRBYTES], + const char * const passwd, + unsigned long long passwdlen, + unsigned long long opslimit, + size_t memlimit) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_scryptsalsa208sha256_str_verify(const char str[crypto_pwhash_scryptsalsa208sha256_STRBYTES], + const char * const passwd, + unsigned long long passwdlen) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_scryptsalsa208sha256_ll(const uint8_t * passwd, size_t passwdlen, + const uint8_t * salt, size_t saltlen, + uint64_t N, uint32_t r, uint32_t p, + uint8_t * buf, size_t buflen) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_scryptsalsa208sha256_str_needs_rehash(const char str[crypto_pwhash_scryptsalsa208sha256_STRBYTES], + unsigned long long opslimit, + size_t memlimit) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_scalarmult.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_scalarmult.h new file mode 100644 index 000000000..1c6858537 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_scalarmult.h @@ -0,0 +1,46 @@ +#ifndef crypto_scalarmult_H +#define crypto_scalarmult_H + +#include + +#include "crypto_scalarmult_curve25519.h" +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_scalarmult_BYTES crypto_scalarmult_curve25519_BYTES +SODIUM_EXPORT +size_t crypto_scalarmult_bytes(void); + +#define crypto_scalarmult_SCALARBYTES crypto_scalarmult_curve25519_SCALARBYTES +SODIUM_EXPORT +size_t crypto_scalarmult_scalarbytes(void); + +#define crypto_scalarmult_PRIMITIVE "curve25519" +SODIUM_EXPORT +const char *crypto_scalarmult_primitive(void); + +SODIUM_EXPORT +int crypto_scalarmult_base(unsigned char *q, const unsigned char *n) + __attribute__ ((nonnull)); + +/* + * NOTE: Do not use the result of this function directly for key exchange. + * + * Hash the result with the public keys in order to compute a shared + * secret key: H(q || client_pk || server_pk) + * + * Or unless this is not an option, use the crypto_kx() API instead. + */ +SODIUM_EXPORT +int crypto_scalarmult(unsigned char *q, const unsigned char *n, + const unsigned char *p) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_scalarmult_curve25519.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_scalarmult_curve25519.h new file mode 100644 index 000000000..60e9d0c5a --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_scalarmult_curve25519.h @@ -0,0 +1,42 @@ +#ifndef crypto_scalarmult_curve25519_H +#define crypto_scalarmult_curve25519_H + +#include + +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_scalarmult_curve25519_BYTES 32U +SODIUM_EXPORT +size_t crypto_scalarmult_curve25519_bytes(void); + +#define crypto_scalarmult_curve25519_SCALARBYTES 32U +SODIUM_EXPORT +size_t crypto_scalarmult_curve25519_scalarbytes(void); + +/* + * NOTE: Do not use the result of this function directly for key exchange. + * + * Hash the result with the public keys in order to compute a shared + * secret key: H(q || client_pk || server_pk) + * + * Or unless this is not an option, use the crypto_kx() API instead. + */ +SODIUM_EXPORT +int crypto_scalarmult_curve25519(unsigned char *q, const unsigned char *n, + const unsigned char *p) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_scalarmult_curve25519_base(unsigned char *q, + const unsigned char *n) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_scalarmult_ed25519.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_scalarmult_ed25519.h new file mode 100644 index 000000000..2dfa4d707 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_scalarmult_ed25519.h @@ -0,0 +1,51 @@ + +#ifndef crypto_scalarmult_ed25519_H +#define crypto_scalarmult_ed25519_H + +#include + +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_scalarmult_ed25519_BYTES 32U +SODIUM_EXPORT +size_t crypto_scalarmult_ed25519_bytes(void); + +#define crypto_scalarmult_ed25519_SCALARBYTES 32U +SODIUM_EXPORT +size_t crypto_scalarmult_ed25519_scalarbytes(void); + +/* + * NOTE: Do not use the result of this function directly for key exchange. + * + * Hash the result with the public keys in order to compute a shared + * secret key: H(q || client_pk || server_pk) + * + * Or unless this is not an option, use the crypto_kx() API instead. + */ +SODIUM_EXPORT +int crypto_scalarmult_ed25519(unsigned char *q, const unsigned char *n, + const unsigned char *p) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_scalarmult_ed25519_noclamp(unsigned char *q, const unsigned char *n, + const unsigned char *p) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_scalarmult_ed25519_base(unsigned char *q, const unsigned char *n) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_scalarmult_ed25519_base_noclamp(unsigned char *q, const unsigned char *n) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_scalarmult_ristretto255.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_scalarmult_ristretto255.h new file mode 100644 index 000000000..40a45ccef --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_scalarmult_ristretto255.h @@ -0,0 +1,43 @@ + +#ifndef crypto_scalarmult_ristretto255_H +#define crypto_scalarmult_ristretto255_H + +#include + +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_scalarmult_ristretto255_BYTES 32U +SODIUM_EXPORT +size_t crypto_scalarmult_ristretto255_bytes(void); + +#define crypto_scalarmult_ristretto255_SCALARBYTES 32U +SODIUM_EXPORT +size_t crypto_scalarmult_ristretto255_scalarbytes(void); + +/* + * NOTE: Do not use the result of this function directly for key exchange. + * + * Hash the result with the public keys in order to compute a shared + * secret key: H(q || client_pk || server_pk) + * + * Or unless this is not an option, use the crypto_kx() API instead. + */ +SODIUM_EXPORT +int crypto_scalarmult_ristretto255(unsigned char *q, const unsigned char *n, + const unsigned char *p) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_scalarmult_ristretto255_base(unsigned char *q, + const unsigned char *n) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_secretbox.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_secretbox.h new file mode 100644 index 000000000..1d3709db1 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_secretbox.h @@ -0,0 +1,93 @@ +#ifndef crypto_secretbox_H +#define crypto_secretbox_H + +#include + +#include "crypto_secretbox_xsalsa20poly1305.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_secretbox_KEYBYTES crypto_secretbox_xsalsa20poly1305_KEYBYTES +SODIUM_EXPORT +size_t crypto_secretbox_keybytes(void); + +#define crypto_secretbox_NONCEBYTES crypto_secretbox_xsalsa20poly1305_NONCEBYTES +SODIUM_EXPORT +size_t crypto_secretbox_noncebytes(void); + +#define crypto_secretbox_MACBYTES crypto_secretbox_xsalsa20poly1305_MACBYTES +SODIUM_EXPORT +size_t crypto_secretbox_macbytes(void); + +#define crypto_secretbox_PRIMITIVE "xsalsa20poly1305" +SODIUM_EXPORT +const char *crypto_secretbox_primitive(void); + +#define crypto_secretbox_MESSAGEBYTES_MAX crypto_secretbox_xsalsa20poly1305_MESSAGEBYTES_MAX +SODIUM_EXPORT +size_t crypto_secretbox_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_secretbox_easy(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) __attribute__ ((nonnull(1, 4, 5))); + +SODIUM_EXPORT +int crypto_secretbox_open_easy(unsigned char *m, const unsigned char *c, + unsigned long long clen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5))); + +SODIUM_EXPORT +int crypto_secretbox_detached(unsigned char *c, unsigned char *mac, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull(1, 2, 5, 6))); + +SODIUM_EXPORT +int crypto_secretbox_open_detached(unsigned char *m, + const unsigned char *c, + const unsigned char *mac, + unsigned long long clen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 3, 5, 6))); + +SODIUM_EXPORT +void crypto_secretbox_keygen(unsigned char k[crypto_secretbox_KEYBYTES]) + __attribute__ ((nonnull)); + +/* -- NaCl compatibility interface ; Requires padding -- */ + +#define crypto_secretbox_ZEROBYTES crypto_secretbox_xsalsa20poly1305_ZEROBYTES +SODIUM_EXPORT +size_t crypto_secretbox_zerobytes(void); + +#define crypto_secretbox_BOXZEROBYTES crypto_secretbox_xsalsa20poly1305_BOXZEROBYTES +SODIUM_EXPORT +size_t crypto_secretbox_boxzerobytes(void); + +SODIUM_EXPORT +int crypto_secretbox(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) __attribute__ ((nonnull(1, 4, 5))); + +SODIUM_EXPORT +int crypto_secretbox_open(unsigned char *m, const unsigned char *c, + unsigned long long clen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5))); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_secretbox_xchacha20poly1305.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_secretbox_xchacha20poly1305.h new file mode 100644 index 000000000..6ec674e31 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_secretbox_xchacha20poly1305.h @@ -0,0 +1,70 @@ +#ifndef crypto_secretbox_xchacha20poly1305_H +#define crypto_secretbox_xchacha20poly1305_H + +#include +#include "crypto_stream_xchacha20.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_secretbox_xchacha20poly1305_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_secretbox_xchacha20poly1305_keybytes(void); + +#define crypto_secretbox_xchacha20poly1305_NONCEBYTES 24U +SODIUM_EXPORT +size_t crypto_secretbox_xchacha20poly1305_noncebytes(void); + +#define crypto_secretbox_xchacha20poly1305_MACBYTES 16U +SODIUM_EXPORT +size_t crypto_secretbox_xchacha20poly1305_macbytes(void); + +#define crypto_secretbox_xchacha20poly1305_MESSAGEBYTES_MAX \ + (crypto_stream_xchacha20_MESSAGEBYTES_MAX - crypto_secretbox_xchacha20poly1305_MACBYTES) +SODIUM_EXPORT +size_t crypto_secretbox_xchacha20poly1305_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_secretbox_xchacha20poly1305_easy(unsigned char *c, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull(1, 4, 5))); + +SODIUM_EXPORT +int crypto_secretbox_xchacha20poly1305_open_easy(unsigned char *m, + const unsigned char *c, + unsigned long long clen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5))); + +SODIUM_EXPORT +int crypto_secretbox_xchacha20poly1305_detached(unsigned char *c, + unsigned char *mac, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull(1, 2, 5, 6))); + +SODIUM_EXPORT +int crypto_secretbox_xchacha20poly1305_open_detached(unsigned char *m, + const unsigned char *c, + const unsigned char *mac, + unsigned long long clen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 3, 5, 6))); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_secretbox_xsalsa20poly1305.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_secretbox_xsalsa20poly1305.h new file mode 100644 index 000000000..be0874cba --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_secretbox_xsalsa20poly1305.h @@ -0,0 +1,69 @@ +#ifndef crypto_secretbox_xsalsa20poly1305_H +#define crypto_secretbox_xsalsa20poly1305_H + +#include +#include "crypto_stream_xsalsa20.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_secretbox_xsalsa20poly1305_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_secretbox_xsalsa20poly1305_keybytes(void); + +#define crypto_secretbox_xsalsa20poly1305_NONCEBYTES 24U +SODIUM_EXPORT +size_t crypto_secretbox_xsalsa20poly1305_noncebytes(void); + +#define crypto_secretbox_xsalsa20poly1305_MACBYTES 16U +SODIUM_EXPORT +size_t crypto_secretbox_xsalsa20poly1305_macbytes(void); + +/* Only for the libsodium API - The NaCl compatibility API would require BOXZEROBYTES extra bytes */ +#define crypto_secretbox_xsalsa20poly1305_MESSAGEBYTES_MAX \ + (crypto_stream_xsalsa20_MESSAGEBYTES_MAX - crypto_secretbox_xsalsa20poly1305_MACBYTES) +SODIUM_EXPORT +size_t crypto_secretbox_xsalsa20poly1305_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_secretbox_xsalsa20poly1305(unsigned char *c, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull(1, 4, 5))); + +SODIUM_EXPORT +int crypto_secretbox_xsalsa20poly1305_open(unsigned char *m, + const unsigned char *c, + unsigned long long clen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5))); + +SODIUM_EXPORT +void crypto_secretbox_xsalsa20poly1305_keygen(unsigned char k[crypto_secretbox_xsalsa20poly1305_KEYBYTES]) + __attribute__ ((nonnull)); + +/* -- NaCl compatibility interface ; Requires padding -- */ + +#define crypto_secretbox_xsalsa20poly1305_BOXZEROBYTES 16U +SODIUM_EXPORT +size_t crypto_secretbox_xsalsa20poly1305_boxzerobytes(void); + +#define crypto_secretbox_xsalsa20poly1305_ZEROBYTES \ + (crypto_secretbox_xsalsa20poly1305_BOXZEROBYTES + \ + crypto_secretbox_xsalsa20poly1305_MACBYTES) +SODIUM_EXPORT +size_t crypto_secretbox_xsalsa20poly1305_zerobytes(void); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_secretstream_xchacha20poly1305.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_secretstream_xchacha20poly1305.h new file mode 100644 index 000000000..b22e4e931 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_secretstream_xchacha20poly1305.h @@ -0,0 +1,108 @@ +#ifndef crypto_secretstream_xchacha20poly1305_H +#define crypto_secretstream_xchacha20poly1305_H + +#include + +#include "crypto_aead_xchacha20poly1305.h" +#include "crypto_stream_chacha20.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_secretstream_xchacha20poly1305_ABYTES \ + (1U + crypto_aead_xchacha20poly1305_ietf_ABYTES) +SODIUM_EXPORT +size_t crypto_secretstream_xchacha20poly1305_abytes(void); + +#define crypto_secretstream_xchacha20poly1305_HEADERBYTES \ + crypto_aead_xchacha20poly1305_ietf_NPUBBYTES +SODIUM_EXPORT +size_t crypto_secretstream_xchacha20poly1305_headerbytes(void); + +#define crypto_secretstream_xchacha20poly1305_KEYBYTES \ + crypto_aead_xchacha20poly1305_ietf_KEYBYTES +SODIUM_EXPORT +size_t crypto_secretstream_xchacha20poly1305_keybytes(void); + +#define crypto_secretstream_xchacha20poly1305_MESSAGEBYTES_MAX \ + SODIUM_MIN(SODIUM_SIZE_MAX - crypto_secretstream_xchacha20poly1305_ABYTES, \ + (64ULL * ((1ULL << 32) - 2ULL))) +SODIUM_EXPORT +size_t crypto_secretstream_xchacha20poly1305_messagebytes_max(void); + +#define crypto_secretstream_xchacha20poly1305_TAG_MESSAGE 0x00 +SODIUM_EXPORT +unsigned char crypto_secretstream_xchacha20poly1305_tag_message(void); + +#define crypto_secretstream_xchacha20poly1305_TAG_PUSH 0x01 +SODIUM_EXPORT +unsigned char crypto_secretstream_xchacha20poly1305_tag_push(void); + +#define crypto_secretstream_xchacha20poly1305_TAG_REKEY 0x02 +SODIUM_EXPORT +unsigned char crypto_secretstream_xchacha20poly1305_tag_rekey(void); + +#define crypto_secretstream_xchacha20poly1305_TAG_FINAL \ + (crypto_secretstream_xchacha20poly1305_TAG_PUSH | \ + crypto_secretstream_xchacha20poly1305_TAG_REKEY) +SODIUM_EXPORT +unsigned char crypto_secretstream_xchacha20poly1305_tag_final(void); + +typedef struct crypto_secretstream_xchacha20poly1305_state { + unsigned char k[crypto_stream_chacha20_ietf_KEYBYTES]; + unsigned char nonce[crypto_stream_chacha20_ietf_NONCEBYTES]; + unsigned char _pad[8]; +} crypto_secretstream_xchacha20poly1305_state; + +SODIUM_EXPORT +size_t crypto_secretstream_xchacha20poly1305_statebytes(void); + +SODIUM_EXPORT +void crypto_secretstream_xchacha20poly1305_keygen + (unsigned char k[crypto_secretstream_xchacha20poly1305_KEYBYTES]) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_secretstream_xchacha20poly1305_init_push + (crypto_secretstream_xchacha20poly1305_state *state, + unsigned char header[crypto_secretstream_xchacha20poly1305_HEADERBYTES], + const unsigned char k[crypto_secretstream_xchacha20poly1305_KEYBYTES]) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_secretstream_xchacha20poly1305_push + (crypto_secretstream_xchacha20poly1305_state *state, + unsigned char *c, unsigned long long *clen_p, + const unsigned char *m, unsigned long long mlen, + const unsigned char *ad, unsigned long long adlen, unsigned char tag) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_secretstream_xchacha20poly1305_init_pull + (crypto_secretstream_xchacha20poly1305_state *state, + const unsigned char header[crypto_secretstream_xchacha20poly1305_HEADERBYTES], + const unsigned char k[crypto_secretstream_xchacha20poly1305_KEYBYTES]) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_secretstream_xchacha20poly1305_pull + (crypto_secretstream_xchacha20poly1305_state *state, + unsigned char *m, unsigned long long *mlen_p, unsigned char *tag_p, + const unsigned char *c, unsigned long long clen, + const unsigned char *ad, unsigned long long adlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +void crypto_secretstream_xchacha20poly1305_rekey + (crypto_secretstream_xchacha20poly1305_state *state); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_shorthash.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_shorthash.h new file mode 100644 index 000000000..fecaa88bd --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_shorthash.h @@ -0,0 +1,41 @@ +#ifndef crypto_shorthash_H +#define crypto_shorthash_H + +#include + +#include "crypto_shorthash_siphash24.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_shorthash_BYTES crypto_shorthash_siphash24_BYTES +SODIUM_EXPORT +size_t crypto_shorthash_bytes(void); + +#define crypto_shorthash_KEYBYTES crypto_shorthash_siphash24_KEYBYTES +SODIUM_EXPORT +size_t crypto_shorthash_keybytes(void); + +#define crypto_shorthash_PRIMITIVE "siphash24" +SODIUM_EXPORT +const char *crypto_shorthash_primitive(void); + +SODIUM_EXPORT +int crypto_shorthash(unsigned char *out, const unsigned char *in, + unsigned long long inlen, const unsigned char *k) + __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +void crypto_shorthash_keygen(unsigned char k[crypto_shorthash_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_shorthash_siphash24.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_shorthash_siphash24.h new file mode 100644 index 000000000..1e6f72a62 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_shorthash_siphash24.h @@ -0,0 +1,50 @@ +#ifndef crypto_shorthash_siphash24_H +#define crypto_shorthash_siphash24_H + +#include +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +/* -- 64-bit output -- */ + +#define crypto_shorthash_siphash24_BYTES 8U +SODIUM_EXPORT +size_t crypto_shorthash_siphash24_bytes(void); + +#define crypto_shorthash_siphash24_KEYBYTES 16U +SODIUM_EXPORT +size_t crypto_shorthash_siphash24_keybytes(void); + +SODIUM_EXPORT +int crypto_shorthash_siphash24(unsigned char *out, const unsigned char *in, + unsigned long long inlen, const unsigned char *k) + __attribute__ ((nonnull(1, 4))); + +#ifndef SODIUM_LIBRARY_MINIMAL +/* -- 128-bit output -- */ + +#define crypto_shorthash_siphashx24_BYTES 16U +SODIUM_EXPORT +size_t crypto_shorthash_siphashx24_bytes(void); + +#define crypto_shorthash_siphashx24_KEYBYTES 16U +SODIUM_EXPORT +size_t crypto_shorthash_siphashx24_keybytes(void); + +SODIUM_EXPORT +int crypto_shorthash_siphashx24(unsigned char *out, const unsigned char *in, + unsigned long long inlen, const unsigned char *k) + __attribute__ ((nonnull(1, 4))); +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_sign.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_sign.h new file mode 100644 index 000000000..f5fafb123 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_sign.h @@ -0,0 +1,107 @@ +#ifndef crypto_sign_H +#define crypto_sign_H + +/* + * THREAD SAFETY: crypto_sign_keypair() is thread-safe, + * provided that sodium_init() was called before. + * + * Other functions, including crypto_sign_seed_keypair() are always thread-safe. + */ + +#include + +#include "crypto_sign_ed25519.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +typedef crypto_sign_ed25519ph_state crypto_sign_state; + +SODIUM_EXPORT +size_t crypto_sign_statebytes(void); + +#define crypto_sign_BYTES crypto_sign_ed25519_BYTES +SODIUM_EXPORT +size_t crypto_sign_bytes(void); + +#define crypto_sign_SEEDBYTES crypto_sign_ed25519_SEEDBYTES +SODIUM_EXPORT +size_t crypto_sign_seedbytes(void); + +#define crypto_sign_PUBLICKEYBYTES crypto_sign_ed25519_PUBLICKEYBYTES +SODIUM_EXPORT +size_t crypto_sign_publickeybytes(void); + +#define crypto_sign_SECRETKEYBYTES crypto_sign_ed25519_SECRETKEYBYTES +SODIUM_EXPORT +size_t crypto_sign_secretkeybytes(void); + +#define crypto_sign_MESSAGEBYTES_MAX crypto_sign_ed25519_MESSAGEBYTES_MAX +SODIUM_EXPORT +size_t crypto_sign_messagebytes_max(void); + +#define crypto_sign_PRIMITIVE "ed25519" +SODIUM_EXPORT +const char *crypto_sign_primitive(void); + +SODIUM_EXPORT +int crypto_sign_seed_keypair(unsigned char *pk, unsigned char *sk, + const unsigned char *seed) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_sign_keypair(unsigned char *pk, unsigned char *sk) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_sign(unsigned char *sm, unsigned long long *smlen_p, + const unsigned char *m, unsigned long long mlen, + const unsigned char *sk) __attribute__ ((nonnull(1, 5))); + +SODIUM_EXPORT +int crypto_sign_open(unsigned char *m, unsigned long long *mlen_p, + const unsigned char *sm, unsigned long long smlen, + const unsigned char *pk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(3, 5))); + +SODIUM_EXPORT +int crypto_sign_detached(unsigned char *sig, unsigned long long *siglen_p, + const unsigned char *m, unsigned long long mlen, + const unsigned char *sk) __attribute__ ((nonnull(1, 5))); + +SODIUM_EXPORT +int crypto_sign_verify_detached(const unsigned char *sig, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *pk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_sign_init(crypto_sign_state *state); + +SODIUM_EXPORT +int crypto_sign_update(crypto_sign_state *state, + const unsigned char *m, unsigned long long mlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_sign_final_create(crypto_sign_state *state, unsigned char *sig, + unsigned long long *siglen_p, + const unsigned char *sk) + __attribute__ ((nonnull(1, 2, 4))); + +SODIUM_EXPORT +int crypto_sign_final_verify(crypto_sign_state *state, const unsigned char *sig, + const unsigned char *pk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_sign_ed25519.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_sign_ed25519.h new file mode 100644 index 000000000..0fdac42d3 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_sign_ed25519.h @@ -0,0 +1,124 @@ +#ifndef crypto_sign_ed25519_H +#define crypto_sign_ed25519_H + +#include +#include "crypto_hash_sha512.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +typedef struct crypto_sign_ed25519ph_state { + crypto_hash_sha512_state hs; +} crypto_sign_ed25519ph_state; + +SODIUM_EXPORT +size_t crypto_sign_ed25519ph_statebytes(void); + +#define crypto_sign_ed25519_BYTES 64U +SODIUM_EXPORT +size_t crypto_sign_ed25519_bytes(void); + +#define crypto_sign_ed25519_SEEDBYTES 32U +SODIUM_EXPORT +size_t crypto_sign_ed25519_seedbytes(void); + +#define crypto_sign_ed25519_PUBLICKEYBYTES 32U +SODIUM_EXPORT +size_t crypto_sign_ed25519_publickeybytes(void); + +#define crypto_sign_ed25519_SECRETKEYBYTES (32U + 32U) +SODIUM_EXPORT +size_t crypto_sign_ed25519_secretkeybytes(void); + +#define crypto_sign_ed25519_MESSAGEBYTES_MAX (SODIUM_SIZE_MAX - crypto_sign_ed25519_BYTES) +SODIUM_EXPORT +size_t crypto_sign_ed25519_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_sign_ed25519(unsigned char *sm, unsigned long long *smlen_p, + const unsigned char *m, unsigned long long mlen, + const unsigned char *sk) + __attribute__ ((nonnull(1, 5))); + +SODIUM_EXPORT +int crypto_sign_ed25519_open(unsigned char *m, unsigned long long *mlen_p, + const unsigned char *sm, unsigned long long smlen, + const unsigned char *pk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(3, 5))); + +SODIUM_EXPORT +int crypto_sign_ed25519_detached(unsigned char *sig, + unsigned long long *siglen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *sk) + __attribute__ ((nonnull(1, 5))); + +SODIUM_EXPORT +int crypto_sign_ed25519_verify_detached(const unsigned char *sig, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *pk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_sign_ed25519_keypair(unsigned char *pk, unsigned char *sk) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_sign_ed25519_seed_keypair(unsigned char *pk, unsigned char *sk, + const unsigned char *seed) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_sign_ed25519_pk_to_curve25519(unsigned char *curve25519_pk, + const unsigned char *ed25519_pk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_sign_ed25519_sk_to_curve25519(unsigned char *curve25519_sk, + const unsigned char *ed25519_sk) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_sign_ed25519_sk_to_seed(unsigned char *seed, + const unsigned char *sk) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_sign_ed25519_sk_to_pk(unsigned char *pk, const unsigned char *sk) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_sign_ed25519ph_init(crypto_sign_ed25519ph_state *state) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_sign_ed25519ph_update(crypto_sign_ed25519ph_state *state, + const unsigned char *m, + unsigned long long mlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_sign_ed25519ph_final_create(crypto_sign_ed25519ph_state *state, + unsigned char *sig, + unsigned long long *siglen_p, + const unsigned char *sk) + __attribute__ ((nonnull(1, 2, 4))); + +SODIUM_EXPORT +int crypto_sign_ed25519ph_final_verify(crypto_sign_ed25519ph_state *state, + const unsigned char *sig, + const unsigned char *pk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_sign_edwards25519sha512batch.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_sign_edwards25519sha512batch.h new file mode 100644 index 000000000..eed158aa8 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_sign_edwards25519sha512batch.h @@ -0,0 +1,55 @@ +#ifndef crypto_sign_edwards25519sha512batch_H +#define crypto_sign_edwards25519sha512batch_H + +/* + * WARNING: This construction was a prototype, which should not be used + * any more in new projects. + * + * crypto_sign_edwards25519sha512batch is provided for applications + * initially built with NaCl, but as recommended by the author of this + * construction, new applications should use ed25519 instead. + * + * In Sodium, you should use the high-level crypto_sign_*() functions instead. + */ + +#include +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_sign_edwards25519sha512batch_BYTES 64U +#define crypto_sign_edwards25519sha512batch_PUBLICKEYBYTES 32U +#define crypto_sign_edwards25519sha512batch_SECRETKEYBYTES (32U + 32U) +#define crypto_sign_edwards25519sha512batch_MESSAGEBYTES_MAX (SODIUM_SIZE_MAX - crypto_sign_edwards25519sha512batch_BYTES) + +SODIUM_EXPORT +int crypto_sign_edwards25519sha512batch(unsigned char *sm, + unsigned long long *smlen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *sk) + __attribute__ ((deprecated)) __attribute__ ((nonnull(1, 5))); + +SODIUM_EXPORT +int crypto_sign_edwards25519sha512batch_open(unsigned char *m, + unsigned long long *mlen_p, + const unsigned char *sm, + unsigned long long smlen, + const unsigned char *pk) + __attribute__ ((deprecated)) __attribute__ ((nonnull(3, 5))); + +SODIUM_EXPORT +int crypto_sign_edwards25519sha512batch_keypair(unsigned char *pk, + unsigned char *sk) + __attribute__ ((deprecated)) __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_stream.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_stream.h new file mode 100644 index 000000000..88dab5f61 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_stream.h @@ -0,0 +1,59 @@ +#ifndef crypto_stream_H +#define crypto_stream_H + +/* + * WARNING: This is just a stream cipher. It is NOT authenticated encryption. + * While it provides some protection against eavesdropping, it does NOT + * provide any security against active attacks. + * Unless you know what you're doing, what you are looking for is probably + * the crypto_box functions. + */ + +#include + +#include "crypto_stream_xsalsa20.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_stream_KEYBYTES crypto_stream_xsalsa20_KEYBYTES +SODIUM_EXPORT +size_t crypto_stream_keybytes(void); + +#define crypto_stream_NONCEBYTES crypto_stream_xsalsa20_NONCEBYTES +SODIUM_EXPORT +size_t crypto_stream_noncebytes(void); + +#define crypto_stream_MESSAGEBYTES_MAX crypto_stream_xsalsa20_MESSAGEBYTES_MAX +SODIUM_EXPORT +size_t crypto_stream_messagebytes_max(void); + +#define crypto_stream_PRIMITIVE "xsalsa20" +SODIUM_EXPORT +const char *crypto_stream_primitive(void); + +SODIUM_EXPORT +int crypto_stream(unsigned char *c, unsigned long long clen, + const unsigned char *n, const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_xor(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_stream_keygen(unsigned char k[crypto_stream_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_stream_chacha20.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_stream_chacha20.h new file mode 100644 index 000000000..408897558 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_stream_chacha20.h @@ -0,0 +1,106 @@ +#ifndef crypto_stream_chacha20_H +#define crypto_stream_chacha20_H + +/* + * WARNING: This is just a stream cipher. It is NOT authenticated encryption. + * While it provides some protection against eavesdropping, it does NOT + * provide any security against active attacks. + * Unless you know what you're doing, what you are looking for is probably + * the crypto_box functions. + */ + +#include +#include +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_stream_chacha20_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_stream_chacha20_keybytes(void); + +#define crypto_stream_chacha20_NONCEBYTES 8U +SODIUM_EXPORT +size_t crypto_stream_chacha20_noncebytes(void); + +#define crypto_stream_chacha20_MESSAGEBYTES_MAX SODIUM_SIZE_MAX +SODIUM_EXPORT +size_t crypto_stream_chacha20_messagebytes_max(void); + +/* ChaCha20 with a 64-bit nonce and a 64-bit counter, as originally designed */ + +SODIUM_EXPORT +int crypto_stream_chacha20(unsigned char *c, unsigned long long clen, + const unsigned char *n, const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_chacha20_xor(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_chacha20_xor_ic(unsigned char *c, const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, uint64_t ic, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_stream_chacha20_keygen(unsigned char k[crypto_stream_chacha20_KEYBYTES]) + __attribute__ ((nonnull)); + +/* ChaCha20 with a 96-bit nonce and a 32-bit counter (IETF) */ + +#define crypto_stream_chacha20_ietf_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_stream_chacha20_ietf_keybytes(void); + +#define crypto_stream_chacha20_ietf_NONCEBYTES 12U +SODIUM_EXPORT +size_t crypto_stream_chacha20_ietf_noncebytes(void); + +#define crypto_stream_chacha20_ietf_MESSAGEBYTES_MAX \ + SODIUM_MIN(SODIUM_SIZE_MAX, 64ULL * (1ULL << 32)) +SODIUM_EXPORT +size_t crypto_stream_chacha20_ietf_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_stream_chacha20_ietf(unsigned char *c, unsigned long long clen, + const unsigned char *n, const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_chacha20_ietf_xor(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_chacha20_ietf_xor_ic(unsigned char *c, const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, uint32_t ic, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_stream_chacha20_ietf_keygen(unsigned char k[crypto_stream_chacha20_ietf_KEYBYTES]) + __attribute__ ((nonnull)); + +/* Aliases */ + +#define crypto_stream_chacha20_IETF_KEYBYTES crypto_stream_chacha20_ietf_KEYBYTES +#define crypto_stream_chacha20_IETF_NONCEBYTES crypto_stream_chacha20_ietf_NONCEBYTES +#define crypto_stream_chacha20_IETF_MESSAGEBYTES_MAX crypto_stream_chacha20_ietf_MESSAGEBYTES_MAX + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_stream_salsa20.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_stream_salsa20.h new file mode 100644 index 000000000..45b3b3e34 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_stream_salsa20.h @@ -0,0 +1,61 @@ +#ifndef crypto_stream_salsa20_H +#define crypto_stream_salsa20_H + +/* + * WARNING: This is just a stream cipher. It is NOT authenticated encryption. + * While it provides some protection against eavesdropping, it does NOT + * provide any security against active attacks. + * Unless you know what you're doing, what you are looking for is probably + * the crypto_box functions. + */ + +#include +#include +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_stream_salsa20_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_stream_salsa20_keybytes(void); + +#define crypto_stream_salsa20_NONCEBYTES 8U +SODIUM_EXPORT +size_t crypto_stream_salsa20_noncebytes(void); + +#define crypto_stream_salsa20_MESSAGEBYTES_MAX SODIUM_SIZE_MAX +SODIUM_EXPORT +size_t crypto_stream_salsa20_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_stream_salsa20(unsigned char *c, unsigned long long clen, + const unsigned char *n, const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_salsa20_xor(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_salsa20_xor_ic(unsigned char *c, const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, uint64_t ic, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_stream_salsa20_keygen(unsigned char k[crypto_stream_salsa20_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_stream_salsa2012.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_stream_salsa2012.h new file mode 100644 index 000000000..6c5d303ca --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_stream_salsa2012.h @@ -0,0 +1,53 @@ +#ifndef crypto_stream_salsa2012_H +#define crypto_stream_salsa2012_H + +/* + * WARNING: This is just a stream cipher. It is NOT authenticated encryption. + * While it provides some protection against eavesdropping, it does NOT + * provide any security against active attacks. + * Unless you know what you're doing, what you are looking for is probably + * the crypto_box functions. + */ + +#include +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_stream_salsa2012_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_stream_salsa2012_keybytes(void); + +#define crypto_stream_salsa2012_NONCEBYTES 8U +SODIUM_EXPORT +size_t crypto_stream_salsa2012_noncebytes(void); + +#define crypto_stream_salsa2012_MESSAGEBYTES_MAX SODIUM_SIZE_MAX +SODIUM_EXPORT +size_t crypto_stream_salsa2012_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_stream_salsa2012(unsigned char *c, unsigned long long clen, + const unsigned char *n, const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_salsa2012_xor(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_stream_salsa2012_keygen(unsigned char k[crypto_stream_salsa2012_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_stream_salsa208.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_stream_salsa208.h new file mode 100644 index 000000000..d574f3047 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_stream_salsa208.h @@ -0,0 +1,56 @@ +#ifndef crypto_stream_salsa208_H +#define crypto_stream_salsa208_H + +/* + * WARNING: This is just a stream cipher. It is NOT authenticated encryption. + * While it provides some protection against eavesdropping, it does NOT + * provide any security against active attacks. + * Unless you know what you're doing, what you are looking for is probably + * the crypto_box functions. + */ + +#include +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_stream_salsa208_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_stream_salsa208_keybytes(void) + __attribute__ ((deprecated)); + +#define crypto_stream_salsa208_NONCEBYTES 8U +SODIUM_EXPORT +size_t crypto_stream_salsa208_noncebytes(void) + __attribute__ ((deprecated)); + +#define crypto_stream_salsa208_MESSAGEBYTES_MAX SODIUM_SIZE_MAX + SODIUM_EXPORT +size_t crypto_stream_salsa208_messagebytes_max(void) + __attribute__ ((deprecated)); + +SODIUM_EXPORT +int crypto_stream_salsa208(unsigned char *c, unsigned long long clen, + const unsigned char *n, const unsigned char *k) + __attribute__ ((deprecated)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_salsa208_xor(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((deprecated)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_stream_salsa208_keygen(unsigned char k[crypto_stream_salsa208_KEYBYTES]) + __attribute__ ((deprecated)) __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_stream_xchacha20.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_stream_xchacha20.h new file mode 100644 index 000000000..c4002db00 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_stream_xchacha20.h @@ -0,0 +1,61 @@ +#ifndef crypto_stream_xchacha20_H +#define crypto_stream_xchacha20_H + +/* + * WARNING: This is just a stream cipher. It is NOT authenticated encryption. + * While it provides some protection against eavesdropping, it does NOT + * provide any security against active attacks. + * Unless you know what you're doing, what you are looking for is probably + * the crypto_box functions. + */ + +#include +#include +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_stream_xchacha20_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_stream_xchacha20_keybytes(void); + +#define crypto_stream_xchacha20_NONCEBYTES 24U +SODIUM_EXPORT +size_t crypto_stream_xchacha20_noncebytes(void); + +#define crypto_stream_xchacha20_MESSAGEBYTES_MAX SODIUM_SIZE_MAX +SODIUM_EXPORT +size_t crypto_stream_xchacha20_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_stream_xchacha20(unsigned char *c, unsigned long long clen, + const unsigned char *n, const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_xchacha20_xor(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_xchacha20_xor_ic(unsigned char *c, const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, uint64_t ic, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_stream_xchacha20_keygen(unsigned char k[crypto_stream_xchacha20_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_stream_xsalsa20.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_stream_xsalsa20.h new file mode 100644 index 000000000..20034e346 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_stream_xsalsa20.h @@ -0,0 +1,61 @@ +#ifndef crypto_stream_xsalsa20_H +#define crypto_stream_xsalsa20_H + +/* + * WARNING: This is just a stream cipher. It is NOT authenticated encryption. + * While it provides some protection against eavesdropping, it does NOT + * provide any security against active attacks. + * Unless you know what you're doing, what you are looking for is probably + * the crypto_box functions. + */ + +#include +#include +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_stream_xsalsa20_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_stream_xsalsa20_keybytes(void); + +#define crypto_stream_xsalsa20_NONCEBYTES 24U +SODIUM_EXPORT +size_t crypto_stream_xsalsa20_noncebytes(void); + +#define crypto_stream_xsalsa20_MESSAGEBYTES_MAX SODIUM_SIZE_MAX +SODIUM_EXPORT +size_t crypto_stream_xsalsa20_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_stream_xsalsa20(unsigned char *c, unsigned long long clen, + const unsigned char *n, const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_xsalsa20_xor(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_xsalsa20_xor_ic(unsigned char *c, const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, uint64_t ic, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_stream_xsalsa20_keygen(unsigned char k[crypto_stream_xsalsa20_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_verify_16.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_verify_16.h new file mode 100644 index 000000000..7b9c8077a --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_verify_16.h @@ -0,0 +1,23 @@ +#ifndef crypto_verify_16_H +#define crypto_verify_16_H + +#include +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_verify_16_BYTES 16U +SODIUM_EXPORT +size_t crypto_verify_16_bytes(void); + +SODIUM_EXPORT +int crypto_verify_16(const unsigned char *x, const unsigned char *y) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_verify_32.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_verify_32.h new file mode 100644 index 000000000..9b0f4529f --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_verify_32.h @@ -0,0 +1,23 @@ +#ifndef crypto_verify_32_H +#define crypto_verify_32_H + +#include +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_verify_32_BYTES 32U +SODIUM_EXPORT +size_t crypto_verify_32_bytes(void); + +SODIUM_EXPORT +int crypto_verify_32(const unsigned char *x, const unsigned char *y) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_verify_64.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_verify_64.h new file mode 100644 index 000000000..c83b73025 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_verify_64.h @@ -0,0 +1,23 @@ +#ifndef crypto_verify_64_H +#define crypto_verify_64_H + +#include +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_verify_64_BYTES 64U +SODIUM_EXPORT +size_t crypto_verify_64_bytes(void); + +SODIUM_EXPORT +int crypto_verify_64(const unsigned char *x, const unsigned char *y) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/export.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/export.h new file mode 100644 index 000000000..a0074fc9c --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/export.h @@ -0,0 +1,57 @@ + +#ifndef sodium_export_H +#define sodium_export_H + +#include +#include +#include + +#if !defined(__clang__) && !defined(__GNUC__) +# ifdef __attribute__ +# undef __attribute__ +# endif +# define __attribute__(a) +#endif + +#ifdef SODIUM_STATIC +# define SODIUM_EXPORT +# define SODIUM_EXPORT_WEAK +#else +# if defined(_MSC_VER) +# ifdef SODIUM_DLL_EXPORT +# define SODIUM_EXPORT __declspec(dllexport) +# else +# define SODIUM_EXPORT __declspec(dllimport) +# endif +# else +# if defined(__SUNPRO_C) +# ifndef __GNU_C__ +# define SODIUM_EXPORT __attribute__ (visibility(__global)) +# else +# define SODIUM_EXPORT __attribute__ __global +# endif +# elif defined(_MSG_VER) +# define SODIUM_EXPORT extern __declspec(dllexport) +# else +# define SODIUM_EXPORT __attribute__ ((visibility ("default"))) +# endif +# endif +# if defined(__ELF__) && !defined(SODIUM_DISABLE_WEAK_FUNCTIONS) +# define SODIUM_EXPORT_WEAK SODIUM_EXPORT __attribute__((weak)) +# else +# define SODIUM_EXPORT_WEAK SODIUM_EXPORT +# endif +#endif + +#ifndef CRYPTO_ALIGN +# if defined(__INTEL_COMPILER) || defined(_MSC_VER) +# define CRYPTO_ALIGN(x) __declspec(align(x)) +# else +# define CRYPTO_ALIGN(x) __attribute__ ((aligned(x))) +# endif +#endif + +#define SODIUM_MIN(A, B) ((A) < (B) ? (A) : (B)) +#define SODIUM_SIZE_MAX SODIUM_MIN(UINT64_MAX, SIZE_MAX) + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/randombytes.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/randombytes.h new file mode 100644 index 000000000..a03cc6572 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/randombytes.h @@ -0,0 +1,72 @@ + +#ifndef randombytes_H +#define randombytes_H + +#include +#include + +#include + +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +typedef struct randombytes_implementation { + const char *(*implementation_name)(void); /* required */ + uint32_t (*random)(void); /* required */ + void (*stir)(void); /* optional */ + uint32_t (*uniform)(const uint32_t upper_bound); /* optional, a default implementation will be used if NULL */ + void (*buf)(void * const buf, const size_t size); /* required */ + int (*close)(void); /* optional */ +} randombytes_implementation; + +#define randombytes_BYTES_MAX SODIUM_MIN(SODIUM_SIZE_MAX, 0xffffffffUL) + +#define randombytes_SEEDBYTES 32U +SODIUM_EXPORT +size_t randombytes_seedbytes(void); + +SODIUM_EXPORT +void randombytes_buf(void * const buf, const size_t size) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void randombytes_buf_deterministic(void * const buf, const size_t size, + const unsigned char seed[randombytes_SEEDBYTES]) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +uint32_t randombytes_random(void); + +SODIUM_EXPORT +uint32_t randombytes_uniform(const uint32_t upper_bound); + +SODIUM_EXPORT +void randombytes_stir(void); + +SODIUM_EXPORT +int randombytes_close(void); + +SODIUM_EXPORT +int randombytes_set_implementation(randombytes_implementation *impl) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +const char *randombytes_implementation_name(void); + +/* -- NaCl compatibility interface -- */ + +SODIUM_EXPORT +void randombytes(unsigned char * const buf, const unsigned long long buf_len) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/randombytes_internal_random.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/randombytes_internal_random.h new file mode 100644 index 000000000..2b2b7d6ed --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/randombytes_internal_random.h @@ -0,0 +1,22 @@ + +#ifndef randombytes_internal_random_H +#define randombytes_internal_random_H + +#include "export.h" +#include "randombytes.h" + +#ifdef __cplusplus +extern "C" { +#endif + +SODIUM_EXPORT +extern struct randombytes_implementation randombytes_internal_implementation; + +/* Backwards compatibility with libsodium < 1.0.18 */ +#define randombytes_salsa20_implementation randombytes_internal_implementation + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/randombytes_sysrandom.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/randombytes_sysrandom.h new file mode 100644 index 000000000..9e27b674c --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/randombytes_sysrandom.h @@ -0,0 +1,19 @@ + +#ifndef randombytes_sysrandom_H +#define randombytes_sysrandom_H + +#include "export.h" +#include "randombytes.h" + +#ifdef __cplusplus +extern "C" { +#endif + +SODIUM_EXPORT +extern struct randombytes_implementation randombytes_sysrandom_implementation; + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/runtime.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/runtime.h new file mode 100644 index 000000000..7f15d58e7 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/runtime.h @@ -0,0 +1,52 @@ + +#ifndef sodium_runtime_H +#define sodium_runtime_H + +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +SODIUM_EXPORT_WEAK +int sodium_runtime_has_neon(void); + +SODIUM_EXPORT_WEAK +int sodium_runtime_has_sse2(void); + +SODIUM_EXPORT_WEAK +int sodium_runtime_has_sse3(void); + +SODIUM_EXPORT_WEAK +int sodium_runtime_has_ssse3(void); + +SODIUM_EXPORT_WEAK +int sodium_runtime_has_sse41(void); + +SODIUM_EXPORT_WEAK +int sodium_runtime_has_avx(void); + +SODIUM_EXPORT_WEAK +int sodium_runtime_has_avx2(void); + +SODIUM_EXPORT_WEAK +int sodium_runtime_has_avx512f(void); + +SODIUM_EXPORT_WEAK +int sodium_runtime_has_pclmul(void); + +SODIUM_EXPORT_WEAK +int sodium_runtime_has_aesni(void); + +SODIUM_EXPORT_WEAK +int sodium_runtime_has_rdrand(void); + +/* ------------------------------------------------------------------------- */ + +int _sodium_runtime_get_cpu_features(void); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/utils.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/utils.h new file mode 100644 index 000000000..ac8015129 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/utils.h @@ -0,0 +1,179 @@ + +#ifndef sodium_utils_H +#define sodium_utils_H + +#include + +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef SODIUM_C99 +# if defined(__cplusplus) || !defined(__STDC_VERSION__) || __STDC_VERSION__ < 199901L +# define SODIUM_C99(X) +# else +# define SODIUM_C99(X) X +# endif +#endif + +SODIUM_EXPORT +void sodium_memzero(void * const pnt, const size_t len); + +SODIUM_EXPORT +void sodium_stackzero(const size_t len); + +/* + * WARNING: sodium_memcmp() must be used to verify if two secret keys + * are equal, in constant time. + * It returns 0 if the keys are equal, and -1 if they differ. + * This function is not designed for lexicographical comparisons. + */ +SODIUM_EXPORT +int sodium_memcmp(const void * const b1_, const void * const b2_, size_t len) + __attribute__ ((warn_unused_result)); + +/* + * sodium_compare() returns -1 if b1_ < b2_, 1 if b1_ > b2_ and 0 if b1_ == b2_ + * It is suitable for lexicographical comparisons, or to compare nonces + * and counters stored in little-endian format. + * However, it is slower than sodium_memcmp(). + */ +SODIUM_EXPORT +int sodium_compare(const unsigned char *b1_, const unsigned char *b2_, + size_t len) __attribute__ ((warn_unused_result)); + +SODIUM_EXPORT +int sodium_is_zero(const unsigned char *n, const size_t nlen); + +SODIUM_EXPORT +void sodium_increment(unsigned char *n, const size_t nlen); + +SODIUM_EXPORT +void sodium_add(unsigned char *a, const unsigned char *b, const size_t len); + +SODIUM_EXPORT +void sodium_sub(unsigned char *a, const unsigned char *b, const size_t len); + +SODIUM_EXPORT +char *sodium_bin2hex(char * const hex, const size_t hex_maxlen, + const unsigned char * const bin, const size_t bin_len) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int sodium_hex2bin(unsigned char * const bin, const size_t bin_maxlen, + const char * const hex, const size_t hex_len, + const char * const ignore, size_t * const bin_len, + const char ** const hex_end) + __attribute__ ((nonnull(1))); + +#define sodium_base64_VARIANT_ORIGINAL 1 +#define sodium_base64_VARIANT_ORIGINAL_NO_PADDING 3 +#define sodium_base64_VARIANT_URLSAFE 5 +#define sodium_base64_VARIANT_URLSAFE_NO_PADDING 7 + +/* + * Computes the required length to encode BIN_LEN bytes as a base64 string + * using the given variant. The computed length includes a trailing \0. + */ +#define sodium_base64_ENCODED_LEN(BIN_LEN, VARIANT) \ + (((BIN_LEN) / 3U) * 4U + \ + ((((BIN_LEN) - ((BIN_LEN) / 3U) * 3U) | (((BIN_LEN) - ((BIN_LEN) / 3U) * 3U) >> 1)) & 1U) * \ + (4U - (~((((VARIANT) & 2U) >> 1) - 1U) & (3U - ((BIN_LEN) - ((BIN_LEN) / 3U) * 3U)))) + 1U) + +SODIUM_EXPORT +size_t sodium_base64_encoded_len(const size_t bin_len, const int variant); + +SODIUM_EXPORT +char *sodium_bin2base64(char * const b64, const size_t b64_maxlen, + const unsigned char * const bin, const size_t bin_len, + const int variant) __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int sodium_base642bin(unsigned char * const bin, const size_t bin_maxlen, + const char * const b64, const size_t b64_len, + const char * const ignore, size_t * const bin_len, + const char ** const b64_end, const int variant) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int sodium_mlock(void * const addr, const size_t len) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int sodium_munlock(void * const addr, const size_t len) + __attribute__ ((nonnull)); + +/* WARNING: sodium_malloc() and sodium_allocarray() are not general-purpose + * allocation functions. + * + * They return a pointer to a region filled with 0xd0 bytes, immediately + * followed by a guard page. + * As a result, accessing a single byte after the requested allocation size + * will intentionally trigger a segmentation fault. + * + * A canary and an additional guard page placed before the beginning of the + * region may also kill the process if a buffer underflow is detected. + * + * The memory layout is: + * [unprotected region size (read only)][guard page (no access)][unprotected pages (read/write)][guard page (no access)] + * With the layout of the unprotected pages being: + * [optional padding][16-bytes canary][user region] + * + * However: + * - These functions are significantly slower than standard functions + * - Each allocation requires 3 or 4 additional pages + * - The returned address will not be aligned if the allocation size is not + * a multiple of the required alignment. For this reason, these functions + * are designed to store data, such as secret keys and messages. + * + * sodium_malloc() can be used to allocate any libsodium data structure. + * + * The crypto_generichash_state structure is packed and its length is + * either 357 or 361 bytes. For this reason, when using sodium_malloc() to + * allocate a crypto_generichash_state structure, padding must be added in + * order to ensure proper alignment. crypto_generichash_statebytes() + * returns the rounded up structure size, and should be prefered to sizeof(): + * state = sodium_malloc(crypto_generichash_statebytes()); + */ + +SODIUM_EXPORT +void *sodium_malloc(const size_t size) + __attribute__ ((malloc)); + +SODIUM_EXPORT +void *sodium_allocarray(size_t count, size_t size) + __attribute__ ((malloc)); + +SODIUM_EXPORT +void sodium_free(void *ptr); + +SODIUM_EXPORT +int sodium_mprotect_noaccess(void *ptr) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int sodium_mprotect_readonly(void *ptr) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int sodium_mprotect_readwrite(void *ptr) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int sodium_pad(size_t *padded_buflen_p, unsigned char *buf, + size_t unpadded_buflen, size_t blocksize, size_t max_buflen) + __attribute__ ((nonnull(2))); + +SODIUM_EXPORT +int sodium_unpad(size_t *unpadded_buflen_p, const unsigned char *buf, + size_t padded_buflen, size_t blocksize) + __attribute__ ((nonnull(2))); + +/* -------- */ + +int _sodium_alloc_init(void); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/version.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/version.h new file mode 100644 index 000000000..201a290e7 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/version.h @@ -0,0 +1,33 @@ + +#ifndef sodium_version_H +#define sodium_version_H + +#include "export.h" + +#define SODIUM_VERSION_STRING "1.0.18" + +#define SODIUM_LIBRARY_VERSION_MAJOR 10 +#define SODIUM_LIBRARY_VERSION_MINOR 3 + + +#ifdef __cplusplus +extern "C" { +#endif + +SODIUM_EXPORT +const char *sodium_version_string(void); + +SODIUM_EXPORT +int sodium_library_version_major(void); + +SODIUM_EXPORT +int sodium_library_version_minor(void); + +SODIUM_EXPORT +int sodium_library_minimal(void); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/lib/libsodium.a b/example/android/third_party/libsodium/libsodium-android-armv7-a/lib/libsodium.a new file mode 100644 index 0000000000000000000000000000000000000000..981e22cad0cc6ee519b6b8c175d3c8d5814694f4 GIT binary patch literal 433614 zcmeFa4|rVFbuYSSG?K=)Fas8eVhcEc0xF*{V_O)Jx?yY-P=b?AiITXfTa7HqmVzuz zB$X*8G zw2$`7gZKOGv-ixIGv|y(f%c{^J)e%&*?Xy)3A#uARMaeXfA+6MO*QwvKN2<7++SENY94$4;`i_VmZ;(V;zOe5!lxF$ z|M}x061wqU@4oDNBJxh(SO0;C{9D{Nza}Ey`{7!+kntO0eMBMkDYei(S z`*SBmcQ;?tME%t-g=o`JK9-`kbhJyZ7@S5w-67oA-%Y_xz)#I zyl?w@>HYqLqAuvZ>r0~U*OAZLy$@X9H+Fw|Vzj4sptrxLZ?G4C>*MLs;rrKZh~LsP zFe1@C{R0!g4D^d?s4Ei<4NUA@B42ls%FO!*mLjjBuFO(qzBIn>BvmlKci{dV_fHIr zS3x?G-m{}>+VO$DYH53`CEPtQKHj@)K$7?D?wzbcW)yGNz({4n>Z+j1(vMVE@M_Au zwBq`dbh4~Vxs}Xy^SUQ9juX?(Xdy$7p=ZMxUHr zNM9jb`05F1z#K>Ae#)A%S!QI?8Ifz-q=QXM2&v_=%4;7TDu zg?b^nV%3nKQtbdAP(e&tT1PuZCws;R2Kr0-DI+my4iEKt>%$@M8ylGL!|WK?IXX5l zvb&7g$mmF4X?G%{&kl@@mXQMC8;_1%MjJFnN%_4aiX-|!KifFnJ2a-Ni19vAx-4$8 z-klQzV?LwbqWpf*a8|WRs-;b8@ZoX2KO3X_L%2EbpBU5?v z8XqVQQclJ84)>7K&6Y%EZPvGE?7o5Zx7@Psw#o6{;c>U&Og;2#iV8`58mWmmXyR@SBo&NlGL{+S7067$txs+y%Es=DVmI$j)9)> zzTV;9vE6%yC(2|gq6$okQ9V0)$BSYQjrWX>IK8ew>%{Hu9UAF@9J|Iw_oUspzFz3f z5OOa>4)%`sjPLFp#t1dmKQJc7`{el31L54ytYM8(m9K+i1O0pY28!5m)R8wAHbKvx zks(Zhy9-&%NaQ~##)ifx&}}A0k+-Y$OQKyhT@qj9qFf1mm}Ywh^)g8h4yCa@qkAUO zdnQUcoQGlv3yq2d-bvn*zHfA7+%LTv*h}S7k-=hVf*`3h-d`w<4UkEpOGMI1f+|Ym z0|e4&UwJgLvN%OcR@SUa1VeTakw8&dC=gT<3+T#%b@)|O$6{i2EFx7$MWH%;WP%Zm zbsrRcTrDMgb`KS73?F3Cxl)GIC2}Kl9R+bM;{6$GydUqfC9ON-@&MN#UT~3m z77A`m$qK=ZfY1o~WwK+q_uhf^JDe3`P@Q;){41t}s8UwC1{ce%NLM*SO;;&TbhFY? z%UwHK^7O#i_$Zd*CF7?bVa2BG(d<;E>tNsL?(`Vkf<0pcJ1dDQ*NHvp-m%`os>4r) zlI3I|K@SVwqYJipwvf3ZQRyNzI9u>pLe_zLtLskJX+_yIarH$`W3}6}V_JB?+p|IH+gq5)fZ~^)22ePW|>MOTw?!7ORQkXsjzhS~!ZM#FhD4?>Onk!A6EBRvM|Cu-$@{wX00WjTrX;?usmx zE=VdrX(~toa_DVAF2{rA^&H$==GH+>-|!InH9TJ9#-Ug8Q>bOmoC+EEp%f`l-G^$X5+%?>T^YTe1mR`ThHC` zrF!nhl<2t|QL&t*O~f zRJqv;WUAKmpzd3&#YT1CME#>9BfZ`Uap%~;0ICtP!K*7|T?~De4_IOE9@srPc0UHN z(Y|}f#eKcQL)`2DHCCGA4$01;F-)?Gf_gOs-yug_p#o&qJGN_dWPMMd(7LGU&&aWQ zF>-9~jrPMSF)=nYvP)ox-W8H^j}PqPj4$mm#jI~)Qi~y_bE1c&sN9SPi+)9*BFB0^ zqa*r#$y98SPWL#?Tj{R~_G`4Z1%^i;kvNNef(eL;c2F`-nj-7ojWg8y^@MFWG?&Vz>xlfa;-P zgE3mo{WTj&;nf`I=VD2AL|?LgcJ8X^Ts@^fsH^msn_i{$Q6LCv|9-66D)*KmMKF&= z`im@dg$^U}m3mA+Hf@R(w;jBv_H*wY3htk?8V9NJjovmM{D%&?L zqWpGMi&*alstXfvOtMH(t{7U@Lfz|#lEVl^4yDV>V!S>!QO?JG@}WrYdz8Y1_D|_O z^-!Lpmm;7jWn|t3Wl@|m(n>8`MqHt(%V;aNeHnSMGL(}psvTuX{2Cj>(m?O-p7H~X zOCsh%6(^*yWG(4Vfy@>CaN%H|(>8(hV*?PUO5RHlBfY0;3CbN0i-=r$vUCyRK^&YP zC|&6-lEPoP11qrX+(mWmG|{^YMx{KhU1jYv#S&V8(w8`!#s^2oCZx-wbkHtD zmsL~&Q$BiXRH3Xof{sy_hqajL_)waeuW$FvR)vH`f?z=kG=+SJcHt~X*^%3EMwb>- z5_*p-N;-e27WH| z5-t^+s=()79$?}zxRQD*MW^reL!$g;^{dhWe0Bg zEOyaQ^ebP_xRnpqMHZ-T_gv)>RACE>=0PvIPV&%0d4tx34rM^&2R8R24O~74$!t6oQeH*A zl>+Yy4_pWJ2aOJtRTC^Cvm*1zs1y6PxC=xBdsc4LDQ2DEx1 zX<(HWC>E*H0$pjts?mC#=XEC)y}@&=K}B!$SZ@U;x^#u)o`{X@Vyt(hU!7dWlvQ?C z#*HpLM${yz^WVH9mp>b!!Jgqx!$DW-fGzimN8W@Ay4u@mUdv^Ei7#dkWI54S$cwCPt9i$TnwWl`!dWLZb!IjRz7Gfl=JGGqg z6n)ir$IEn5jfd%u9TFUA@}y(@`1rv3fcOpm@#6ylh=KNXekpqID^#mnAVm9S zjCh=i+3CkA-8U@HZaWoM!farCWXLbcSU(%PP-FdjcJIcawEK7O7#)_!;>QN=f4?6utLnD33)iM7YDpuLZ~P$1dhN<5mY-4;f-^7 zU`^xYQFfOu-4K7-y+;Fa#hIebU>JtM9FMkRS@2aA4g;wzHj zp&etrIB}q{yL&$cdm#upG*XV_uz|M&^jN2S3VLP^fC5fvokxcZn6swT1 z+MJ3LmhxFGRvG@w>%~&}J4F^tr4_DZIki}#a^q*Q6kfmZqVxgI;lk;lbf6@jL%Lsl$s0(41oYqeCU>kMUzD@Q z)U!B+dT+`vbH&4XKdn+Ooa>zP*OjOOD@VR}1}Ce0W2=H7LA9vlq=Dg=I=Drl=1#8t z4vSz)Wz_}~u#JMTLF`N38LOaQC3N0;EJ1qfs08W%R$2*(kHVDTRb5v}=A&GG+LVmE3Z7=bh_&KH9a}_3493S;|WEIV9*5#3P>~E<5<)ORP_}6yH*-B!{N1jyJ2c zr1>kch8epQTHj+dz9lT2G$}tNvj}~4r7Rp&sgi$@zB>K|`GXJR_?DxP&l1xW@(Vb4 zgEyu5H8GFU6>?ijs%m;0^rA{K|6^so(t>H}(M#P)`6kH7D0~Y#PiHiduZ1g1C>Vp3 zeZ#$2FspgEJgxJxcx7}oT-;w0^U1|M1eRy!9xZ)Db)$piEu{&Nri92(q{7*k^0laU z0q0o%v|!6=-3zfwbiV7TMH5uZz09Lpp>*X7j7nm77Z(+20~Qu#JK~dzZi$nktWe&4 za}X6&$k~I!5p& zTlua-Ax(KnJxtLny`Kasf2rUqnBl5x(psB6+i7)WTMCdm}u8W0NVT2Pp?+Yo@9P~J?!{+X0t(|Dr#xc$e=M?Ck^bK=EaFSgig}oqp9As`1SzzK%t!a6<%W0q zy{ac}_WlTh>o*Ym9yheFYj@&P%i)05-saw$qzt-iXs_pOesDi!hAMp+E+$3kTfBcUvH5hcG)RtZnHSsC8rI#WY+U`1%3nLIgC#!ULg3LnD> zK&vcxs=K^091e=apMgX&bvfGk7BGf!{iTvJ5*JRr+FeGX-tfDLUI~5};wHbWG?5>! zJdYh^nW$#tqQ4BsNWKg2rwJ|`_7?+_`stZY3Y=e3*K6lxY?ZVi2}A{Irt4+avcxW2 z;YHgrBCU%(@(tKBwDYDVT5D_|2q!m*;T{RX^R?5P0Fy;WmHOpf=Rw8f&chZNZ+H+P3ZP4 zW9X173$N-ixnTd7^YfbY>)WfLsWi0Ex-aM9I2@cSQ#g~F^ z$hS|8!pa=RDW`G{B}+<7vwqe=X`l142TKV$s$kL)BuQZqEhBLCQJlR|>p(??)xpS6 z&#*F~U26r#Yfd<$L=xRq*3-LuWoXzDEMs8ljaf__ont9A7oD5Cd5s}M>L(>ayzV+7Mrc={a zB$mt9A&z0<60zJopPLeo*^F;aK4!`?5BridN2O(2P32*mcv7W2o!avmdsiDU>CV%U>EZ=Nr;^j(r?F{>r*Sh#Ol`FJZ{pWIP7` z({^1fV>Zt{X1AdHF$3j=%rWyZyBYE}&Q05M38&tL=$;P?u{0CaBd<@im8tq<_L_ICJvwTNrTBCVLVW&5HXb^9)h7u%C< zjP}gyI3Wft^3!>+9OT`Un6`0S%>ufDx@-nt>WJ1i(&(_(kLE1WKqlg10s7I1cp-kx z(GerJs#ff68ibCtRG}j&=*Ul@BgW5}p6GEwKv#!3CZMeiw51#mGU(T+Kh`Vtq9s=x z4_JTUh#C))=+kJ2TEywP)#E{9`U@80Ulu19>J0Q#)t=31)OUJX;@AdkTjtZ0Qe#01 zdVzG*izskRtJ|INN*APTvh7qlL-8b@vXEByZ|bNXGei8ZgGtr z4N25D#*disaZ4C~VO=i7`|4u*O@?E!%~rGdnB9c>5$SJREpr%4G8jK{kJ(dVdZ7j~ zMbYOQa?^GUy4`3x`rSO|)Gx+3$lN_&C&v@=XFGq}qJD=(?lO!|mn{=h3n+6Q@>&?{ z7WCMnb*2$z<{a_@^oDZ>^(H|+YD}Td@aFu%e$D>PIuekJ^_qs>uurm$7$#2ZO;g%w z|K`MFb|d)K8|c4rhptPGExY8{!n9>$OG@cZ<}rI2__O?MBRw|=v9mC4Fufi(niI~r z!8q!q9xtG$QeMWp=al9Q=u-}^YQ0O8>RqG3G3B0lv@KMuTk0O_zo>f&bAAPMk9CW- zm}lLw92}zx<0a}MqsDrECx;fvVAm=}Z zF>fnqN@zI!`ZY}-t&$$Yvp{u-Vf-V!sNhVE6K=xb!1!lt9k>-8h~c)V1J5e>Lj_F* z7Zkjx;2R2xWlp-Nf-wb~6f_iURS;Q~UYkey$3}-HY*=49jy|J!+ZG7!Uqjhj%B0c`Tn{UPo1Z1&x*XZc3;eqkdJ!5?X zYhmu+JTW>t3?q7I4hmyR&0Q z`?~nXz727lDr;|F*RgZsFNw{!L0Ie^>=+WEoAG$Z`nB=fMBVcG&C$@Z@bbt?acL+P zx-5Koq%m}bcy~=x=sls;;cG+Jvr0>@|AKngS48~%Tl$%>Muf$$pgoFLSgb*~zrZCd z-i0vR)VadqGK3GKO?B8%>0^ipi8|4MFxyk-Z=8vHu62;-SLpz#+VpMf^j;qwSn zCkkQ3i!xk}^w$^C3c)4)KwqEukzr-p72wi@K=zAvP=O| zo?=-Y{x5)@y3g@}_>Xzg-{;Byx50-zG`}w3*;leE{oi}&PkPGtI?}T~pH}i*0ebc= zQ>FhN;#r>>e+S~(*I31r?>xfnb2>bOF#DbkzYqDb59%=MjD1mu|1XJ6LgzX6_oT8ERsH?I^TMR+ONh7dv?CWK+~ ztb!&XCJWXV<73E|u$gcbcoHIAim=h?11T&z1`#IwF5@r3Z)Fp{TZjbYXnv0nNkZhi zoe=3K2*Gzo!83%bQO7ELQNc#k6Y1g#ZX$#nU4-B>MF=_A*O>niz?ypKg$iFJzDbBi zv^V8R5uzT_gplU}LhzX(L_RMlcveC7JI4Q%5cx)-L!@scyi$l36;2Rdg>n(1{!SA@ zF7|24^|XSG(79$9WTyyGFV7M}ju!~Q_beguyQp9cWns8g!7c^+6`UZ1Tp2>7KSBt( zPOI>XgplhZA?mjo3PHIHK+4qu$ogtk;ZwvLC@_cbAwpg^qD>GjA+nMXRV$&P zAW2CVSFl6Dgo0fPCKcSKU`oM31=9*nDwt95u!30yPbnzYjtva2-F(l7*A7e$^%uT# z>ASDoQ}GRP|0HFb=Q2NjD!Sw-fOZKLJZ;YV;Lb0bR;E-Z8!8h?c7EqA$}-kOoM`!l zR?XLM7q8?44*unr8T%e@D9gDzD#_6QKtvhGD#;v{c&(@80Iz>}{Eu3cA^94j+O_kSP}jKYoRdGHI_Uyzlm5L4Sd>d!&2wpy1d)G%kc9Tr%ey_KOZwu>P#nL@3*?lz5SDn;HKh*IK z^*XLwzFm88I#09kFO@95KJDW@hUuSVY1A?Uee$Qe41%cDCV*B7XMFK}U%x=2u)YOZ z+b7n77iU?Za2vaKKxa!QZ6)D4W2Wv^n?@>DQ&7kYVBz%GcI}JQ?2%{|tR{wMNl5(!~f{l!?3;r+vn4 zS-GDf%WDMqjJem~^%*B1tD)-R*#JKc>b_);;WU&gg4;kV|2*w8XdR<3Fr3TfFF>cH z51D#}x}$Ej1n5=^(rEqAy48v}#9P!crr!+R;{F5a+O%%5jnEF%De4w+1>H)O`VHy# z(|*J5qui6&S@0V!%YM;h9`q5CPc&Wh8&W@FIqWeZebH~Y%OWlJ8<;oKG97(@xMdu5 zgR&7vf1=iX#%aBge#5kbOR99lYg)IzTGtQ#)qK|e>QcX<C(;ddZR zzkzdw#cv|aHqzlEYO-b;`iwpUyuQfuBRT-c@Sk|X-z?Vae4bVCEFpX`)R`1~JU;}ifqWdF7~TZ=nqhdR2;pOS zo)Gf=h!FB!AcTBx5Q4AtZBY)?GxP6Okb225eOZLhD)CY14Oopk#GzjVA zY9~ZFI|)HIObEHDyOeVRkaAC|@B;Dh1#Ly#l~<#(aJ`eho=U!%!l9>9kICZh7S9^S zS#x>aF#+8DTrB~lZ_kYqz|_}65Xq8lL~ z&5}F=uFpTp^?w=93Jw6}k||mCS6=LwzUHyiwLZrt{1vW#jAzGO5g7X9)rJ3jcCYo5 z7*F(tAx2)E`0rkuzlgzo8xn#oW{l$6oJkQ~SnE$ABB^Kqd0`hX)ClnlV!2`=h4Smm&vyM~ zR$Ac-iyIK;xgO^Vi-*+{%mvhMo!sv=R2&tF`+dCF4z$fap`La46@=L~yosmnWZ;Im zBEz(u^rhR7ZKv@tcM2ErkKksTYX0n3`XZjP(*|h;yb`uiJ0Wb9O@y#rcrC>S(XLJT zqmRz$SQ1sDSNaPLo;{=DmX3GRL~<>gwfQQcv(?~r`>)+f2X2V~YF6~R-1Qa!cm=uN zW#(nyvz2c*mOF}F{CY~t?D7S#b)3l*aUER4OY;7{fp&2X|I)TixO785c7cx1dRS!p zCUEP^8EP;tBf>p?a}8x6j^j7SL()-)c+dm<3iH7P!g1WB;idWAf@e3s=RiO@?|je( zW|VI|ZeCC0X5Y~lalAjGAbIfmI&Q!D;910zUSCOf0FgTQIXt`P1Je1;2TY*LMxIB= z05<`)Ym4*2y7(>b31Knc?}qp-RnG_8S!u5MU^#Nv^MHnD_52W%zN*)>?{E<33`HuJ z?}xuG4Bt{H0iPA-jmJH54dcAUPxNzCIB_y%>mNS~ss zU9|6WFnK`wLJd_fI-XF=&3da=*7OlaR?bJ1_2P$b`f=0q)7B5EFPU6^0&;~?@MXep zPkp&0jdQ?|SLP4-Y7*3=tlbRV(QQsh`D=}$FP3pUKg+sou26qXtiNeTra>iBNnIho zw5lu0{GkrWdd=;Kq=Q588mtKaOYW;3*ZRpOW=8qryPR`pK&B`a)ef`JF?&zL-D93EG6)_zXXm96R90 zdVpb^eLAe-PZL6j3xvSGq2g(~GG304i0^0k3K$a#o+5-FjXIEm|178AbBqW51w!N# zft(D-2oY{31fNbqq^FKB{Z<9Dj7I^UCPcdD33292o^b;`b%yk&f=$p7p3!O{M4>wf zah7Y45cJd`(x(+f@s?yG#}$2tf(Zpn>{MkmV)ga2S;?;S^1JQIAl2V9AYXU9G;UpK ze2r`u-sdYPrC;<2u*mgU6r97shtZ0ml5;p7PK!9QyrP%<-jut%OFC@h65UQbN85^DQ@Eoj{KKhIY-AtB?)mUJ9PufvV#!g_)}_AbQftTjKn!`=Mm z>K!`9kw)`lpQ3#1W4w6o)Nh@z6GWub*TXs^6`^sjAPg31H=W-)0WS>|WG3x*!Ov8A zz_xa+6E>7Mj{ddR2?^o6FQL~7t5>S9W78Ja3EvG^C+vNj>x4wIxK2pGw$C8npmjoG z3F`#%qP?3@_OMEJI^k0|bM*7JPLOr=4y+SccmJ_Y==(Q&=jWYXC)|L^!@W+p7Gc`G z&J`97cy_N7Xczy-I-$5uXjAnSv`)CJP?!I)PWX9QC-D1Z%H6&+Z@RMSnclq~&<3tI z-ffijWhW59zxNarXgyujsz(1oHWr*9lDQzfN#r+~PUs z?>&N5yG|%B2uha$_?0uD)Mm8*KE!{l6Mp{J2^())%6`K7_6~LUJhgnW@5k^RGhBtU zazjP{bw?*Hyw&kPhS<6|iuUh)PAm_hVUv&#)=UTT_ z!BYw*)Y|nI#aI10D?wd;zUtp}**sk7Z$mh%6CnIigjsjah4<7E?kMmKiw=ZYry9Qj z;qSV_f2lC+n)Ka149I64{(U^hT;WEfZE}T=7kD{z9|g|9O}7U5jRES5e7+2Nw!Oxm z@ua^KVd?}OA52ewiN2WL6_j$_;))=i{v>@d{2o<5&*GW<7{~g^s_+)z^+jBrCq2gk zo=Y$Y;e)2^SHcI~4M-nwKOua}M+o5yCf^i%wX|Ugf5>>GlRjyr`zgan*MNMOuALC+ z*k+{Pq~HYO;p@#1!e=}~2;VU4i}Y+m(tlq;uzhEI!7kTeU;2JO*D!2~x9c5NEZl~l z#~3Lw3OzXHzKH!tl0{8G5>;ab`r9%}iX~WnOi^O|dCK*+3_vn3wE?}{tMV5+E#qSf z23CUiox@V2@a_19m!WUM2U@t!;JnZdSAT`-%c~Rr`Rw)$m#*y{x&(mRm-`9^A&v`P z-|#Jn1HXcAnEO6mh|^gknY`BFznk9!kdJg;-|&YJNBQEod2xTp&o{guM5NQ#YdS*} zp>h9&u-i9GIzQhq*UN4e+*f*D<)LNdn0NE~xbrbUW%w=T8(zP0L)GsO&P1i~1)GoG z4Aeg1AlM{IeaA5sE<)!UJl?a2+EyeK>I_754)5`q_{P`V7XZIti!S*cyG8LaoR^@z zsnf?2MIN!l7wp(phflS1tOd3otAmjBPRO~G&`_{dLFx+QI}}VPNd02`HU+mUm{O4Q z5%E(BKCR&Q6?ATxx!)s=}@mUe$s>A4Sp#Xey^)OnMWSa)iG0TZZ;>Dg8_7>ilPE3xm+vRnyU zD@6#KDMN?~&k@3=`YvHJ)_jCl;UBIWk!Msv@?;oEBs3Ic{)~?+*r8xT!7c@p3Q``@ zrxYAiFsj{ z8>xTqrHs1#H+LL)2KviL3qLhg`Cu*6qa^NMbkZ#S;)BONd?$RMe~C$aGIswO6a}e} zp_kP2(=$v>67LV!RKazLNqjQaE$Gs}N<}G<2b^uD%w@-y5gBY`RxYK>iTHL-GGncX zzKEf_aBat!vC$Qwhm~Ij1)tsas3Xr`6{}c|Mir1n7$t_{Ju70_V}5s~ZHrH_PuZKW2YGO#hg^K)kmvzgbFur9tFIMqlY1dE=V`f->A=3i0O_bm~T)UFG}vF|pU8 zeT?s4FEl`o2GjX&z>2d-r@r~D>!~S#AN27?mW$ueCO>{#I-0<@GZfF5;t4;i6+7a5 zM_TiY{{O7*S>LhPJ@|h1pFXw{v5$BeL#A{99H~{rmCLb;tH- zkh*japu>-KPkxo^pDMz>*Q($Tby)Su2NdL)PSSOwzY?WS?_yLT<{`r`Q5g)ni?<0k(9&`3by zXN?O`{!F}-bmw4MlQZ>?lppod(`gJtK>?Ce)eA>H$SBQ_L(0}CagqIF#g=z z%X0VIYYl3thsO7e50q?{mwXMb_!Cq*TX!{j_C3=NZNJyW)kf{*ygL_Nqn1LIQ!Gu?(4|j zZAA@yBMSD~GT@kob{fx^E;nE&#&damujmxp6q+{V#k-yNvR3~Mf7j*P=UHCvf$R6NX!r6xE!dXx0(t4^X@qAi8q0c=}zOjWz9andm-)JFF5aOJpeg57He5s*)FJ$jM}S@ z(+-22jxFZ22kmmq4D%T7-xp5vH(=o7MV(Vd?#0(6oZp0?42JOue5>l9CE{l+zV9Y7 z_`Y3u`p3jI<6W+11M2_-{9W&Gx#gQs^2L?^8bPVU7Zg0Dbeem#)a_psyK0*(EDOxO zT>hHkqZF;Ch(v`h5Gafjolz8EfKg=dDJ(MT2k@1F3Tt^}n2ga?0x2md1v{tpml zd2)c1k9L*5$Zr%k%fqpf_)UPcd$tq8?nx735X};zBjgCNN6q>rq@71-5`rP?I)zLY z6pSNpzR%Q22z!a`NjOLdyXgoa(y4+`Ky2Jw0S@_#VW$yz0tX7f`pMpNX9w=Nd)(SC;IDP5I zE=2GdW{SMp@jn4w(HB%oUY+>wwrlw9_UBa`$w|jPq3o`LoiqWYfq2bQ^YhwWry(Ed zmvu@_PWL6L;x_=om}|8?K)ZoAzXhQE zWweX5&A_>q@%p_H_j~7jpW1H@_P#?+8$q8RqE{Ug}=9wvXb;)6rYe&zRP5(JsRY@M4danOJ&PtR9XK$$!aLOE(lh8j)6_gzE3-Y za8ALb>dR>bIiC{037wvBLBWd(a_z`?4jzP21!D?wpPKQ8f~^WNNy+sK^3|n(MEUjQ zXNS(~i9iyC#UCSlL?^(=dj{d6Z5S5MAxxXdxnNhKJ$P{p<~f09fM=UJS6DoSFl`(ga zaI7!R`NVThW?#|aA%xjyba*4^nWqlZK4BlyVV(_TU((?}2RZwc4s$<^eM^V=?lAk9 z4of>6_V!l9)4twDh>Gtgg#CM%5O(zuz!dCh)*~Uy!!w^R0`lzX>kQ*;DE+zoZJPw4 zvd2kJKQVvPWh)@V^pEnK1MPC2b2tk~`}++-#7lb|a?lPZAL=C2aScKE0OLVV|3AM= z@B$&|e?$m+6OeT06ohyc?RP`rTNR8e*r8xT!7c@p3bMX#WF86*DwtMqQbCxu_^zV* z)eW3s^_c!HbGX6={SuE=RN&0cez1h4vv}pIHCS|?wX8Zj zqHD|bd-g>(JZhr8j)A9*1=`}T*?ZbbQ&g5F;K;P=-AC6M7uE32XIxcwM03=v?s^yI zNlZh9>xC%hMb})5X+U0|#D6}!*V%DbLY?H}pmDFWw_>hYKpfAdV0bR9iyQF_e(8OH zy!yc_14tTPnqLghZhq~MFM~MpBMomviReo;K#K3(&b1Yg3r2!UI(4udi+Vm z>onwXj2XEujr$iofHbX9r1M*kUxj!r8)?6fa0U_N!(}qrQ{J05w5xCMIji!;&RgGh z>n&>IV)1>8BsXDQ>+uHUuJICd!i9>UKa%Hz9wc4*>|bqT`!P3C7#?>AQ>@8w8ea|_mr>-Og_ z1+MP4{rMG4Gl0B4eK6m^=lc)kTU7d1zzE`=*}mTlPdx&k{Bu^geC-I z_g=mq-yy_rw9ELYRiFHT8A;FDHMio7M>1pAZP=fGc=g_V{bQg@J!gfwAGE&mz+N-l zc+$FkL&&O$-(^PQ8T-axfv*ASNPo?h;2qy@HY5E0iF&I(euvo%nrlJB-`og;CQ7&m z`w)bmK9r9Eem)gOdGSpX)JaYJkjXj?_t#r>NZ*vgZ}EahD|j#uBee$KHauvy0KVB@ zCutgiXFWwy*yC8WH{XJC)x`Fi&uq%&SEY0F$M4!=9^dtx*^2m;?KM_SY_r)ALw&4@ zSS{ciirr}ngg@6fM>o?&y45hzA%r4Yi#{HF9``YHcIAg@T z&)6Bn#pY)1>(=arzvqno@a6D37-#Gp>U0^x4Xbkbue}HKc)qrY{ujVT%5uiO?%mu& z0t8J2F!!!pJ{QLR5#+BIXY8-l=JG2DL)be5Y+J@NP=JVENr-sX_a%64hFnqb*bn~= zx|Tg*6PuSK{SVaj(oA>_LZ@XL_z3PR8|0v6=M z^ShDf+PYkR4IyM+4M=&eB!qld5klUp0riat_#Yu3VHj2(k>!zP@Zhx)|m5~Mt*Mvi3?_D z8a$DQ0etHm@`9|{N6wj@u~|Egeg783N9I6#&AfR%#)Q)$VIGd<@?CR~=}Fsci>?wEUg6EMzhe|D}u# zx;6Iccbn!`jGHX`rpyZaOQ+A7r*D`y+Yo0Yz=yQWrrDa9wP%nvJaNimUP64uYKyI~ zZ}?q|7<^&91~6J0y;o-)a7`8E(m1ocAAj?Nzg0B+M?< zdwX)$ZW4ze&y&`*n6ulAHMYRKxfQrj?3me#Fwa~jE_uofH6FEu$jLLEPc~z(0=Nul zL$SwEw=3+qhOe6YQn~zz_kIhufkO-3w@ z63Wmyw+82uF=rvqF7QfR@@153g?+uq&2KVLE)gaCnm@Ilc5miW$>u` ziODk>$D%(m6B)G0vY(jLrAH$_F`E;xE!wkIdmQx``x@$e+P;qSJnV-!;<(>o#ManH zC%$cVK(-T~w#`Ip);>0Ao8b)m$*g_)v$nZ4H)}t7pKZ2-Z`e3##*AtEj^Fu;8EQXf zkq_JG%dj6GZ9iigsFy<@J&-@K{+t;>`Y!T&-#L@#pHHnj2m4~y?x37_jw5fz)y9sS z-`VuE8SXr4-Tu*t)rtDAg>4dz9mJeHYd0ik?Kc}kRw(uXvl($B_GQOjk>x;r#UbAv z-!_dnbo~z7Y()BFA41=x{98~a$aD%Y4j7Klpj~G%S3&;HCozYFn{Kc-}5 zJ-yjoW3_x3<4|%7>InJ;J^nKIzS$YJS`cnY9<*0so{A*4nC-;Jrf}x`pxuf(qI`Q% z)|a4n$8VW3_kJLhzx@u%Ig5R%q!~8;)D+@4Y_%sHJ%@}n&~YJ9S4y{OUy7Q&`8ev+ zsmm?E!?pvBw(Ye2@gm08kO^BZcFf)mooN8<1QfBy0kIbbxD7B0*bdl0h`zd699!rz zR@jZk<90XVV~B5_d)&_M`?fgpXP^9zxg9to@wlCwTVZG0UNXCpwtH?3&K5mx zClV{{6A#*^0h(6u5*Wj>k(bRQiClh=xTnvXgISJw7<1w)?4x(gfp(3ZNbxuSobl~M zP2OyQF0c_p5m`;p&vF>ALO$o~lR8tv7F{IgG;Hy?za_9Onp7K|+^ z?%^SR$TB;TXAAP%1isl-7tHN|kM>#6;T5P0(yg%fLRRWn3U&49ljqGA#Aolwo9$wa z-9>tgoBeq1NT7}q$L&WAjOz%uC8m-83cF^G=}~XSaeGxfH$PKTW4554+RZigu^h?` z+F{Tp(dWYGyB!928hLXY;*W!OlQ?a+K%Q>o8%AAI_7;?N3Ve_EQdZ0@3CJ>s-<(XX zu(ziixoc47HpnN8Y5Ul_=1tly**ak+Q?vF~q^}pSuhZa{TVtPiz?5r_);Y-Z_^akB z%$ptA6?Ply=g}!!j=7Ki>1$@QIb#nZFT0`5Y5Vx) z7tDU}e00o|V-VYg?-(zGQM; z(1N;&r`FhyKVzAx^sN2(t_yOWPMMfnfMflftgAP>K(j49ZEpg<$9K(}Er4CXbIjX{ zvL(Uu(L2v$OkHF5XF;5_8(3lAIKutWp#P8IXR8rLj}##maHS{)A9PS*$E!4 zkfAjP8v*6+HlX`CjB{VUU>=+Qj=2qC>JIg5>m1|*Ps(xZwhLx!c8&cA@^4OJ9ELpM z_TzFb&3x<7o|_;SWl1JLf6z9!Q*Q7&5y_ieUv@yoV<$0>B7Y-=x<*`Uc7=WHnO9Ab zMZSn*J#lXD2Mybn^}{u3hY4Lmy$a(w>$=~;x^DbXzCM0R+DlvH+;QA$M0teqjK$xU zQp3gx~gfJ7?S^L!H^JagH^8v@Q74{(;fw`eLfbxq=M>_ycbvyK0DX>w4$stsaAd}!%_-u~SVkQE=Msz=3D~?f z8I*5Uw)^ps@0hJ7^51dZ9ESX-0BJ{XZaX%Jd=U3||9NwJ0{IS~H~E{UUjj`x@U$Tx z0gih62;!)V$3Au56sZ#?&!S?D1X~96-+uyio3mOF{%S)G{+>1V5y(LM?)azXWWV2@ zL*MN)G0t+VoVC9+WSS=t?#FX?8Zr!;X3|7GWY9+tzX|b25!a7;Jl<=XgMg3pn`Sft z+dK(55J#Ib6gy#lzafWt5w=BN7;DDOW_yahfPZB0T(JSP=>3h;QBWe&zcdxs_Gi)~DYXWA#& zWi>Zn3A++@>6`7&eBFS#xIxU?F{HV@M!?>@1NG?4;ZI@iXCI%#IzEGWyeS5nRkVpd zD#xz+__xdubgd@#RKW(I-qH?;DIOvCtln%7S=U0p>9-O!`|{1kto|I+52LmM7lwa?64Ctx$9-&5Y};JY$DYR18XvV>t1 z)d*GZut%7d{w9HXr>#v}qy=SQpIOWvnV>y_@k%6ci<35OQ?C0Wc;*@|3W(oBM%|s1 zYqc2Q*4R%ymwy_A3{W_X2t0O43_M%q?;@!T*sBgduvc#dXfOt6A7+W&?um;22 zkesqba<54rV*|qdxfy$t$$a*jt+6Sq18tWVdl$0lDQmg$Fvfq3V`%3i;^e|!@NPx; z2=Y0MG<(t3>=#o>*8i-%7kV)W9!HQ~uE$a{c4ubF-WPiiW8W0)?^!#OI%sCZjQv0c z>0=L@Da3OsVRFe^lqD&LK~n=vAeAd>Z2RsPJ}b!hzb2d zAHW!8IC|n;A2g#siu5t~($NP28v&z$F~A1E2EZ6#6tEGnC5}5me+_=)I(y8nNn*T3 zykYWpQI6t9d>r`PQ9GJBYA?%TEtZ1+C2fL``LS+ zuwN8+OMfNbC16}X+KaaJARznaFd%jL2*%k#z{7z3fYe*+avI@nfD?e*0Ve@dfDZst z=cfR<21}YV$ZL%~k)E+vqMcua+@}zp$*i%vp;PsU%VyWe{<2bZ$+cIl_@KEhHG{Ph z<$+xlo3ZP%3D_F2CyW_8WG1kNp$&+2M=D`va(D-jxK_k*45N)3LVZ4uxHiPm-WW_f zaW5b)jyU$^{qp3t3l^fIi;P>!vrJAuAu0!9$WcI#4c zKO#gN+c>V`ehBzemK|~QJ2CAWS=0~0uV+yA=~?>~8UI1^EMR@C%ejbfatC4qIP@YxD z+ZU8}5qX31Ae3kDw8d{sr1CMhv|197?_y`}|ou zoUAn)&8!`Yy|-Yiw7_PmiM3)~6f$E8$OoCpiKCXa)O7#HzQCBFWNN(~NVIWiBhluejYRvOHWFzTLrYsU?b5U zs}&zIx5;sm>kiC+2J9l(NVGw?b_pjj|Df!t_>BERdW}6bNBfNPCg(cXLx|&ArY?=O zcWSFC<~Ezo916Q3PQBY~HfK1t!cH>je{t+2+88mD>m|o7S_wO86P_D$^vm*@<>nge zZtGd(k&0y&IOo##)^-x-+|$4{APwy#+BDiuT8a72Z6_sSj*UdwsAJtp%&AGtOUh1S znW&T4i!QN~48&8{wq;Qk(9%xQ_RrQi$Nr(6L_4w-bX{>Lj&@Q9;@S|`X*h9iJ4xF} z|0`^x8I+rI2*($W$%Jm(=o^rECO2)dJvhI=kftrL*~|*8V-fd!is8G=BM7ryJ5aYm z+-V+0_&L@A;%JjH%@pFEMI7yxr!x+p4C0aqOFIjC_yEGxx4OD7EePo2B*N51+L8h` z`~<>m`+muDi;_8Kq7O{Q*l+k7oCi$W z7qo?FUp!!N4T7~I^pv&_Z4H)%Ixk>19Y%WE98uUzM^dC+0sH9y{FE!upAKSO0lNbA zm4!}HpJtGcfF9EJp#0Py+7z@ug5=$Zql4%0epLi*!Zyhm<$hC4T?T0 z;SShpicAaV`?~50y=%-@BVk?X_qN z(I%=hobuAwkW5U$K0RPXR9uqJs1MSl@jcVpe}3yV{jICXOpynDNvyNhGi9_cQA_?ruV_XhZ?d7_2>x`ZQ}KwTTqy9nzXFbc?VwE?gZFb3%O>YOpW z5#dmpb~w@?zb1qQp6RROI=Btt2w)eWkps^x@ejd|2LDqAey7w7d~^?*9VUD*bMWoR z_B{X^tl7{OHMtCUWA22W(@z(}GktFnWA)Y>{EKJ(T@J4ZQ*ul z_rGFiYOXPPZmm(^-Ao_bp6_Pr-zz>0d7CJ+(hZ*738f%sg0h~l!x{Q==>t3==jJFN z=jsMP&fPJ_$LPyFA?Nf)gsC4Lz)>HY5RT)S`oX!d4dHgcIA9xK7od?n0blM3=m34W zz$Z^&or%1qFBg2ln_~dyEBdpkBb<}C$3z|BSnl@aax8C2JHA|wdz+vaVd%$J!|lt3 zU&1K$<+6?)ohkL@(sxT;XFaf;mJ7#^TkLDvmwV9KiZYQViEmbTeYr*o{Q=`w3urRn z(FFZ#OtSy2un!^}OPBj`_aQzCoooZm0X%Cz?jbz;`Ej|H-vnCval0^%CGh+pp1CJW zUvekH)F1BsbY(H`nV1VRNHYhYZW=z_q>^7a;{tuT92e-z<+wm!F2{uwAp1N0WbE&) zfVA=0|2Z~vp)Bbfe4z$>vWQy_KWf3ho7)E;J=4(#2wgETMi@u1_XKF*^hl7 z#K#|&eZC9rDbfc``g>^~NxK_<-ex>&|E_^&+Sv5xa*pD7OTX?Wtas^0jnrlqy3i-6 z2W%tyekS8n)@jH`9iiWqw$Ewk+9|{_OuOe4!ZRuyM|cL|tP0b=n??AD3Ln8Ub@MRF zk%0_{5x!I$UpR!ZXbN(1e|bN~vy1_MF67vU^Sckk;Limg=7+U;(XMx$&t!l6_cV_D zI@TiL|I-=&wnm?@YcTeOQ_lFO$G#Tm;s-CiTfVpbAfO)8PJYojI~s+avYkdh?}Y1B z_<^kBS6HUPj9-TSsr%zyqosa_T=KA-8}<09>1z##KgVA^hSvUO^|V+0R`s;Ym%w-Z z68K)a1ip8!bmV27$}u43eCH>Q{vk5(mnU=cv^n8hx7#w#Ue-3?7?(s`B!|6M75^6O zqz_&VpHJ)u=lQPvgIC`j#&bQMYieM_g+#&%iS+zG;vDZoA@Le**ux?5p-GI34H%;) zvDY<X)FhOIqmpR^nMxjq#pg_Y~pM_B)a(>&p*7Y$I%Pjt`p+# zUOjpBw3S19icrSPT)Wp~+iJbSYoD)$#01lR&zn|=ev4_-;1QIbIx1yIQihN5`$d0v z*RMJI` zUhqDObxN+&?0{c*YXWv(0(%J8U|db*^4s$qe{=b5>tKg%!J04eK{Ngm*SKgGgu{uC zU@gFP%&h&>&9DU$cbIPgio|BDagaaaxqf_I#U(N3O(LG>ilR?p4#`1g1Gay5+P)}h z?l4nXln3c9AiO-W#asYf27c!Nhmm$`0{vfq4TFZKhV zJH{5+@klQa-;jLRY<`OTpeMfup2@>z%iOg62A-E=pS^vKdD1Tdy*3?vqEF8-AO~nf z@(9i&IW}MP7|M*emB@D!bcOTq1%#RR0$?clpm`231%BHhb1nQmCc?B28W|P|^G9e; z+6YZ5Or2>#xDGh#OH_19U7@_~JE%J!lKMg!6FJzLprgL@BfKp|-S~*qnHsT0>dZ3q zcj`I^F~Ce}hwLW_)N!K>_p1JcevP=UV@Q|mHL3T_ zsK>4MAeQw2F#YQqvzc(qpeVHnb?TgdO6adell3=Co`xI)ahPh z*lfENb{u4CLY{}?JIwfc$Qox^z!QA-qOa`7zIr?2xhIoC{6nx?IuM>jIF>`cpgSz~ zNxDslpFlkO;5NiFZ31!JbLmDL!<`5ZBh0aWfBZqS3*o6a{1t%9h2s}yKM9GuuqOJ% zeCEx!zQ;X@7N2#Cd;Oh=Vn(SIB7@1s;QB>(={f%y4?{ ze8|{mg&OXee*^PTD3)>NyE&YnF>~`PjkD)hW-(@)4?~7~=HCn7#hc>S=dZ)U73<{r zWl5aHe}viRKjy3E{p&Nc6DhcD6C z0^Ha<-Z}ikTJTtA0B>;4yk|ZF9(9?Q&WG^3)o+Q9Q#QWR_*&iEOXq7b$AuD8$3n>i z$Cjn0vZ02LAO9QRLk+(*|7R$}#V-`!w>W||TTIXfhwmG(4KNBAXV}EPJ)Ya~%(I>e zlWR}*MZP~l-#Pr~27Kzkb6jXMzz6!me%h3rwr|3km_B)~4Z5*Dy-6HeNTtcc8D}{D zah%~e$MK7{yOBcviKBAd`dzHAJ92o=;v7K+?@Of6Clk;^;J2raV!!t&Y-Rd1r>)=xP+EyAIPU5zsU zhb)eD)VEf_^FgeulX6|dvqg;vw*#^+I{;ain*dpVJlE6`!?~pt&K)7lvrT9>=?5_~ zC$aYpdYnOuncy=Ao;ZJ$0DZH;Gf*dOzUSAKW_qkSvxm%B8f(%_M$R9NDU458A2mRq zSdYt-2j%;O?P=ItEEDocK>lz|W`W}u_W~Nwr$Pej74Zzmacd>|DQ(y`@Q=e*;~I!( zSXfs2H|RHO%3wW}+iSXgK20bKeLgIE10c&zpAXC42*|Q00a<3Q1*unD3sQ#+@J!>G zXLGjZu;v2q{<#^uCUaPpt2u?Wp8;O+jF~c>bzL}n(A=KH*@u+l+o2Dz7IQ%($`wNS zn*h1CW7*oUej8Bhw}=7zzP?!gmZU=iza+-?qK$|3uSHv|9`sH-gFl`*A8S8N`~Oq) zg~_vPDMxSU@909g=^)7Qbdm%a|py>4Fz=U(mWK>gd=*Fk-wuS51Fq@%t`A4d-U z5`%j5kl74>2mKuJjN|KY{9(vzuITIFyu`iQnjGo@&#h?hhB?fcc&0y$XU*sj>mV*W z1%H_1@1PB&{TlR%@yr^}8S=au*GqM%3+?0Jxiu zw#DfWa?*60^cgw+j^rHuMJwz>py>eI52*bc^lcnLnEN_W$Va<3+$pRaRj-0OFrQ=>n_eNK(%U3g9{ z0iAH4Q?gv;7W@IzCUX?HCUIt#fwki7$S{(msP+Y6@#hXAMc3 z-+Mx(fqrPe0n<^hzccy~OY^F|WJ>x9nC7pLkDG_i=kHwkTs2af&s)CvOv`-oqYoGI zS?Y^;6zjfAy|N9dU%RWe%)+0a4tmS1Ij{Cp*1k#n1&B^nqE6+DXwRH{Fy9U*0tIfP}K9u}`^;g&rqObmy>whCpIXN#e@6C{%GIC7S?M6OYHrl&> zetNgP+WBLisKm0^u(v}TOiu^ z|1|e2$S3Xa7HOR0OyZ0K+84a@2GWExPMMe|!`P21&kJ#Wd40DgYT|Xcd6rvbuvSTT zL3eJz`r3XqcQbt3s1wQ*MqCblB5!;R;%l!gkB=b!s;kQ5YZ1TPhrSN+>wW0!5r3%< zeH8I``p|DmPgz~Ced5N9{Sxim80;*}HCV%1EhgjkFSKScw_tv1FsAJW`58jxE-h!q|{%qm6YcHiP-`=(sM5~3p{*q z7T=eeLjI>^{D5^z!kw0pp`C|0+~E0+lM6F4ewVd110RHZ?z1wWIU=8TScfGXw5B8+ zu`&`4TMtM`p9lP8*A?5mV9%>{+{N#1PVuZSZ3{WRU>$WS#*|F_yXQ0U z!*U$D_F6R#8Q=1ZL)(1Dp)TKX=o*egu$`_EcNgZIi)qYF=wIv~mt@(G597VqT>h+a zwlJS?yrF+jk44mHJywLpLG1q>u-=b#o=D~LKfzk=BHCQiE4`n@9-(_|m-ZU?u}^T^ zAnyO;?R}uEs_uNxbN|%6RYh4|1r-J500mTd#J(Cd#HQmBOC?&-iz1>;r;mt29A5gW z#1Pv~Zv7_?m|Op-qPoOWfB2(|u~{?ZJ*J=OxhSYF&C3Hq{;W6jxX&$biguhAyN9fo zH{oa~dtJc0}|2upC_HY0G?|t<9cgfegEA@Hbgzk*j*sB<~_MgUG zq4DZZ<4D?J|5MvW@pVc+{UWrE_QAMycIcDn)zo{}_ecJzUs3OmWdCKfCDi9an)Neq zB60Z>0WA?75pF~t!qjFS_!`oPSzhbmf!ijp)kGPpB`t z^4U+IAEGO#KB4}n(Uni4DWW448ZwoBe3yM{Wj7W@KY~~a_P&*VtSH){SUb@O#gT4d z&u7^48-l(0cv18v%U<7XhkM-(@;4SmW7Y+~A1iL5&f4Jj`l4u%Wj#?8eUe>3G;UK0 zJqmiFeJnO$ z_4VNkS3ku17Z0Hm>$m)US^S_n>uKePv*CG}C42BJ^a|PXi1i@V8NCM5K2qs!dD2GG zX4)!VZL6)j3Wz5&vr5kwh##X&cE7b5&MiASyDYnNvsss=%%u*`RoD{+lO!=kTSyNf z-)_t6J<`!Uf4ir+nlA-$K!J{jTrHd9X6j1M+m;hNZ^JeydqimS)U(!!e|#n3eqEj+ zb_oAwpN$U<*lONKiC5Nd(Wpx74YWC+H!64O?;!8nX6v2k?P*ePh1st6(0`s(^Y0^_ zO*%+AgH*D;;3S=5CTSC?bf%T0b);KJt4W7Rmw`jF1;%-9=2?1}Y=IWfimzHnp3Wl3 z2B|T$+hMHT{(_!?E%`Zv4nzGIw#o5~^6xdPotH|_yV5a)OC83`DgRE+_MwMl?kR4~ zQ%+eDS||8w4dNDcQq0$rZ67-ezXeOJ%M8lucvil2Cgo?zpG|(MoG<-I`C6Ms@)e`0 z`qG7zuQgJ9f^;zDFDvJ7U=OfX!CDCJS`*1l`mH#lPr8G8s@$i$QxCHrg1C}$jK&0e zA|k!X#aF|=7PuyY=4jTo`9k(Up`hU7*6ZR{d32UR$p3Wxo^1 zuN8h#sbAq2s#o!`RsF^9UiZ3h{qA*Ze~*4|{5|@;^!MoZ&iZh?f+6Q>F6c;Saxa&D z?RXQ_x$sOth3Ch?zZ0%}g=;3bNAItv!s%J)qI3ce*ja(E@;j!oKKLi!k66#D%@3xw z5sg)w-}F&lY^U|9tV6_U!vDHu;yX6oxM zfy;TGkvoO`oPOTx@^$vSy81=Vd7i`%Kdt0F1s$R8oXira)ec#H2so33$Bm1a6; zN|EZEztkbtvo7af&2tmKy%_fl@_WEQV>7}@o%iDYi?r@5;63q9e;MzI(Ka)3ZgP%Q zQ`A{-Yi5hTlzKYn)!pA^f|$5?yRUmMbVfW*{Rr%Z-rK=Zv)}YR+F~S6WOITU z_r}mhvdQ;uJL6X^YxkRJ*OcKbdh9iDc9*HjaK_%_O!n=2jA;Ibv||49?1|URHjDcn z6ZztPQY$^enI&Lb>-i@ik4&^x<@~7YOkl4!Skd#QmG-^Q{dC#W zlS!279PN({aTm*#Io>giICJg;*xC-Rze$`hw$z(m^t%(b*~A>%DH~eTX&PxGcy?#U z8RLLSIO8VrL_cRo$BTQ_w|jark$KQ0ouj78?KSbtE9QZnbrT=HeBZ=jmwPC_)Mf@V zoUL=15BKx*e__7qdhkU*xc6mQr`b5`(utasGclCj3vKH)`)=7w|BT-mEAD-y+&^O< zW*qVKn?`y{zMC_V$OK1ufBPLBes5%vi6pouqG4#ni=i9&m_D_Uotz8v+Livi7Zv=LhHO6~Sl@9S7WiQ8;=D0J^ zDkhh;`HAIi{*Nv{H+e99%3qnKZgpF*w{;&?zPinHC&x^JzLQ%z{UrS+ws!dsT?XD$ zS8Le)jSiFKUDed7;{B>uQ?6I5^!YCTr_Y?5)V^As<-W7Xn3-1YudZD0l5)L=o<29Z zlzL6nyG;A`sSacv?gF6y6tqPBU&{VZZt3vjjN>)updX?Cho+yKtf$Y-j7RUkwA}AT z2cIbIUcUR?$wtAIcV9xky2B>9rQNSmADM&xMrcEd_LteGN-sb1?qqW&>?hjTJe{}!3$#!QJ^70wq$uQTOI*t07lTH>Bxl!ZU(44^*U$jSS*Hg3K=uVt< zdFFI^8+VeBch#8LK&rbn2A;;p&hI35Fs$Y|0qh4ZA2UtlZC3klbP}r?mg}w+mFupf zoz%&YKk#%b_}y)Sdmt#&JwxhW_n8cRW4l@Ig>CC7tA{7;zGBQ|4QGtM*6^QthnzQ&)1pBwkulvgIV}lN_al2G$YG@mdy0*A zxITvkU;FfA6q>mW7{sh2rhz#~KN_lUF=+!&s~Is{m|M@HwqP&mu9O(C>H&VjDW|~s z>v>^WW4TOsX7$8JjP9fAEtd(Wf_C*IX4jIizN@_S2zM1wpZ>@eD0&3-l}5u=^K{ zna#}Mu*doDuY<$@*yLw1*0LYkky&kWv6%mw%* z*^aLSn(nW+m|Y9K04Ifm5%zo|ZM&CvW?)N;NoIS@I-C5IXGBl(Pmh>wS@1sAW!izC zWQW0!~s zggQq(wPb;@e41jl%p(H+(0u5A0VfQ@S6CvC}4&_9%NP z+{f1a{MLC>{MWYD|IL7x=v-YDy1}k2G%JsM!E^spdyV9(-H)^z$pux~zwTZ$OupnO zufV#mYUdo>#j@QGx0@cy+o$ApXZISL{)RKi;>g%`23wSa9K5E#s5mIg887a64!x1z z?NwcVJj?tY_73%A-|F4a!Cg4Is{`8X?lH^xJ+bdNGI(O8Z1}6t2kzj~y%28$*T|LdHrp#M;oZVPor%ns z*JG(2uE%zsGnBsp4j$w^TJvV=Y0X!XFCL|J)O}O?8LQ6QYWNfW|-<^xn9$0J&}FJA#a$x zVfq)}5zkToG31*nZ=dNo(qa0t?3>ITX5+uQbYeGp((|;bv7L$T6)k2E8D(I8o7r{q zd?VdddTG?|<36(yV9;Z9cT5$(2Q%y|o@@C%d~>_$zq7%_cviexoV=LRLo5KXZ~PAU zxBY4{4h)ec(VO74)@o#}BS!a*X%8O;?vj5B;^BLHiju1&dmRS8ud*JJt+Xc9tlKc- ztRsKeg2s8`+t`tiu_RwTu#h=ZH-Bdb=XBZEYZjP%al5fN>s{f|gX@==0e72`48JSa z$i9Nd+Ph7)dm!K$RqTJO(8Hd3DUdfJsl6uavhK_|cT=k`S!}h#+1ea(!NN|{w_tBb z`yXmI8|bqNI5bjMbfkX~bcEl5+{1pAyrXi-Pbwdvt>mXI zT%InMi@&Ll>Wt#WdQ1V`J8BIF>m`}eMP`-Euf2L0*;F#6V$@^6eqABty~o63p2!!M zyP<7D_5j^enXohHFW7dFKP4kbK9J3;XMT&x!-JQzXEp`>dlNb%ti4m4%>-*%=O3~r>J5B!Z(lL-haD5LkyzGiMd5;MF15&Uv9!fFgl|7Io6_PFeP)Z% zUh>TJ&C!WihBdHfm1>3G2e$ ze+Iw%FSi34)5m*6(<*Xnx6Qtxk3f%1*+#U>wcv5|*=E6WFTHPKJ38TjO^hkL_Vq0H zBqH}dkYG; zKF+G1o~(7b<5Tnm+1UaHGbyikh-dYH4RDA6@8h?yw!r&!SF|161>T2&fnX*&t$N~* z-jku7F!y+;UtnFL_D*a%@S7ZT(gvr#i9W-6rfv3aj{CRL;B0nUDGQuri>lCr-Gw$Y zkiOn{>JzxHC2axr`FWk-u;j|U%mcdnV9sc7B43-B+hay<31x24Dft)qh5>d$(Y6RO zz#8TkjDbMmxS!sBg(v0{XIET#SF;?E;Z=ziw z({a~iG=0oyZ^_S@V}D4GEdaOWY75Rdz)5pFLY~%Fwz@WOMtph``IR;8bz6-5z0y%7 zZ}f8KNJYM14z1nw7(8M6T+@(4R-v9vULS2{^IQBOPCN040r06U3l4qzzKNMuc-Ke% zsB+cx&}=a5J7hoYzukAXnf%QQz**=v^E~Wwr*XQA zF|fYK?^@@ST`%DAR%D0vBywqhct%ENpZEi4Cl*P&S9OOUn+i{SQ z!Ed#BWAQ%9uvL;5&xA7dcIIZeqea1K6Ky!N0L?lUj6t^V=P8#wqqyIri$~4LJK*UK zHc^{+T==PMsLC(<6af|i=)2cMnYXBT}N z1b22r10}cU-g(&>RaZQZJB}~V%s%SHp_$7ZbVbVhXyY-LpnkeLz-KGVS|X2YpIF`~ zF>&~I7?bXl6+P0v>4YBD+Hb?xyUkmyqxN_nIB5NsxU)(}$kRR#*Oh&4V+W+HLf3oJ zErGo~s(nsb5Bpqpu0itmLmR5eKa@jWVjoK%I%x2F(7r+=#XI^blbu}rTfB8DU&+|S z00jNo+|Lu2`Y!Ul>>$8JxOYIh%@f^4-G6Q6;lJ<>w*dcvhCJ{@ z9X6VRkxf-LO|=m&e)wniO$^^Go3w{)f~-KkY;tw1oALxpiS%4dFXz6-`xjr>|MImBl6N2nZrnfr!d@M`ztaq?UueWz zN1yZj?*z25FNoQAW%0Oi=`*0i*@w8ZT5&LMAUoiDvcdJ8(9Xx+N{~LRabx0svB-6YToLItG zEi+b3pmzrTG;pGxy{@&DOkb!S3w}59TW}S;WrHYyV>x)IbT56YK>oCD=%r+1=^N4u zWs8vB(H#%>$n<7tniI;)-8beKt9X$U*j$F8ld`+Wr#X0}%QVs7HVYd2)FN!G*nLDR zq34#pDzNRzHWx`1Oip#;FPPr(#paMRt0dc+WX4w*Uk7_YcDBuVU` z8w&hfWlJfOZm8dqD^+JN<9ShglDr>Ew~+l7IcB+GFMunuUB-B~Y#q`8_00@@_dsx! z|4npE-}8~YQn3Xsp{y0V$JAt`n^_dMB;mbZ#&p4_XtH$t_ z)&U&Yl$DG*QXIXTaf1iKfvg+Cz{>A3+7}V)fJtW87@Z-1g|%o~fS(VWxV|})gXX*` z|8B0wG zGkYYE1&0!rX@mY)_K{NG8uT!?-@M7b-OG3V;?&to+(V4?{;ls#3O8SV^4&?@S1TWa zzMmMSY~!C_I`O=L9)af??@*HWzRx=!f+nD|iZ;x9hInA=ir&4v_}$6eOnJeq6xwbl< zzwqvM{}Sg2{HD!sNQ+)lcFVhyqQT-{bNR;PW$9z3xi{boCLK}RYu=rV5Kl3>sNKKR zJ_gL&eC_)SZS9_*Z7Xf&Uft$jo;p?9y9eQYG%S5>NC9 z@kElZ>#S2Hor9Z2%#dhcjAz9R#Yv^BB}liB&ZNA7^lH)!sbY&$aJP z*0UB`$Jo;CzT#8r6;ts!Vk($_Z+090KlSw;-yu~jg{ATb&P^`iIcfM_EU_(D(MKI| zELPf^7)u}Y*JX$`5>B%odWS>*(+Vd``NzkNV%lmMPi$E(uu;_I!I$h#_y_MH&MnJ( ztDSL^VD44KbJeZx@N3p~_$PpY_~LY6(CcE82Y-cgvcFjCI{XJ)iSOX|@*MYwucj^U zi!JL2V#DIRV~joByLB92AbTWzvJ}lx&Ya~ht=GIV<0fW>c>F-*+~iF9zuG-T|ANg6 zK|F|J--7rZ@N`Q6pFL(4^%Q3^TV?d~z-{LyS2B*R4zOPePFmGP!M;v0C~pw=lRD|= z3^K=Z{4uQ4)*SYx0`ExUOMHV94X;d(=;bp*Ow)d0L zb*Y~OF?aF}Nq5iRw9i~?{e(6z_z~*Pp0rqoCumgSSD;52f+(Bfk`&liFvBPZ@)^D+XX!vNiDI_0^9Cu^g)n<6auZ z>`2d$ZE~QcDVViXEQC-&xjpBVXN6l7`JkHL`PR6*A!SQVXpIy^K zznXk%;)i`U@3rt}&+tsGgN#AmIP-c7czryU<$z6`9Q9jxul#aRJM`6UW6s+ti{P{C zc`Qd90yxNcqUbL2mF3fn<+@IjG0-R0dOLI4HFK|#PSDJlv_?Z;X*C}6YNKzBIco1U zgIA3*_HOg0e8J`Uk3Moy2Cc}xT95qGIb`l5MtI%1r^D|?UwR7}K>m2)#o!lPjbdST zA!qfi3uP<4BeI5XM_~)w^FIA%PERUk@PReNUZ7X%8&eBpClu=oz^v#guD@Is7@eCCRw$8mJ0^`1^-85wIIr7|p!+1d3yNT-+-L8VxDxP1F2v2KWD8sq4))>u?qSqe{HYHYnc2Qr`hK5KXm&qRs$Sk_V6g!c0ur!9!flUz4^H?eWZi;BzKwPGyr zHz@XK_rt^v8P(i47W1A{vJ9+L#PStbTAyy&-d~fb6TF#!L&R@xv z(MWzfx_BI3<~rD}GMXRbYwEyGO>Ad@dELDyjCb0a3&tcnzTzb1lODLkGg;Dp#-;bj zkC(LI3*>9Rbl=|<*iuyXdb#Xi7JhfHXSN&JYx|HPc9f)xSK>|N7Z|C0e+`<^WF<~ z@EmqecX8mu%dc+-7lGjlVyVjhlKvaNgRDYc&u6e3vxnF}apx7{mwVyKe4EzoHRI%O z@Swfv@qm6W$?+Rp7p-o}D}OAY)q#Bm{M5Kauf-?C7ozr?7vky^JGFbF)eO&{XVw;2 z6Jjwcaqk0nHkkgW*!vmA^XS4LE=9V&;)k`j>#bh!SiBwjLE6Z;rPr@C)Q=$Nq@Zb$ zQDc)gaC;};`XjD1i@%qBE%|EKO6(l5QKM)1HrUAIeWbd!^4_2K^Q7UCUfW$3%avx;DS! z@64c&Sk{nnDYsIiMbWF^UU=f2B&Th%xjPNK3uBIU2E1kjpPb_PHdCf=TMDApRiRuW%`dd&2*t zacrM5jzQ{-0|V_9(Phc3Zyiv)?4Im$@(E4dy9asJemz8e)zu!8e6RScndE6KmH4Xy?M25GN1!&E<7}QK6I5)# z`5RhUOTl>s@*g-l*ADQcj(RT7-RUlqCe1PDJUWW_|7L#oyWB&^Z|z0tH@nirXz_eF zFIk&!vP~)5O_^wPH~ES&5O1us>!wUP@)q(`zLnq4PbtqY+ZV*}dAYD$e*OxrQ6Gm~ zXglxE9|`$NALTn&U4P;HO#Zf9fZMwwwi&#p)eL&@>;?18$p^6uBMXY2MxnoT;QQ-^ zS=ejvO_&h>MVE&cAV=NNU?lgaSid-VijUTr*FHx&3v^gAGCE@%_*cOf0$V&XXe3<- zVmK`JS%Ec}O}T8I(i;T-0x-73W1oYz&beD#_l4HvvPK5@U|Dtkbk|2r-t##z#jv>Va!-*VvID$ zYwZ(m8tJ@EB!%oxo43n0`V72EHhS&F)#)&1OLn&yd$B^>o2iq(A!mBPmD#MX zY!|W@D0U>2MOGQ@DQwB?5&QwqdJ`ka1UA1F+j8U)(WKrBF~G88slRA$kJ*|-*Pvg~ z&m8?)X)|%qKIunpX~SNr@tiEl7BeTqxl8OYagXQ5R$uaJ4R)?|1?oVfYq3{!f8{Py zhpnQJomSfOWT-oJA)6_Vp!*vkotI56o9Fpk*ofQ#6UdtQ0hP*cS8#=UN&O%nvUQn7HM;DRo(jCMz%2rW<)via0=Yj?g-qrw2&GA+8^7%-X_ z@+G&+_b6IekwFIR7Gp7=VPM#gA73^D$-|OC4rk;)a3&PrD&LUezeM};m)pS})jsj) zx8j3(k@r^Oy%fKzcrTB%5+5|+beg1#?@VRxLg*{Bgx})tiqlEB7h}E#vfE96VF~^@ z_H2f6AQuW3>$1|}6!Qh_fI}nYTMMieIb^15@wR|(1L&R&HZo;e=Om|e{n5+ zt@PlH%zu#kN*j32-||YpKk^;i8vwnwa<4EK=zr!!Dam=`G-Ik--Ra9OZDGHZKl;H{ z=O)wnP;auV{oMW1Yerv?ybGO8d&L6l0NwRhr^-G&>p>ICyc785;x={#_PtA4#2z&% z?Ngpbuk}1rDR7>lGy{K!j=WA?%ZwHeu@A$2zS@l34c?JoZyz&?`O|q9$z+NN5p7VP z+V{h>5pPwD^g7@n-?jLxWN7)WMWeb`a4yq9R(8ZMoD1}!4;xH@a;=5<)ByBBym5&G z-It#@>r6BPAGMc`rM8DDm#=ZOPjoVD~b z@`&dzWxSHz6zine(NM+=^K>_E5Li_lu>lFD1hc(m6n{G$cR-gqA#P=LpCMnUI$0~-%86OGVVV(xKcS^ehi=k_vY zaECsKNUNzQeVKTiAnM%&E%3-lG%Q?f&VH}OvNPTd_s`3B4uxjZG{iQ1<`>f=Ii|c`yy%UvF-k9yUgRDB^mOntb&QU!_bP?jN(3b zK9n=-T3v#|>Iq|1}@9=HjV873JjWapOfetnw{0}-KsC6cm*bH6e8Tot$ zo_I0HuQy&m3#PdzkZn$sE`c5-HnjWN6VhKS)_%=;_!xbupUwH8pQ7Zi{ZE$lUqd{* z@C16W3>?w^ZO*CQ{ifc2E5PA8a9;aW_%GX~=%nmmq6a6hV4tO&i9U3?;YSw+F`h~4 zO2<;0<+M>f*{!>=mFfGtq8EdYFEkhGWwE8Jo*U8=?Lp}+TDOp%JY=HTx6BA@-3IO) zqFlHv-Sf>`;CKAi{!OBX4$>x|C*YK5NE@`oBd@|+y0K9l08lBzEmi~r>Wn^ny)3*dTnskexKQi z?OZWuE6Lxvfmo7qxkFyk^7#JzOC{A&>{7jZx>Qg(cpw}K@BrVOd~#2?oO+|#n|p$ z&UTTP6py)6HoDQGWPtI-&?SdhT6c|+U){*r$EBU}JKz(ZiD)(wx6u z)=EqPF@wZXD2}4L@nRfWn(~7l`P)uWti;Vg@6pRe7GjUCv(ctr?z-EUrneAwpH zOlTc+&;2j&<6KO3ANw8tVVI}O9SF!9y5l^NecLDwJ+P@Ee_H8%#lU6)-tJ{z$o{0g z5#elQ44#`TbO*k&3wv)1_6l&inXz=QUSN{WFuV`gKHEn>&{=E?k`Z+-B$-{!yWn5g zybHCXMz(70`zX&r92)ht{}q4y#$wONwk4mbVxbyIMOQ`F^VhcrYoc?d0e!vKMgmnF zE^<&6=g8r`gA3+e@L3Ff9bcsf+|d^+`lV=uc<$~yy3Ekm7a7I##0xry%{cSOBV`*` zenl5{VBY!kB9kYr$Y1&BHq+m#^E7?%$$civUOAAXE&XohchVU*TS)`?7{0tE$m5I! z8TY#tsso(3mds#*iMZm;U_mr_=tVY}Hw^}uwUK^JE)RpNhl z+g(QZybHctk(Gy1*x)5ABPU0!o&YBjHs@FvpZ1z!lmuUm^G(K?OA}YjSYkXs&u_&v zZX>P4$H{iC`9_{#PvRR*pkD;|2kr>}lE5%1r@iKMTyw_;nr2NzNA%tTd6l`m@dNh% zf-Zk|7M~{gxhu2a!hD7t;{4Gi;^18*wa4T$+A{;3^&kaKgQTI~>mg)J+4y%sxMZ{rEBi%>6AO?-~Nv?;#tqgUcTHYsJsCOZD*L0H!V98kY?gVsHXWFIb zX$@sx9wD|0U8OVvti)G>7&7W<-i2DvpLY}cnei)@Y#uQliY2SWp)Dc?&B6|KiRK90 zMy?{RjIk*u?Kk4ep!2HNLi>52A+AjCBUWyP(s{&{DP=zL?^R;I0+`b7|L?f6dgiWq zYrK*FmbkL=ovJI!cPX~>ePGAErx>x-H+N@dl;%tNx1n(fE4(L6_pTNx z`^84~DRcXmkN4BY@Nt+WK6MPgIo{Z()O9~Lx8Db5pH}zd{eJq~es`GJ9~HNj&kynmg8&u9A2O~rTBH+`>p z;AYM{GnQS?;Aj6!`FL z2T#K;bSuwEY(sljd4B)QG0yc9+nYf*q0JAULoPzU)ZK;H9s>V{;^v}dzA^S7$ zmID(U9dlM%wCnlP)4$UZj zS8L&Yx{pb|Y@HvHZF&=F#Sguf-|~eoVLo%*Xfd%2c|7Y)^xZUR8nc>PZ&7y(OGnrF z%{%2VWn>^`TiH27HdY%*DaHGpu!Q)f&h&{#6^yXr47QISmqjxUoBK{TFW2=%c zt{43`!#L$T)Hy1Rf9l;Q8o$QgR35v0j>5~S_m6BS&r^11`8ivuFZ-5oRK7OoDd+lG z2ba5CBG^OG;np&iCY$|Q_N6YT58GnxxT|w6YZ$?&Hjh;LT?D_Hd{`OwrF@n{RlaF3 z#EG$H@?%Q3kY2HS-rK>P0{xx2$UoGd;I6fKT_$Sh1D|y;N5yjGMvC&a$Y&JKmUUHh<@(V|13?<=Mud#1F|JyTjlJ>3N;f0tsfwQm)lUeRHzQeF_to?*Vb)9hR5 zp6FaZd$Xd4_hf!(6t`Ay_6GiLecvp&A0l&laz5`+Txd(EJczp6-+D@Dokw z7V!2Y=LYt;2Yu~Rot@d>fG3PY`jpPl^xyUKARez``|iJscVn}Wou>Qi$1eD^gBY*O zUej~i9%G@az4O8z#zTyjyFa)KNcyzSl*h1Jz6H$dQ_z$Tpee?g(E8?y=N3Ka{?;NB zOAWDZub3)lbzoOdxbGO*)`NRblbp$eMkaEeZ#&@f=jVgV@-cS@aoVygMABvZa5mhF zI_nVFp{&!BYk8NIf51ebHNrRf@8pZJ;@G&rx4<6-uE|d;Iw3u)rz%Mt?LK0CI?Ui# zu*w_0cKSW_3Df&6*5FR;1F5~mW$cxTO|b>NFN%(SB!J28qI_q2 zUIpKPN$#c>{3Z`QH?<3&79=Qk$q4T&w4rA@cm?f!ix|F0 zq8r-II(qoMSW_#r%2czLrz*=NPcSPG{!xL>&Sr26^$yd2xqB7A(mFZ04 z13#~uIP%=M`S2Im48DfV0Q*|cy$vQ|us=Hc0$Qv6Z@KV9&Bgi(KA5AX&cRko`xL3@ zhhTFQd{8WrXtDNjg&y>#+5_C_apng2B72~G0E&A_>vvZ4R(s^)Ire_1)$Fnt8TsCV z_vTj_`P$?=jid@e%#ioK=fA++w>75UaE9BDq&+hYI9F3gaoYi&0ZYNV4j2p8myqh- z48gj$Dq=*h<2HA6RS}B0xa(36Ep7^e4vFw$D4d6U$(7$xPv7NH5 zm^Pw4igD>%5XRPshYj5{Kfqn(>s}_&`dB*TW#Yr$-R!pjzQq6FXP-@-G4_D$`7zqh z;8}MK==V&1FDb)ZwoB1~Mmvn_QcOlmReM0QD|EUSSn94beHT-)*S$7pp40dXz|p|> z_KjBfD>mf$#7-hJN?zRUa-PFrQ?=)tdK;Jl`{?SNe<|>lJd&pEX#SutIYIvS%KZY5 zXNc{vYK+cN_HcKxe4R1t6=-6AFz&eJ1@e*3q3Il^4*4%ZJFZnQ#J&_AnagJ;$Ws*B$Hup^|z1QR$bT0ZLE-9X{ z9vPtuywTZd*}H2-;t+YR#9i-P!Fd^YSppmNO6ta)e6S~X5`$fp z0e`QAhvxSbBksks6yE_Z33y{o=9m$$748(C+Y{_x3;U>KcH0Jjp5)H$1(AsYaXeAm znRuIZ5MFhmKS(Z<+>>A1ZdO9?6!sJqr9DS^->b`4V zKZvsaqTxN+1~ax8Kh#aF*c-V|oxXIhd$b{UK@UkHmyTldlP=Pez1^%Mt>AS}_M(qp zvT~$zptv;0xC}8eImMAZWa@L=9hH8;^mvPd7)PBstIh5=VchXPV}YZhVXHmX4Enp$ zA|+4r(sP90{~jB4Vw+Y>=vCF}igpZ^@!5J*pQ{VdNS+l@szFG^#CnQ|Xrjh^J;xV(1G}ssT z936hkzrpu9jr?cQMWiQ+Muzd-#1=mTKWFdizBJ)k|6>bj2hWk5b0>Zi&Xxr}K4`=^ zW0ri;dI#s(@twG|iQ?<4%u@@2lmJ#_N7iyq47p6h7iOer|^KE8Wk7y3B3 zV~9Qy*<&WZiuh>q6=$t@Ny(pzlT08J?RvD!)PNIOlOcFwGP5V39d9g#Zwv03(PC4U zbN#@h0{1G1GfVa$a@A{QrGxL}rcOWODt;Ip`~QkgsGekzxUQ+!TRwrg8{mb&IN}~JjWCbi`iRjP3@dZI)c36s zv+@5#e`JjE8R?F{eUD>frS3j_9K@NF9^8cQpjr<{*wVFKjm4N2#49vHh=e^g2clT=zqAsup z2EB`JzWUd^;d^tI`E$WBkquqjiXSD>_WR1>d*f|yMK9_cixO#tn^0wCQ6xu{5Ti< zCiJHm{43~3ZRalKJihAP66%cVQ~ILHM)B=jP1)!T;4x`59ggSXd3?&~ztVRt{RVyF zGn!@7=VHp_GrEQ~vU@I!_oCnA_{YxU)8B>j`1}se;~(ej{P7Ft@hjh2TwUNBC9H8I zjm~L#6Lp2}nmNcF=YMhOMASJssqe8wGiN6CJ&_3C6N$Ult+J!C$U>{W#B5ZZ`-mQhyP?>8LoJO8)SbFP91#?3XrW zsqi~C>UWs>XX(ewhj$2Ce9vW^HQsL%!$*6|`YLz#qRRxoA1jUr>H6Sqbc^o_9^m;P zeTWyT?LnRo@ys_8ONZ%4X9!=XFU10?ya5?TF^h^Lv#iI$`?#$2VH_>}Eu~y@E>Nzq zr)e)ckH&ggJ>S2gOmhfe5}8%{m3L23@{Q(P$Fp>>YEs3i$4TR)7OCWY_4n&6F(~n& zvmfL*@4Db+WaIA|^`*Gp#Fuvzk1{sP(swKQ-Wf9ORN%zv( zg%d&E9YNk&@}x_g4)X3YXYr}2zjfpXF?`TqeN*aZlq=sQUvf*loc|)L}5m#|fF-E@ZO^U~rY;Re&n<#mk$qV#%TX`#jab(HUoRh#tb2J(JI{Z!ozY3nI zynUp!@1s;(Jx169xC4qV&6f9;8EA(PB^QOrT^$?Q_{_4rTOBK0R+NDn7}w9xq1H zKPug6?K~TCVqxqLeM%lz`#|@ACamPSVBHh0UwQ4$LdzOc`rc)@_D3%ZzlWzei@s_6 z?=jAUg?j>;V)(5)u+NY#AwA1{M2AG1Eax`UU_-C?9m%&BPf&($s&t5F(KXQo&0nV?4@^8)W8)zM-fyuPcl@WB9Dc^ERIKt-xV^Kl&ec6x(^$-qd*vJJ_GM1#!lw zbM%#3VSbinOyo-s&vj#$w{J%$y@T(<+-bgRZ9luYu%mb>X~b$OYJH_ECaz_j=~ru; zaPQ_`0M4&J%Gn$jyIJ<7fL=P_Uw{k1qyncT^(*^lj`h=$;!&YN{v7M=QsNT6c~;(c z;$c@?)-`%x;!i@HsI>byoe0KIZl`@;!I`P~dVeK<>KH0_<7mC|3Cr466@Cxz!!LjK z?`Iy|Q5@7ai*wLz>t$l$iKn-B6sLX%Z+3ty;;ARG$?+Xo;5H}wqtdP5m6bj+X=UG- zWPU}P`RIFM*YfSxCGL*mGpWBTeVhAQuH_rB-?kz}wSC6=57?|ieA4&dR8R*mgM z^vAyJMzY@sHq%orD;6Rv=src^Qv_U$%pI7F+^}=9Cq2(Z=5`{hwiIivRTIDBy_~`Q z4ce8n<3+_>RA4$=_?2Rg;4Zd37MO*ngF=zLTF-`oO!VcpUr<`QBHHr)_vH_-z1Xu+?7bYrm&oIS^H13$K`CyO7J^FIjECyHlDBhU!h`QBqK-s8E?+EJWg z?ZWBQ#SP@gEY8~&!e^J~dcK31b6+a0&4hXD$m5J@F=25>MIL=V7v`@e ze>ON(V{O9*6y~iaFK%&`*kzAsycYKy0b{)@Lz&>AxyWXzyk_zQGvx(#fAUt6CzvWv z{9W~cO{szh5paGu%lGWrcX6u=c`p3c<(6Fdo%$;KVl2_?jN8hy@4<7$`)IuyGwntF zj#IDFr&8fof;`nZYX7F6y&=_yeAEa1?JKoVZ)Uo$l%q{Us-16dtE|1$%5#eH+5B$f z_e|0j(ixR9(o6Y1x7xR*iHEd3Uwy>s!=kJi{1$zxOShM*?eN>`4fL0C+lw~u(D!uZ z$NDn7O5fD2%aR9d$^nO!&^z=p93F49dzXI3*_efOR3;9_46;lGt}YW#wKg@$QP z75S~%3HNWa`^T(X*k1(MK9Wjs4kZ_?QKc`->Il}oAtgQ-%E;VT4GenNkN5jizhAmJ zZdprWzxn;rKPl6tWzeN9;EL$BXj7E&MP2<4W6>l-ROqWx@tz6}Xp9wJq~Ds`)UwK4 z1(!VgRlWK3&k!nArNFCA{q{~PH z`G8dV*H$mI$@cNvPW6{`C&bb${Jqd$lD?+c)Mk&n3%t9{%v^sd0-tZUxt9UDsk;j5 zvJN(w@SDKv zCCkK^zrJ06IH=Q%%~0R#g?6QOl;j7p(ru>N;3I)9Hs+ym2Ktu6*WzIlqup!|KR{03 z1qt*|(z7SZ^z8AE(X+?Oa{5;T`Y3uPx+YpCxjmq3Q)rs(=#8Hs=YUsL zNPm&3v}Fmj!!NwiD<2ahYd{)m^eFPm|6hT}nEGbQ!7m^m0<| ztqAbilI|`wyWJ(n>n=6rx=XP_CpOn^#&-}t60V>8&>5cPGqu3S2J%<4=PlAK>1J2I z+lgK2FKs~1Nr0a&X%ybOj#RSdhIBvgg#Vj<_f6Z`d(Iy-SMk1T+9b>@N1<<`7rG-%K1#_quag(jjP=FCMPjXZ< zI+*%eX^Wq2gicEivI6->#;Z4Tbo?=tLZOgGg?1*iT}qK`c7QQ`YkT7CF3#M+)_L0UX+THL8w0kPe z-d4qp4akEz{%z6i^4WyX{~up2>P&*=V4ulc#5FtBQQVZdsApFFMYwM(d)5O#1Kpqu zqZNNzKA%v2e)7*Q>KzsQl}%lHzrqtWmkK{bpDup*KYssgMTg!2KM{=|cJ3((mokZe z%2O(^ScVNZV$dcbLQM960Bo%XsjI{EpJEX@Ab_D1BH6nD$%&)LEI$hBwIdf!EB%}5THvB$Q{(XkuKP&(K8NW}Lf1l>JWH!;C~Zcg2+!I+_=AE%pl+=}d*-GuFsc>}W< z@Nn5^Q$f1ESQn&^6|2SD@sVik;;E_|S6SdUaf=qef6aW9|7+IiSLNTo;`h1o?{oat zoK@#Tepg_%1^88XbtO-6AJW6NQD5@8Vzm`JqB|?}tpeGGcfczIH|S<@JMa+k>|Fc2A)ecLelLsu$nOq*pEc-~{O;uU z2Ziukt6lt-?D8V1N4lMKm{k0^F&Dyn*WY;|OwW@cV1U4MF;3(IsuT4gKsg)+<8W?1tjZM@j8R zi|exRe4Bo3aQZ21V!`hxiW$;~y%GC3yw^qd<9P}2(7hmhZ?ibPsTCVwSAdU_A;d4L zY`!JNUUv%Nes6ZLuUnl($wL*sm(eq@Q(etzE6;+ZaInG`)Bg-#Y{s^|gnv_IS*PRN z*c#B@V4{-$?~oxwi{j8;9a<1N1yq*(LNkl{eEx7W=tyC9wYh-qbA z4*Wr@FP~1|75ngWhqfOq#c4Ea8r>MIJXEVQs|4HMVRl4gxKm(t7 z!SBcn5F-e_+XqZ!b$?NJWo#3i$lJ4yGx^7{AnDEUK#v=P>j&XQ%T722b zBi5LS&LF;@7!1id&S#&QLD4S&L%9OU%}I^f~ZGh%3N|JUd~*}e1wO`XA+8&WH~FIbxq)=@U1uFrM& zZ*LafG4EAJgLe-;{GM5sV+?EGGfO?j@W^{+_bT!j&j4vVaPF{s%^u(^KfJyb8g1$+ zI_|8}tq;VJ7giw8jX*~_13mqthA1@hc48kpOAWyOwl5-YWGw~pxU;jwf@N5L;$lYslzYi+VuYHyiyy7#UBr9Vr8pGPe^0%zUS}`=j*zQB#a_IM~TDouTjDxt$m{!K2;GpuJ+QZ+#}l z-L&8u@W@%;Fjkhko#watM`p9vIOpH9pxw0G5doKajAE9f4f*1&pNke_@LS7b9@a>4 z-nGmFSXr?aeG(+kv;>QwxQm6)C=dtG{l<%Tp`G`$gBqe8Pq(=$_^Mbo#I zpR>*1KYQP)^Y8yl`chkmwvcrz!v7}dywanwFzti(>-jx+fzqbBFg-mZOgG@*Q~olX zuS!o}7p61jhUvO_VS08^m@a7y)An-u!Dqr}Z*iC|y*^COmQ(lh;q&TcVY>DUVVeKL zFs-{aOjoW5)8TU3ct`mBt2@Iq{iQH%Y7WzP?hVtr`@-~eIc?YyK0iMcrnVQRhyIr^ zoqZ@wHR=#>GD(I^R}Oc>FII`=q~*Io2?I@?|Ax0 z*7v`5#raEXpR_(xh**PXzj^-k<=**SPyO(`^>2$G9lB)Y`Ga2lM?d=ao#%JY{I2!w zuij+2b>Fx4{q+Am|8jHgqbDEt&tLcJxYbkln)UEM{LdfNmiC_i^S@jC(RDLUTleQ; zR{G@sZGGdL&iNZBhR<7HI~LhED{poD;r7V)|DoahuNJ%+anF3-`nSzrJpbm3KeBFY z9*_9r&F7o{Xzcvgzc|NQ)$N>r_O^O!^qHTWPrPuw_59Dzov(f2yVlZc-mngzYqnax z`zhCBwbnd--T9G?e`#%h`1bR^DE&?3_G#a<-um!6AN}V$ zUO#{Pz<;);FW!8<^x#vG8=Jb$U-o2;b>qg!`AlSgWd7iF=TrOt*T}Mm&z^t$)UU12 z{6BYD$6vkgeEs#mIG_3QFRbtXc96!Hv zMf3T;@>Az`WY$NT|M!2i-Wq+{y8b^6T7UVk{^6s)^fsOU+`rpnMKAj+YsG3W@?UPb z&YFMQO&{Iy!T)A`w)2;fu|NMi%l_Jo^GmPVWBv6{?y~;=plki(FK&)};o%po2dvfS zw|N_^buVuH=>H?`JO8nK+& zQK?W-QE3<%nMqa>QW5F++}HgN{O1^J6GrT?;&TqQPQTk*}eoN&It?Ap3lDZ2BI+DQ_&6LOMX*%q&%pf$HOPNQu z2kzf}D2VyhK;1S1zo##N@5s0OSLy-GteeEww~t2ul>*jrxSi%WCh?n%7ijz4k7x`% zM28G6@XX)A_|hcLDi(gDkEsjjerqWX9JxgPTaJ;-VJ!?ven6rD4&3mLE$turg;n*0 zQDN#twu?=p*=dGonzM*18w`2T0z(?bPm*j=85NE`Ok2wBNc_%Zyb>;=A8JRq(&SwF z)BJ+@OL^h%jwlkcZwrL$E#70bh^XF+Ytr5RN?u*>mFb;m`<7309z*x5p4HHk}$QX7CO2ec0m% zo_tIlod;^DHMJb?r8yVN5~ai9qRdsz7_QnK+-^xIBA)v3cWZJ##KxVV*%lhsxn!reD@M33C@xG{y?4JxQmZx(G|Dn@H= zkK#cd%LNgL|G($|?$iI%qtX_6=2^zHJBH7H9q;Li?k@k7BK)C1Yhn6=A;8+=dtAzL7c5HRnD9Oa485((Z_Rh1s{2wjI_DL$U1Z%$x8N>tYoh?MM@@fris!5-}*IAx*-@llu9w(w!Z<5qB^{w7!|YGV1KEA&)uC-XP(r(DeqBzE@%sSLcvzO`3yw8b61 zmJzUC{u2L8;xL{(;Xc4&uzEIHs%N0tD~p|5J_E;mI$5@JKCPeIOIrK+|Jwe&+ENj8%LUn~W2#Htdmw zAjjBetuWsjg7e-K~x*bW3RKStv{oF852Z2+~xv!HhD!P+d!WRSl zZ=D-w^y=VmRYCJl3iIWopOVDe45swF3UjpHGnL-!ct1{r$8AzZm3BD!dRNj0-HCK- zq$sL?Tk=6AUCghzLP6UWpka~>k679cg|KUEuct5m3=UwM?F%XhZRA>NnFtvn&iAC0 zQhvuX_Cr4g>KEtGg=O=p`uY^UN&vvB4UCxOAxD(muc6Iqt<;4W{5E|+w&pjPboocz zvN3|T?H@=-UFG>D26X$EB)_Kq02+(Cd8W;CylfI-uY{%O_^j`=TL5gW&A!vLC8jiY zT@gDy)|0liNwdug%OL#9k|rmeph$s|F{ET1&HSCjYQIa7;)h*4w6hLJ*8b+MTmto5 zp0H2iKM-zGM!Vnbq$M5~aMn;AN=>fFot#H*6;JrS=qSi;w}jTJKWKb;hQGbGjf(9b zv)?ROt-{}1j)Zz999>CCcIffh}2XUxHm9;K9x=N;GKYV#gteL*ZHsDxr$hhga& z6&&i{$`obnN$eBeXYsr~H+Il|V{tUu&LPED@}yK@MT_s8B8$d& zS{;yrBPvqZay*(UeJ(RI8{pi!OZ<7jUs5eJp}&U(>b;{LFB1JscFUjRRMsUrD$_~= zXant<#eDl4V}yzhr>ul>OgwY|K|Nt89&Drk$}{QA&;j0GxeC`6UD+-1PiXd@!Zrse zkZJ5J_Wa~{(rH+OV^V$CeQ*-Y1|E~$mqD)bLl1hleJR$}hK9AgXZHE31dWAUe_$k} z|DLDXJ*6ak`v#xs{}|ttB4}z~C>e(ir5(J=IrNmv%n2rh93Y?WZpl7E; z<|7PQNY@jp9h63V?IJpUJclf{?}43&3EJyR>Cx?XOgFBaM*gTkivKCt?Ce4A#lM*0 zp@`4saqw%aM&tN5_&P3%JZ1<}kHj3BJX!?D|IXy&CjO=e6~0{cU?j2x|6wKe1%{U3 zZ$duf_3bx^FnS2-gVVXK@ESB!bPLwSJ^T%6W$`DC2^S6te)q5#t-Wl)+Rz+;E z0$Pjy<4S=lg7Nj`%3p%WQ^=hrjPyaY-701o{+<$_*79r8mXx_w7859co~Nr0-)c~&OSGaQ&FQgv#QX6TZkpI{`H15hO03D-C3}5 zlVsawza_u7v$z@6k=9CS@>APJKgJXa6hl$$((Hhlc0TPaEN1s4M`2t38gejwgXxcc zFr_>nD8p>f8ooeKi2Q1T5{E+G zBkzluc{cowSUN)P$iU60oZjo)VMCWGK;ld}SDRl)$=Q& zRkZiF3G>kL#+_#ydAZ~rta)F=%l&om_3v0_H$R#>NRslc){{+S5N=;_N4sM(Men!7 z*#ryPGNFK`%#kEVuV51H$U}eMVT#CBgl3Be?XIe!c=H=%ET7C{51P^VSSv1iSPBvP zli8g1e^Ahp#x9GO6#t?H?tc={$gAIVTwi=U z(T)d~!eQ|;mma1V)5_0BU@9^|S^CScv$qI2lTJ{zTo0C=Fz4U>57OwO^KAOdQ6w_@ z2rhdHhZ36}{ixSL39 z-ry6|z0KrzDF>syrx^nWWzfUj zNNA2N6Ymls^WY1-;$IRi^J&2EEvqnIaVBSbYAM6Y3WLffkSmx?CZ?_kZa+rTY$xE6 zaXYOL=ryg|MY(C~DJ0HW#Ln4!(x`Et*^T#S$R(qK?j5~`Gohc^$m%t;_rhf6u=6d_ z_Ij|y_p4F(!h$VYx(p}gxUv_0N9cG%1CMhnLd;fT!Bd@4aKw!KN@6LVKjOL)KQXb! zjZdi3$E%V1xwq~MYS4Med#ql-d(>(kIqE$OxjJjz|A|Vj=(AUA9WeFTLw;__6rAkV zr>e7ov_NGRf9X|<-RU>zO1}OzuJ#Z6k#-DcLuD!X#ClvgzJ?k-*OKF+e;jrkyTT9W zl+Y9QQ7bczD?K@ZTUg;DRB>dU%Qc3oU}z;-cuGUsYQ}c_F+v(5%mun$L{-n z#g>$j{AT%8n$~fGw%BZoWG1Ol5zAt&WqGSk6>Gd7rVIUD5@o9^1h_^ zROU7wZcd96yry#e$usZ zj9YvDKyN`W%^&4SuP$FgycEMJ=Y!aA)ss{ZiHmbOA%5cqTkUY4G*`*PKynUFe!dJ7 zq0=PMDM*PF&7}vqS?t!N+w|0=j`iKFfqaT4uM+=?H;0$ggU#yjOMJleH8@5s@nd|< zO#!a+<73sA(6}`LT=n?`3GdT%G{}gGbstUJlvc&sQN2qN6A^J479iQ_3 z@bCV87Pj3J9T$|Ttjd^1tH|*adU}XHH54tij>N{4(Ye>H_~k9majO(si>4AI3HtRQ zjHBlU#;yv)!H?6i<@sJ7Bo{>&8(XPQ*pzzD?c<*}n^XPTUVhWtidMZ0#e~sfbmG_w zvRSKFK>?>WQmEAe7EvHfZ~nybv)4i~Jf#r{v) z!ojEl{}r3zvdL?9L#=`g2_$mFm!7aw2)C%F%1&c;$Zswl@4rs##SExIsF=!Kg77?P zCW~t|#I>cb_-4x1s<6;8e^4Y z$mif!WDOMXz~+-UzVn*d**|c?^R{n%%f=X#sK4W$B|oU!>k})V za2fG_5j3*e1{>s-^A)4l(qrLMY@IzPN5`iWxIT!StM`-Jq1o6aH3`qIETQG~)7Zy< zn~}cj9Ywx=4zM!zdUXx%jRl_&K1kt3pV_?-J4}psL;CO<3L25eXROhL zzWYI@Qzb$!wsOoZ#TBBGc2M5n4Wsj8sCZ=#a)&3f^50V+-m)3jPEVss>v3?fw}P$N z2UuU~#+KT{Z2O%?C@VH_rHOuMZQI8-SOlPSz3m?^EX?GS&Z|MbAe?>wu>hx*3**0p z6j~FO#g}QnLrsxC+p|v!^Uf?{WBz#2T~b6|hk;;E6s3Q;>Lg=W#e^zAOSgryPrgd@ zZRK6+Pi(~Jv|-Ht+9Ei)-D2xggemA$1_l2<4SQ=}%6jvNKAFl=?q(-Q7VM*{=s&oX z;YCfsb8%;09vk>O7v;mYvMDc}5H;}^Pifdh65nO%-v$Npo3@`)c5cOAi4{~yR|@rm59eXmiLYHtg_TS|Qv(ef^?kUOF_-$tum2GuA2x-_QW%cbRBA_YUFPkI5rIHc_Us=^kv;ze`(^;02*>alPW9I z*{2bmG#I&neEwTb#)oh61GE(ZA#EgKmVtqz`8ZKfEI89n@&nS!G$HR0MhWIndG|Ng z@+6rGl$yAU07q5S{h$TsLXhjRhKJe|(HZ?njFEPrEi->Hr>Cai8^m~p%N<&oD#Ne5 zcuC)_1?igsmQYtoC69$^SI2x(o9NH-r~|XBbaBEmn;O@3khx(L zoqjTkjSLop-ywA}UwRR@exAg4rCuC5lgG;rg=5QfVw(a@F|=$Vq$aMxv{|WK?sOGx z5f`B^79w!a3E+B)lOeY61G{E_ghU_8^8MqJ=+B8La`@GaEYAS!{qv1>rM_ZUe2mCe zIf13=hg0W|o4l|fA5BIl_^jSN^h`SrLD_d;F&M+G9@o*$m4i69$QR1XwYZvLIwhHG zB$cgiNoB4Q(q!!Mx$_^Hn+r6Zam2r^bcR^bKCJUQhV_nPc#+I8Y)#mPwZ*0sSoEDF zg(PY64HsP8vVo>Pa%Jb8l;}p33HELZq07&fV#J||)F!%(ryg*CK*vQs2_%2bak5>>%Gh*&3Jag>b(* zmb&*IfK$a>y8dJzi~jF3Svt+6;>CjXpzVXF<1UiRybdOzc!Q?-6|v@*HtV}C4+@#bqXJMFvxef=tIR?k{e{JH~n>sCPawJXf03HFSA<+dOm+{?8GV$L_uR&1w;vF8iDb&xt8rt3 z49l3k5;ij?@js8hV|#2UUfVpUA1D8jq^kq%){p10W>0A4?L6MAs!q<9!+D|o2Kx6_ zn%sK~;Bw^|FP6@N`50Z~>`Ww|8}__3=rk7e9Ou(r1K=99h`E-B(u0&Aq$2Wy9*KI> z?BTumz3Tvz9CDS!-p?ZG!c}D9vyYX9UV?>K2|p>|K`HZ6xn^G=Djt{P?89C7#Q%UI zx=A+27@}J9kRyMO*WLqJTp5k{$3JON$urutQWs8g8u;B`i?OMR@Erb}WDb9a%jK!0 zvu+OVWp6~zxnj0;Y7hy&l??x!i?rU!pMpLYLZZW!R7Y<^N{R;8nzxGnK6*$tu?=*u zUvR~ofO{J+oX0ct9^$||V?65mM~fw^@nYEmYM*qA&8}%e@$PmSy`+t<&wa^)nuJOF zoikQ-o}%*?Yj{^m2K{~fiBCHHfvP1>upckhV!W~gAKU&Ci@(=W@4~4#Ep?hM=_z1F z=N2v`IA6=(S2W-$L8tc#*v|<9JYYYch|s6D-7!{ zsIgNW;c(vkhdmx9geAv%@L`%9WD2jc)Nxrr zXVvP@u(q@Zr8z~&zIv5^6!4d0pWQL=a0xysI&jmZYtWgS2AS8x=w!n)MC8R#+2awM zy}C`BLGH}!bZpRxyn`*c@NWZJr!kGy4rzeBe>zNctgv`OEPHdS zmNu_BiLlA{DOoO*%|Cw^Cw13S^)!2dPUlRze~gjZGKYy+WYVZz*ZA==bGr91m`$rs zpt@auS(lqHmWbM8$<8lyZqW!>>o(B(vO$xb*xz=2Yc!-(R|M(^e!q3 zUnWNqzthXUq<_H_r+9v6h8di;tYMFS9HK`Oi=oU4F*4&C^$B#zt1X+EK6^xEn%7xq z_)?1Nsm7QDUzDFb#FiOt!kf4Z7PWZ>qFse)not*2(E#09VnnNco3er1(lkZm3-!+a zOEF67%=gk_a#CJH_8k{+EZd9RgKv>cc@_U?TS9}vi(xBN2qA?BwDjo=Qj{G7|4>uf z?j_2enVdpSnl?$9pF`Wm`RucL3WC+ts8e$elBGFDM+k7p^DZ*%lSOCq5lYu^Lz2T^ zI%xCMgo(c^v<_=Rc~Kb7RsKt#H0{pFfWPJ#*Yi zR;Qj&y1`-Y^vD1j)e|vzI}SN!Ev$2T1IpUP*fBwl=Z1#`Eq`u{*@3Uo9c_t(g@*h} zgBs~nE~5j_LrMAGL0&XRjBb~H5@?>wiPnX(f#Y9czcGl7T5E{FqnEMYW-DfeoCR6VI5^`GefxRjh0nQAvMatrx_YYJH? zvU|jT9dm}w1x;399|f1;8|jS4ZQ57%3c`gC@I7G|f7GRi4lil$;O$6Bub=VR?G<<$ zq(P3!2k<0YiR~LRi~5fm!%f7SDm3o%8(*hjbN+Vzujw5L>AYrY4zp1+Rf&?HtH9PL zk6oPc30sVVxYzrqIF#Q->Dgw)XAfZmiBGWJUj}d7Z&3fl$K3c*Ar%{~q#`+E3>ziQ zO3h8kvN)Fx|8%C#P%nCUu$_*N&>`hoZ#s8Zmv@ht00Y=FWknU*$85-MM=RyW>9E{{ zZWIgMS3)8=0SrqZANHq0l`6RA9xiF~slm$X*)cYG%N z`)&C8heu#?Uk_L z^O^MK;yM^D5^$EiPr0T_1Y$lu$2NIs=nhoU*T8SIBkeRBC9xTy6J2=ck6Cn~s*Bkt z&7uAcquBT~JzB`;p}zGnZp`xF(vR(^$wU*ce%YcR+KVlpVn`$OukdX$)=13vqUG}* z(e&yZxF@N@a@S*~ux=7PvPob~-QUR|b1rV>ZzgB)uk5AQSz4npjP~5zMb<+n()eHQ zv})0C=+*Yp!I)S4Y-t7^Ug*ze3`o#6*YRx5#vinJ#d(^$QkWDK;!vWn5huQ{Lc*3D zoYtMdukHUs*=bi0B|QoyuKN5<@HDdAtwBc>jHqs0CEvNrh9-7QtOc06vwT!QHt5?5k4&s#0sotyzxJVr;n4n_f~k2qK|lEhJm# z&cC^qNtB^3y?MVC0&@8`X5^E-KmNBR|kSIFday z6N8K5O6m=LjGIN(Y*maQo#@q|*hyRAyGk(j8y1sNb2{ny=Fx?XIc%j@8A`l+c}R&0 zMJ<}iHXBxu#0X0oyl{j56}ge_8Vma3Xhk+JSFo!E4U z$~vv-tdb9xKb3&Ll{0zJ3TN8(Wi8*FJRg;68rXYp15Iul$5P7Wp?AldPYRNw&rkJW zv*H5otLs}okS)#BL?H2JV9uVKia;%5d?$x&^-Oi(6wx% zga6L+!LLWDz-2nKFg2oAV|BRGzaAPhqKLj5Jce~aA^V)-C%`L(SkMv(w($Y>JW<2X z<+s_MrWm|RKg5)-JfL*-4P;%NOn;)+ppd&jM0*BKJLuDru(4R-WP`R7&dlZRV*21; z&3Z~UL&>^|Wu9@O{o4fI(?A`iz7>J)`FN~MnMqwPYw5em1%CBZKO)EWl7P)$F;Grg?^ z`r94!nLfj~b}zJ|f^?=S!q+j3&Mz0V<7f_Evo_(fCmQSBjw-b1 zaz3IAYM^6yh90@~IOuQ_VEKc0qA|9Fxy*Lab{JvpswYl@mLeY4<3U z_sBC9qa?h`vf&yZPLV*#qF~SKxDpXeE?G)c@KZ2X!Ve($TRa>3BZTs1=kXo)%;@t_ zfzKo0#Ni=#Si7qt3=PWpbUSYxv{j>wr_X72fEqm3i_uq&3f_5W4@8WtSjPu%{2Hmw z51f<0-til0^>=v+YaYe@x6Y;D^IkmZk|t!0cT$6f1ju_VMLmk5n`C4pZT=q~JI0$(PTM#;lY*oX-ot@Ax1%zHev}2dr*L#Ui&EEZy%(}5=qZHkovYhM(n3(oXMYzSe==4-lm)R32mY+ zMnx=9fP-?P_tP+0SsZ_E!{#~IqZ>(dF2@hS&QUP=cMH~mxdXAH=f1b}V0U zI38?yi+6(D_tLtlj6Nw+hWZEk@yePKOYCT2Kpkf9eMO5O8eo2=9CyhS=<-k6Xs_)= zNY{yBPAdnwS-?}Wl2YYWd2ZfB>KqeJxAFvev-Y|CXqg+Va-Er2@i^SClBCwiHk|4> zjI-h|X@uE*9+6o{GJ7&fqwF(Q#lJz?*K<&C(?VXJI7x=|v@OHVh~6x+CO@;Qub+m3VMQ*qrslrNl?p=)){d}Y^j8ko3{B15d`k?cMu6n}}N-3B1PFq^L0C1B2|pBNGPmoIC7 zNYkaSB2C1OuB2#lxjPT2Aa4WnIe46+H1|@ifPWNq2{WiT)BH|bz9QNd<+Y~FOUjTo zBs`%v?dDL?m@2>-J~+NcgD3T=V@tvyb|r`4UsEua-dGLum7}SsbQs#5&XesFYvPv| z^4cIroQ$}~`&B?GL@$2ZDFlvyJ6~dm@kd~4-*_>(fD^RwSN$% zvv2At;Z7YFZk5B`L+=DUHkf=@L~;A3K|xkZmaAKr(D{aSY<;jIe!Q5C9q#Qkd)q;- z>N7wgvwFCAe-fSAeU#3`--2f9OR}s#O|Q1Z;dE|1iF$;<)n}|gr`PApRrKl0ZH`~R zRnVR>F}Z~gx$F+7(SFqQ&JM>*Z}WR)XUWPThE1_NiNtGeOy4CR zKc*(bV8Kxu_S%96{mZ6ww^{tfUqJ_HAc{KMD(HO4JB;u4gpr8_>u~%JY6C}^owT5X zQm+K}iZ^uVz(X>SQO4V){Rp=@iD11Dw)5*Y8`=JJp;^^?85E{Fo%&jl4#((DxRrC4mk#eF1MdK?-M$#=?y_8DqZb{>_>E2euhA1)g2KHU zaBl2X?0BvYd5v3iVp#w(S03W$P(^~Z25eIyzG%pwmdU;41<1KF5;g0MSr2m%K7J-ow$^}G#t$ap?MI?NUb4pqnpALR z8-M&WghJ)y_-gx2@cbLYzRwfr_~Au#^hGZnTk6iD+7_a_dY>RWJdT$7uVjPC<484d z7_)wzM}r5uS=RgMm{DMlu&od9_TyTfa$X<(%`f;)@0Db_(~bw+6T?pLg{UoTrtSS7 zuu-CoGS`%#OVCnx8aau)R!ULuvahh<_wk^^jj1m^NlWby#KM4Zwv_wA3|cTnWg>g% zwic7LuJflq=VQ^za2}iZj<)WMrhHyRsWN@&99D>~s2#n&?aofY#+zb=a-kroO>YedHc@I1nEr8gBvG{)FC2p2n!f~THIJ0pQ3VMd1 zO#K+!oRWo>s9ntNX){i&eagE(29U!H5uWry1OKG|V`o<$#NzO2Y{^bJdU)N9AO7Zm zwdD@vt-FcVo%+o_d8LwMK`?u-+lAKl%`~}FhOWDxW_Jzq! zAeW_ugg_^nvVS&D+9JTkWwJ27xCqDH4Egz8G1T$;5@gF_=-9e1yiuo)wnXN_+*6w- z&!}V)5v$4S;z2GUZH9>AlPs!Qk1kq@vC@YQG&;?jwp%o#R)0S`KQNRwpRT1TeFpUQ z^IaZg9t9)S4mz0U`i4*y;C|E3xtY{LP>yvo9mBmHC{=L3mNXON`zoB2ewQgL@a^Lg?J>Wg|Y z`fD3}1s>K&K9PQ>2hi@*O1S0Q!%vNvLf5Ze!~1vJ&?i5IZ4Fz9X)6}O^X(hz!8Kg} zrHF$4jX2_ZflkfKWV(kWDR$99Hcztvw?0fD=M#yP>im-ST+M@(aSy%UXGH`2G*2(I zC37oHi0(2Vc~1PzQdu&q-%Zo{SL26|Cc2`7Q1@dOBBC5ne)S;l(KwE;Q~SBvgK>Cx zpoOX?#Z&R$CU#u!D48u4=eFwZkUF8s^Jpykr1ROb`8zS{-4;@xD!@w@m$0SlR?(}u zM!aj8ui*0DdVD%=Ly8TBBwibc0+nxUd+0{!&M+6`MHTQ>S&SF;oI}F3CD5APKzr5A zNIb0(^+I_x=Smxq%`PsX)&hkS>sav&!A&32RLG&&kCsMelJGzYvUSIE4f$$H-v5pc zNPFSp{s;=3yN5;!)`E*gA}-Y&ClR3l(o9q&-OF>x|Hvh7EA$vbH%}<2!=Z(zsNe+14Hg>B&g>2&5h#Ft#mY_RZIPO?`(ZI{_x|yQQK+e z++wb?y&W-W31rzb39c%Fj#TCo+IL5iC+qs-(Dxs(Hdz9_RbF)HxeE>q%|LxmDFPa(1>VwGs#>jbp>cl?;zJOfgN@~3y(3Gcyl=vpF&J=r{xYkX|5#4 zsrN~1%n6czY(*OC*Ln1;KHS`0kF|xu7-zVHza8sO_XhQNDf^GYT{zWT8;?(e511>ojN2J@U4=j__;R6f=A%MSZcR z@Zhl6q5+Z>dI+Thb{S1r*8M z>9ch_`BwEoTB-p@47_-*yf|sry@N*C3VfvmLEl6ib%GvIO2aR*UGSdu+#Ny_|4U#k zvro|DmRc;FvzT0mUqbqS(HP(20Q*gcQD7BDiDu5|H@(6pd~KogV>WW#;dzLfs>~mq z|4B_{7A!^Jo4ihr#V_4kHYQPSZ;HIhmnk+Ut5U2< z(0TQq6UGCFCScj^6v+SEi%s^M*g)-i*!}m4ruynYM&A=xwSUm}6cM`fl!)mE@J~-# zu8Ty|44=BOdtb^4ykEZE`spM$VNd;pYXm`PLQVz9a9dSD3 zv~`oY*A=oQ6u z&m$cx%pT$As!52vScLo+SK05mU68ctC9kGGrc_(RtHuid}mRn43%!qBdf=?I>&(b>R*kk<@S6LjQ)HLWR#} zuH^X*R_Y7c*ts|G@a$qiM(Pile0J>yxJUMp z{oNh(#7~fMF3H3eZGU$2?0Y)&>MbR04TtX8NWMZ>6^FFbsrSP+y8T^D;QM<)W@0K1 zcU`12kKf?M5li|S)JTfHsq}icCcL-m5RVsPb?5F=#j%CF{@!savYbcbC;z2o722${ zcq`0r+9FJKE*e~0xzhMw)cEo_@04mmRaF8{zEp?m+1J?1qIlZ9?;4Y^%O+1<6Fj^e zjgnR)u9lERSr@c;-K|Wzb~+W`=Hx;2L zOgZvRe3YdX8I3RCW2GYL=Rr=+g^nctUV_!mxd7+m)0n-+Gm6y8=UIz}lkfsVpE6y=jkDtS+^C37+2BYcRiYteXBDPC!}1{=ew z`9$SH+9)mz*Xgh5`)+$I)SC&9hmvg8kNt>dwRGuv4hAHTGToWJq+k1&R%<@QT$8q_b((BEfh^Ou_B`;an+n0=kx`(>|9)=zNmSHvPUqPc-@{+~OgnN=&2h z%AGj<$qSLMVyUbsjE%Zqh15x#h?MT*z^AM1)hAn8A(BP8%Qlc^ax~5=c+-NPclqe$ z$1v?w4*ypyOt1EZuo)@Mba7`kqW&gAJ49BHXEH`azB4};Crq7Z-sA9v<763~&qbFf zV({{H>RL08S!u+qYUCTnT zZfYZSHa5}Q3V(jhdn-LU*p6AdTVWu!fC7&lK}v%GPrH{xRf+s>v?^s(>k>9b>SU+c@F zhlV2d{9Jmm|2Mk!uH-W7q{zp&om91-Laj88Vgs)uLs*S1-K#67W4fN>MDrGAlB)p^?@jE>=K%QXEukR=x4@N0^02J;I7h$!4{?7U7sB`c|Kr!G zBnd?nLa1bEk)lYpBH5Ah3|M~s-n{IXQah+w(oH=u5=4^v~;Q;j9@tiqT6ob<(b8fLAAMf-Z0V}`wVa~oU zEM^(?k9Bdto4aW)vWpqbWj_n{=`-PU{0ca5pfz?bdJU;(zr(KZT$quX#Zzd0!G#%B z?Dg<)?4jlWeOIo=BdxacOr^EB>qZYqca4VDeS5GB?Iw`b|Bg_W2WDCC*!^l5FuNGd zmtSgwcS2U<1+7B((6tn7r!Ig_k!vuqfL1A+zLGcY&&MZmQIIt30P1{lgwFaYH128# z_T8C-D^K=d1KoRK>9R_!PE!K2TqXW>acgYVMwxeW^aa0L1)z|i3u_`PaK!~(402!3 z53E-M5351Y=KB{sZ$fj<*UU#_%{rd&I-j0!x$Y?BPo zW#b3bx-tUaK0JdqPfNIbXg2Poak12r3_iQ9Sxk8fo_(jxUEez464fJI{`XX9oOB#b z=Ex)Dgn~8Aiyy6UpJi=$4Y?K@@JU;DxY?@+jvlPXE+5XY9nW&%=V3RtfAdc?2;0uQ z8;5|ol?LyceFIjse#VC{nhxiyQ?c1b3qte8LF_yeeC4vA>yI>n`y-a1LCtTpX{E{5 zqN{p4K%8Gi+&9$E3E95;>KX z4s8ZQ?+viv#ZCBgXbLyURs(fvXF`2fTx1@_-S7RvQNNaA*oem%lrxMw&ioA9i>ENt ziGyL*tsUU}Fb%BkoyGdO13^{mBrFSl2}2I{V;|TkYKr=7%JD50qhMY3MVykl z3zyEygd;`qShOJp6L$^AjIb)+T(S$kwHp8~M(ZH^NFc<_NWx)D?O9CUTHL8Oj@6v# z2Sby*anFD;c%wFo&oU{1?QRCVw66+|mmSZ%wdSI3x8rc$upR7sUWU`<8NNK?%d3l= z!Sl{9K1-`FK1}J!%I`Fx%%y|e(@YlHMf8W8o|C98<`Ztq8UbOA+i~Www-EHmgx@Y) z3hjT|uu)BGV4P19i&|?7)8-7rkjmZI)paYBY-czrgN`QLCx zGxKU_b#MWu+{^^mJ{K@ygEo8NaT(Y_dsN+a6t3TF;`63%pm{ZQ_||zHUW~kfr8|#+ zYUmywL*p}M?V;z4$Ne#ZdGf`*QQop88~4K6>~u~0uekb4={oe6{4 z+!-UkPDIUyt++YEo1QB>^0LA}NO&EFCW>`%AZ7=ww9Uu%e$UbI8N=pg1MZg^j7tWu zW`(mKW8&R1>^Ackwr_}Jljj`9?|PLm!u=QqO=G~#lS^o3)31p2tK{rgGZX4VD6MQ z;AZn3p6}a^U;BpQ>mUby^|mZ5)K7nR0$Ai5Y?u}lz6Zk805BS)11T&864)bLl z`JvKJ@V+V&Wyh>>h|`)&B=)n(SfItym*o5hEF3_?BiJl^eI2k7+v z5pSfiJRUUXKjpSICe?+b&X7rXXXaWyXv}XgOQ_@V14rN-4HM{Xua4P6I`T{7XF%K3 zY~~)h6!ruJz|xe7m_I6p>$Pi#DOY9qbn5}2pO(u91C)W{1PKs%LEZZ3mi5d6(s_rG8hhBB~$tVDdF} zHm}<^+@Em~w1Q&b?$}nSZJGedZE3#r%qsjHRm^f}T=3i%lhCR$9*hEvz^RKZ)N3u_ z`#kNi>os|{dZZTo8P}7KsX2n_Do^>S6EQGswH!%aR2h<7?(Gl zPx$JKT?5-<`LiK-(C8xuP4mTGotEIauO3i7dn;O(HRAlk^Vpj0+u_RwC01V87mAj2 zWAhb0LZHJ|7Wb9r>#;kzuIUVFzto2TCX;c`l@xHK@kGblDYI7A@34?> z2ix-xz_ZOV9_n=zn+t%aJs1k6*1wo3wHGOlUc?=}jPdQ6Mz$H(L*+IVs5VuDrR*D) z98RM7TWxr5hbws8+mB_nYr@kGt$FtmmZ;cU1{>W*K)0Up>|}x>%nN_O@*LD5*M;*X z!|s5((Rc_mk%ui~dag!CgRkwWAJ+U2kK9mjmK&2fWYAAyi}(xuDh@ST#7G(r-38T zN-6lN<5Paz(ih7srlHQu64+P1gZH}J5z?~TGR3(r_#(>z_C0=&x1)_=?Yx&5llOsd zUL1iTM{D@t7pgcy^(a>O<$>y3P5zH^7L@a77S(S7?3i*NAANZT!;07QTC){!qzKbCpT@B7ccI(!60o3oS8>!cN!dzz-=*u}Kkhw4=)5ST;Jv5@=+@jC?eBGGkurgxy+;#1IDW<}M+z~y^(%VL8w}SD#A8*bGq_-j zF?uU^XMghd!#`zmXnZLSm+wmBv)2yAsbM3ry=i~w+J7a^KGXnD_K%0+!}9q2@pW$P zoQXGkd*eX5hpu~j4C)tXfTiVInkU%~*P7|_%~MRleuoJRowpm}+MVL_meAZwwNR`- z@D1Buh=S7#3($?`0uKD62bsxousO6AT$wumwDU0@qV)!iYEME?|0=ll+k^^Z0FPeQ zAKiS%!P8_ljCoiL11{}@y911H;lfLJ*|H3)hljxX7j^8WtQ=^E4drsFk*GEDDBmCL ziN#gzVQ!Wpl-?SHO0uINc<~Z!^j3fmD?4JE#!cvXzAt+{@fR*v)#p*B+IYO(d$u&a z4>pXP2=`V7!bYD+DErY9KX2IzWA@Icw(iUDJmfg`(GKJJR<_V<#WQZxJq<6=9MB23 zo55%LUZ#@Y4<3)a%DR1Vgv2r>7~xogZKt2ZHI>USs9+mgnll!yH|5Z$L>9tQJ0C2H z83^ue&f-0)P~SFK9yFcFO;AFe1y`VT zh!IYorVOJj$KY-)f1L777T@VLu`ONiL)h|%OoM;HRuQYv@zqnz=x_yQeVqtVxzqWe zZ~LJ5`6CR>*aZ)~LgA3LDc)#h4A#fKZy#`TdWB`%?@)e*;zjgxjt)H zl-4@9Z#05+a61P_OQX;$c_8j+as-`i^Po?m4nG|;1G}!N!^v^luu!WT52bbmOB#E& zD7^&r_gUihBY)tcN(XqBwjYo7{lQ$@b%Ol`A@GFO!K+_>ih0WV!0GR9*hF(mA5R&; zeoq^Zqv~zh0gW{a&aHzlw2bMf!pBjcj&%W=l&8qS6Zlw!P4N*n2#z0nSI2tpZ4zM>*Dp4zJ zD-2T@NbigdY@z#puvxT_o5&5txueiR*#Q}fi}AXTHN03C zjHjnLLBa15?tJYMuEjpQI4_CTzEVY1FDh^M55W5`6EVp~77xvS3cK<);DI$0X}$Rk zc>3{lEU@0kuN~SC?K5xlo>&NDtR2|_oB5bOfaa}Fw zx@l$M(&x9C-oDGAd}sh1FuR2s-MYc5{U4yo*Aqv+569u5o2Y+N1={rqMr!+^0h&r>-~=ZSnZFa4i1O)U$;Q3Jr1~L;vRIF6AzU`<3U01I83AW-X#}) zg8k@qFz(GCd~j(rq-acMdNhZ9cCqySJQ3IQ{=|&O+G11IE|kmGhL4%f-1)>GxMejP z-z?Mzj~?t;e1gHV>Nz+bG@!~9BQ!^X@;=PPbJ zsHr_@E^uPq9>jwBgLb^Lks)44493R;--33Z44(OD09vZK;@Kw(*buT2$Npmklayv~ zTN>ZqX1^Az@GpmNDsx#^<6@A1t%RHF%s`3y6Mvk$f+bh1u(HDzVE^2}O-BuI^r(eQ z`S25bkY&moCT_s98)D#8`>vR9-UJoP(=n{H9w$zzhTUH_vk_yeVSH05>wkVHY8C`S ze8L}??d8V?(Ry?B)Q;$qT!kZ?X^up~3+h8`$21L^F|AV&Ixp&np~{b0?$U=?{(Loe zSWtr*{%WXoz#koJUgFq~!4S}?o-0;&1I=^tT;|Gmc$R9y`qp1TUaY*Qm zXm1hD*4``HF2u2dBO#D(mx2c$cC`RQ?@{-)SJx7 zpczc6y0D=gKY@PVOITC924q}|c>b5$ID-1^;|G3#>t)6$`&tP$4L!|getG~^5Bk7h zVLQ4G7r(145TLVuZap9E>Y~+3o6}OV0{+YH>WSIa0}+cdo&0ZwJEo z53O+7f>nIhk3{s>PT>z_9l>&&1ym^S$6+sj@zakSVMhErZWVt4oFDmc<*vu!!v!6< zv@8aj+6CeQe`jd2J_1+OUZc7!jrVu1fSn1qx!;j4&`9^N(<_wlG@s9h$&G=PPjcX# zYXaznsPXkze!lb03gW$H;h^PPS?`C*aCL5fKBL1*EIDQePY=g|a=SjD z`Op*XJN{xfRcf&8LM04NJBb0IZur^f6HFW7#I1g{#lFXESf@}+c(r0b=8Wx&v$B4` zK$`$u6*mhjK03np5_N7h=o7xk=?e;tt#Q7A6Mnrn9~W01WxaCm;PoHlahb|Rh#Y?# zx6AIpkWt<+#%DPe5ADR{V;x{dWF1DEc*EiDIdE#QIs^*a%D5{ z`gUq3Tdl({FV(@3OBI-F`g0sm@RFVSo{0_Ao)LTlpq2AI9_kgt-CrytL^B&CKL*sf5E1Wqq)v_dDt2J3es(s!!;Tc5<0>KM=A|u z@uzl!e!>+{rqyoR4(Y|rhr46I^(idHu^wV{Xu1urX&+0UP!aATGU_U&AV6Uv{kDm!{lH!P<) z?C0@TQ!_nZP+N)DIL~ly>JF&) zAsiCdykR4M*ux+F=U6+rHw;ef$Sbw2U|eJuzGasS^xFNHmkj8Mauq*$^T~F!-a{|` ztsZIJ5=H*!)h~Dzv>wnvp86-UnY~LA&Ut9Z-y0vsk{V!7Oe-*IX%YtBxdt=ROt^f~ zSm>BR@2zf*u&&iqb|%aOL*|Xb∓RWmPoBEv<%gW^T;j&P6=9e<{=RTm_xo<@vT9 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 literal 0 HcmV?d00001 diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/lib/libsodium.la b/example/android/third_party/libsodium/libsodium-android-armv7-a/lib/libsodium.la new file mode 100644 index 000000000..0a5a34788 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/lib/libsodium.la @@ -0,0 +1,41 @@ +# libsodium.la - a libtool library file +# Generated by libtool (GNU libtool) 2.4.6 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='libsodium.so' + +# Names of this library. +library_names='libsodium.so' + +# The name of the static archive. +old_library='libsodium.a' + +# Linker flags that cannot go in dependency_libs. +inherited_linker_flags=' -pthread' + +# Libraries that this one depends upon. +dependency_libs='' + +# Names of additional weak libraries provided by this library +weak_library_names='' + +# Version information for libsodium. +current=0 +age=0 +revision=0 + +# Is this an already installed library? +installed=yes + +# Should we warn about portability when linking against -modules? +shouldnotlink=no + +# Files to dlopen/dlpreopen +dlopen='' +dlpreopen='' + +# Directory that this library needs to be installed in: +libdir='/home/alex/magnet/example/android/third_party/libsodium/libsodium-1.0.18/libsodium-android-armv7-a/lib' diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/lib/libsodium.so b/example/android/third_party/libsodium/libsodium-android-armv7-a/lib/libsodium.so new file mode 100644 index 0000000000000000000000000000000000000000..58caf1642a0606ab4d710838576742e5b6c96ef1 GIT binary patch literal 314464 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 literal 0 HcmV?d00001 diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/lib/pkgconfig/libsodium.pc b/example/android/third_party/libsodium/libsodium-android-armv7-a/lib/pkgconfig/libsodium.pc new file mode 100644 index 000000000..8ef4197f7 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/lib/pkgconfig/libsodium.pc @@ -0,0 +1,12 @@ +prefix=/home/alex/magnet/example/android/third_party/libsodium/libsodium-1.0.18/libsodium-android-armv7-a +exec_prefix=${prefix} +libdir=${exec_prefix}/lib +includedir=${prefix}/include + +Name: libsodium +Version: 1.0.18 +Description: A modern and easy-to-use crypto library + +Libs: -L${libdir} -lsodium +Libs.private: -pthread +Cflags: -I${includedir} diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium.h new file mode 100644 index 000000000..295f911cf --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium.h @@ -0,0 +1,69 @@ + +#ifndef sodium_H +#define sodium_H + +#include "sodium/version.h" + +#include "sodium/core.h" +#include "sodium/crypto_aead_aes256gcm.h" +#include "sodium/crypto_aead_chacha20poly1305.h" +#include "sodium/crypto_aead_xchacha20poly1305.h" +#include "sodium/crypto_auth.h" +#include "sodium/crypto_auth_hmacsha256.h" +#include "sodium/crypto_auth_hmacsha512.h" +#include "sodium/crypto_auth_hmacsha512256.h" +#include "sodium/crypto_box.h" +#include "sodium/crypto_box_curve25519xsalsa20poly1305.h" +#include "sodium/crypto_core_hsalsa20.h" +#include "sodium/crypto_core_hchacha20.h" +#include "sodium/crypto_core_salsa20.h" +#include "sodium/crypto_core_salsa2012.h" +#include "sodium/crypto_core_salsa208.h" +#include "sodium/crypto_generichash.h" +#include "sodium/crypto_generichash_blake2b.h" +#include "sodium/crypto_hash.h" +#include "sodium/crypto_hash_sha256.h" +#include "sodium/crypto_hash_sha512.h" +#include "sodium/crypto_kdf.h" +#include "sodium/crypto_kdf_blake2b.h" +#include "sodium/crypto_kx.h" +#include "sodium/crypto_onetimeauth.h" +#include "sodium/crypto_onetimeauth_poly1305.h" +#include "sodium/crypto_pwhash.h" +#include "sodium/crypto_pwhash_argon2i.h" +#include "sodium/crypto_scalarmult.h" +#include "sodium/crypto_scalarmult_curve25519.h" +#include "sodium/crypto_secretbox.h" +#include "sodium/crypto_secretbox_xsalsa20poly1305.h" +#include "sodium/crypto_secretstream_xchacha20poly1305.h" +#include "sodium/crypto_shorthash.h" +#include "sodium/crypto_shorthash_siphash24.h" +#include "sodium/crypto_sign.h" +#include "sodium/crypto_sign_ed25519.h" +#include "sodium/crypto_stream.h" +#include "sodium/crypto_stream_chacha20.h" +#include "sodium/crypto_stream_salsa20.h" +#include "sodium/crypto_stream_xsalsa20.h" +#include "sodium/crypto_verify_16.h" +#include "sodium/crypto_verify_32.h" +#include "sodium/crypto_verify_64.h" +#include "sodium/randombytes.h" +#include "sodium/randombytes_internal_random.h" +#include "sodium/randombytes_sysrandom.h" +#include "sodium/runtime.h" +#include "sodium/utils.h" + +#ifndef SODIUM_LIBRARY_MINIMAL +# include "sodium/crypto_box_curve25519xchacha20poly1305.h" +# include "sodium/crypto_core_ed25519.h" +# include "sodium/crypto_core_ristretto255.h" +# include "sodium/crypto_scalarmult_ed25519.h" +# include "sodium/crypto_scalarmult_ristretto255.h" +# include "sodium/crypto_secretbox_xchacha20poly1305.h" +# include "sodium/crypto_pwhash_scryptsalsa208sha256.h" +# include "sodium/crypto_stream_salsa2012.h" +# include "sodium/crypto_stream_salsa208.h" +# include "sodium/crypto_stream_xchacha20.h" +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/core.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/core.h new file mode 100644 index 000000000..dd088d2ca --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/core.h @@ -0,0 +1,28 @@ + +#ifndef sodium_core_H +#define sodium_core_H + +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +SODIUM_EXPORT +int sodium_init(void) + __attribute__ ((warn_unused_result)); + +/* ---- */ + +SODIUM_EXPORT +int sodium_set_misuse_handler(void (*handler)(void)); + +SODIUM_EXPORT +void sodium_misuse(void) + __attribute__ ((noreturn)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_aead_aes256gcm.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_aead_aes256gcm.h new file mode 100644 index 000000000..9baeb3f19 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_aead_aes256gcm.h @@ -0,0 +1,179 @@ +#ifndef crypto_aead_aes256gcm_H +#define crypto_aead_aes256gcm_H + +/* + * WARNING: Despite being the most popular AEAD construction due to its + * use in TLS, safely using AES-GCM in a different context is tricky. + * + * No more than ~ 350 GB of input data should be encrypted with a given key. + * This is for ~ 16 KB messages -- Actual figures vary according to + * message sizes. + * + * In addition, nonces are short and repeated nonces would totally destroy + * the security of this scheme. + * + * Nonces should thus come from atomic counters, which can be difficult to + * set up in a distributed environment. + * + * Unless you absolutely need AES-GCM, use crypto_aead_xchacha20poly1305_ietf_*() + * instead. It doesn't have any of these limitations. + * Or, if you don't need to authenticate additional data, just stick to + * crypto_secretbox(). + */ + +#include +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +SODIUM_EXPORT +int crypto_aead_aes256gcm_is_available(void); + +#define crypto_aead_aes256gcm_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_aead_aes256gcm_keybytes(void); + +#define crypto_aead_aes256gcm_NSECBYTES 0U +SODIUM_EXPORT +size_t crypto_aead_aes256gcm_nsecbytes(void); + +#define crypto_aead_aes256gcm_NPUBBYTES 12U +SODIUM_EXPORT +size_t crypto_aead_aes256gcm_npubbytes(void); + +#define crypto_aead_aes256gcm_ABYTES 16U +SODIUM_EXPORT +size_t crypto_aead_aes256gcm_abytes(void); + +#define crypto_aead_aes256gcm_MESSAGEBYTES_MAX \ + SODIUM_MIN(SODIUM_SIZE_MAX - crypto_aead_aes256gcm_ABYTES, \ + (16ULL * ((1ULL << 32) - 2ULL))) +SODIUM_EXPORT +size_t crypto_aead_aes256gcm_messagebytes_max(void); + +typedef struct CRYPTO_ALIGN(16) crypto_aead_aes256gcm_state_ { + unsigned char opaque[512]; +} crypto_aead_aes256gcm_state; + +SODIUM_EXPORT +size_t crypto_aead_aes256gcm_statebytes(void); + +SODIUM_EXPORT +int crypto_aead_aes256gcm_encrypt(unsigned char *c, + unsigned long long *clen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((nonnull(1, 8, 9))); + +SODIUM_EXPORT +int crypto_aead_aes256gcm_decrypt(unsigned char *m, + unsigned long long *mlen_p, + unsigned char *nsec, + const unsigned char *c, + unsigned long long clen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(4, 8, 9))); + +SODIUM_EXPORT +int crypto_aead_aes256gcm_encrypt_detached(unsigned char *c, + unsigned char *mac, + unsigned long long *maclen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((nonnull(1, 2, 9, 10))); + +SODIUM_EXPORT +int crypto_aead_aes256gcm_decrypt_detached(unsigned char *m, + unsigned char *nsec, + const unsigned char *c, + unsigned long long clen, + const unsigned char *mac, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(3, 5, 8, 9))); + +/* -- Precomputation interface -- */ + +SODIUM_EXPORT +int crypto_aead_aes256gcm_beforenm(crypto_aead_aes256gcm_state *ctx_, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_aead_aes256gcm_encrypt_afternm(unsigned char *c, + unsigned long long *clen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const crypto_aead_aes256gcm_state *ctx_) + __attribute__ ((nonnull(1, 8, 9))); + +SODIUM_EXPORT +int crypto_aead_aes256gcm_decrypt_afternm(unsigned char *m, + unsigned long long *mlen_p, + unsigned char *nsec, + const unsigned char *c, + unsigned long long clen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *npub, + const crypto_aead_aes256gcm_state *ctx_) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(4, 8, 9))); + +SODIUM_EXPORT +int crypto_aead_aes256gcm_encrypt_detached_afternm(unsigned char *c, + unsigned char *mac, + unsigned long long *maclen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const crypto_aead_aes256gcm_state *ctx_) + __attribute__ ((nonnull(1, 2, 9, 10))); + +SODIUM_EXPORT +int crypto_aead_aes256gcm_decrypt_detached_afternm(unsigned char *m, + unsigned char *nsec, + const unsigned char *c, + unsigned long long clen, + const unsigned char *mac, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *npub, + const crypto_aead_aes256gcm_state *ctx_) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(3, 5, 8, 9))); + +SODIUM_EXPORT +void crypto_aead_aes256gcm_keygen(unsigned char k[crypto_aead_aes256gcm_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_aead_chacha20poly1305.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_aead_chacha20poly1305.h new file mode 100644 index 000000000..5d671df14 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_aead_chacha20poly1305.h @@ -0,0 +1,180 @@ +#ifndef crypto_aead_chacha20poly1305_H +#define crypto_aead_chacha20poly1305_H + +#include +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +/* -- IETF ChaCha20-Poly1305 construction with a 96-bit nonce and a 32-bit internal counter -- */ + +#define crypto_aead_chacha20poly1305_ietf_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_aead_chacha20poly1305_ietf_keybytes(void); + +#define crypto_aead_chacha20poly1305_ietf_NSECBYTES 0U +SODIUM_EXPORT +size_t crypto_aead_chacha20poly1305_ietf_nsecbytes(void); + +#define crypto_aead_chacha20poly1305_ietf_NPUBBYTES 12U + +SODIUM_EXPORT +size_t crypto_aead_chacha20poly1305_ietf_npubbytes(void); + +#define crypto_aead_chacha20poly1305_ietf_ABYTES 16U +SODIUM_EXPORT +size_t crypto_aead_chacha20poly1305_ietf_abytes(void); + +#define crypto_aead_chacha20poly1305_ietf_MESSAGEBYTES_MAX \ + SODIUM_MIN(SODIUM_SIZE_MAX - crypto_aead_chacha20poly1305_ietf_ABYTES, \ + (64ULL * ((1ULL << 32) - 1ULL))) +SODIUM_EXPORT +size_t crypto_aead_chacha20poly1305_ietf_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_aead_chacha20poly1305_ietf_encrypt(unsigned char *c, + unsigned long long *clen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((nonnull(1, 8, 9))); + +SODIUM_EXPORT +int crypto_aead_chacha20poly1305_ietf_decrypt(unsigned char *m, + unsigned long long *mlen_p, + unsigned char *nsec, + const unsigned char *c, + unsigned long long clen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(4, 8, 9))); + +SODIUM_EXPORT +int crypto_aead_chacha20poly1305_ietf_encrypt_detached(unsigned char *c, + unsigned char *mac, + unsigned long long *maclen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((nonnull(1, 2, 9, 10))); + +SODIUM_EXPORT +int crypto_aead_chacha20poly1305_ietf_decrypt_detached(unsigned char *m, + unsigned char *nsec, + const unsigned char *c, + unsigned long long clen, + const unsigned char *mac, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(3, 5, 8, 9))); + +SODIUM_EXPORT +void crypto_aead_chacha20poly1305_ietf_keygen(unsigned char k[crypto_aead_chacha20poly1305_ietf_KEYBYTES]) + __attribute__ ((nonnull)); + +/* -- Original ChaCha20-Poly1305 construction with a 64-bit nonce and a 64-bit internal counter -- */ + +#define crypto_aead_chacha20poly1305_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_aead_chacha20poly1305_keybytes(void); + +#define crypto_aead_chacha20poly1305_NSECBYTES 0U +SODIUM_EXPORT +size_t crypto_aead_chacha20poly1305_nsecbytes(void); + +#define crypto_aead_chacha20poly1305_NPUBBYTES 8U +SODIUM_EXPORT +size_t crypto_aead_chacha20poly1305_npubbytes(void); + +#define crypto_aead_chacha20poly1305_ABYTES 16U +SODIUM_EXPORT +size_t crypto_aead_chacha20poly1305_abytes(void); + +#define crypto_aead_chacha20poly1305_MESSAGEBYTES_MAX \ + (SODIUM_SIZE_MAX - crypto_aead_chacha20poly1305_ABYTES) +SODIUM_EXPORT +size_t crypto_aead_chacha20poly1305_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_aead_chacha20poly1305_encrypt(unsigned char *c, + unsigned long long *clen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((nonnull(1, 8, 9))); + +SODIUM_EXPORT +int crypto_aead_chacha20poly1305_decrypt(unsigned char *m, + unsigned long long *mlen_p, + unsigned char *nsec, + const unsigned char *c, + unsigned long long clen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(4, 8, 9))); + +SODIUM_EXPORT +int crypto_aead_chacha20poly1305_encrypt_detached(unsigned char *c, + unsigned char *mac, + unsigned long long *maclen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((nonnull(1, 2, 9, 10))); + +SODIUM_EXPORT +int crypto_aead_chacha20poly1305_decrypt_detached(unsigned char *m, + unsigned char *nsec, + const unsigned char *c, + unsigned long long clen, + const unsigned char *mac, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(3, 5, 8, 9))); + +SODIUM_EXPORT +void crypto_aead_chacha20poly1305_keygen(unsigned char k[crypto_aead_chacha20poly1305_KEYBYTES]) + __attribute__ ((nonnull)); + +/* Aliases */ + +#define crypto_aead_chacha20poly1305_IETF_KEYBYTES crypto_aead_chacha20poly1305_ietf_KEYBYTES +#define crypto_aead_chacha20poly1305_IETF_NSECBYTES crypto_aead_chacha20poly1305_ietf_NSECBYTES +#define crypto_aead_chacha20poly1305_IETF_NPUBBYTES crypto_aead_chacha20poly1305_ietf_NPUBBYTES +#define crypto_aead_chacha20poly1305_IETF_ABYTES crypto_aead_chacha20poly1305_ietf_ABYTES +#define crypto_aead_chacha20poly1305_IETF_MESSAGEBYTES_MAX crypto_aead_chacha20poly1305_ietf_MESSAGEBYTES_MAX + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_aead_xchacha20poly1305.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_aead_xchacha20poly1305.h new file mode 100644 index 000000000..6643b0cbf --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_aead_xchacha20poly1305.h @@ -0,0 +1,100 @@ +#ifndef crypto_aead_xchacha20poly1305_H +#define crypto_aead_xchacha20poly1305_H + +#include +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_aead_xchacha20poly1305_ietf_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_aead_xchacha20poly1305_ietf_keybytes(void); + +#define crypto_aead_xchacha20poly1305_ietf_NSECBYTES 0U +SODIUM_EXPORT +size_t crypto_aead_xchacha20poly1305_ietf_nsecbytes(void); + +#define crypto_aead_xchacha20poly1305_ietf_NPUBBYTES 24U +SODIUM_EXPORT +size_t crypto_aead_xchacha20poly1305_ietf_npubbytes(void); + +#define crypto_aead_xchacha20poly1305_ietf_ABYTES 16U +SODIUM_EXPORT +size_t crypto_aead_xchacha20poly1305_ietf_abytes(void); + +#define crypto_aead_xchacha20poly1305_ietf_MESSAGEBYTES_MAX \ + (SODIUM_SIZE_MAX - crypto_aead_xchacha20poly1305_ietf_ABYTES) +SODIUM_EXPORT +size_t crypto_aead_xchacha20poly1305_ietf_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_aead_xchacha20poly1305_ietf_encrypt(unsigned char *c, + unsigned long long *clen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((nonnull(1, 8, 9))); + +SODIUM_EXPORT +int crypto_aead_xchacha20poly1305_ietf_decrypt(unsigned char *m, + unsigned long long *mlen_p, + unsigned char *nsec, + const unsigned char *c, + unsigned long long clen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(4, 8, 9))); + +SODIUM_EXPORT +int crypto_aead_xchacha20poly1305_ietf_encrypt_detached(unsigned char *c, + unsigned char *mac, + unsigned long long *maclen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((nonnull(1, 2, 9, 10))); + +SODIUM_EXPORT +int crypto_aead_xchacha20poly1305_ietf_decrypt_detached(unsigned char *m, + unsigned char *nsec, + const unsigned char *c, + unsigned long long clen, + const unsigned char *mac, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(3, 5, 8, 9))); + +SODIUM_EXPORT +void crypto_aead_xchacha20poly1305_ietf_keygen(unsigned char k[crypto_aead_xchacha20poly1305_ietf_KEYBYTES]) + __attribute__ ((nonnull)); + +/* Aliases */ + +#define crypto_aead_xchacha20poly1305_IETF_KEYBYTES crypto_aead_xchacha20poly1305_ietf_KEYBYTES +#define crypto_aead_xchacha20poly1305_IETF_NSECBYTES crypto_aead_xchacha20poly1305_ietf_NSECBYTES +#define crypto_aead_xchacha20poly1305_IETF_NPUBBYTES crypto_aead_xchacha20poly1305_ietf_NPUBBYTES +#define crypto_aead_xchacha20poly1305_IETF_ABYTES crypto_aead_xchacha20poly1305_ietf_ABYTES +#define crypto_aead_xchacha20poly1305_IETF_MESSAGEBYTES_MAX crypto_aead_xchacha20poly1305_ietf_MESSAGEBYTES_MAX + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_auth.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_auth.h new file mode 100644 index 000000000..540aee0e8 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_auth.h @@ -0,0 +1,46 @@ +#ifndef crypto_auth_H +#define crypto_auth_H + +#include + +#include "crypto_auth_hmacsha512256.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_auth_BYTES crypto_auth_hmacsha512256_BYTES +SODIUM_EXPORT +size_t crypto_auth_bytes(void); + +#define crypto_auth_KEYBYTES crypto_auth_hmacsha512256_KEYBYTES +SODIUM_EXPORT +size_t crypto_auth_keybytes(void); + +#define crypto_auth_PRIMITIVE "hmacsha512256" +SODIUM_EXPORT +const char *crypto_auth_primitive(void); + +SODIUM_EXPORT +int crypto_auth(unsigned char *out, const unsigned char *in, + unsigned long long inlen, const unsigned char *k) + __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_auth_verify(const unsigned char *h, const unsigned char *in, + unsigned long long inlen, const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +void crypto_auth_keygen(unsigned char k[crypto_auth_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_auth_hmacsha256.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_auth_hmacsha256.h new file mode 100644 index 000000000..3da864c7d --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_auth_hmacsha256.h @@ -0,0 +1,70 @@ +#ifndef crypto_auth_hmacsha256_H +#define crypto_auth_hmacsha256_H + +#include +#include "crypto_hash_sha256.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_auth_hmacsha256_BYTES 32U +SODIUM_EXPORT +size_t crypto_auth_hmacsha256_bytes(void); + +#define crypto_auth_hmacsha256_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_auth_hmacsha256_keybytes(void); + +SODIUM_EXPORT +int crypto_auth_hmacsha256(unsigned char *out, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *k) __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_auth_hmacsha256_verify(const unsigned char *h, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4))); + +/* ------------------------------------------------------------------------- */ + +typedef struct crypto_auth_hmacsha256_state { + crypto_hash_sha256_state ictx; + crypto_hash_sha256_state octx; +} crypto_auth_hmacsha256_state; + +SODIUM_EXPORT +size_t crypto_auth_hmacsha256_statebytes(void); + +SODIUM_EXPORT +int crypto_auth_hmacsha256_init(crypto_auth_hmacsha256_state *state, + const unsigned char *key, + size_t keylen) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_auth_hmacsha256_update(crypto_auth_hmacsha256_state *state, + const unsigned char *in, + unsigned long long inlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_auth_hmacsha256_final(crypto_auth_hmacsha256_state *state, + unsigned char *out) __attribute__ ((nonnull)); + + +SODIUM_EXPORT +void crypto_auth_hmacsha256_keygen(unsigned char k[crypto_auth_hmacsha256_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_auth_hmacsha512.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_auth_hmacsha512.h new file mode 100644 index 000000000..d992cb816 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_auth_hmacsha512.h @@ -0,0 +1,68 @@ +#ifndef crypto_auth_hmacsha512_H +#define crypto_auth_hmacsha512_H + +#include +#include "crypto_hash_sha512.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_auth_hmacsha512_BYTES 64U +SODIUM_EXPORT +size_t crypto_auth_hmacsha512_bytes(void); + +#define crypto_auth_hmacsha512_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_auth_hmacsha512_keybytes(void); + +SODIUM_EXPORT +int crypto_auth_hmacsha512(unsigned char *out, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *k) __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_auth_hmacsha512_verify(const unsigned char *h, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4))); + +/* ------------------------------------------------------------------------- */ + +typedef struct crypto_auth_hmacsha512_state { + crypto_hash_sha512_state ictx; + crypto_hash_sha512_state octx; +} crypto_auth_hmacsha512_state; + +SODIUM_EXPORT +size_t crypto_auth_hmacsha512_statebytes(void); + +SODIUM_EXPORT +int crypto_auth_hmacsha512_init(crypto_auth_hmacsha512_state *state, + const unsigned char *key, + size_t keylen) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_auth_hmacsha512_update(crypto_auth_hmacsha512_state *state, + const unsigned char *in, + unsigned long long inlen) __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_auth_hmacsha512_final(crypto_auth_hmacsha512_state *state, + unsigned char *out) __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_auth_hmacsha512_keygen(unsigned char k[crypto_auth_hmacsha512_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_auth_hmacsha512256.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_auth_hmacsha512256.h new file mode 100644 index 000000000..3fb526389 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_auth_hmacsha512256.h @@ -0,0 +1,65 @@ +#ifndef crypto_auth_hmacsha512256_H +#define crypto_auth_hmacsha512256_H + +#include +#include "crypto_auth_hmacsha512.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_auth_hmacsha512256_BYTES 32U +SODIUM_EXPORT +size_t crypto_auth_hmacsha512256_bytes(void); + +#define crypto_auth_hmacsha512256_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_auth_hmacsha512256_keybytes(void); + +SODIUM_EXPORT +int crypto_auth_hmacsha512256(unsigned char *out, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *k) __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_auth_hmacsha512256_verify(const unsigned char *h, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4))); + +/* ------------------------------------------------------------------------- */ + +typedef crypto_auth_hmacsha512_state crypto_auth_hmacsha512256_state; + +SODIUM_EXPORT +size_t crypto_auth_hmacsha512256_statebytes(void); + +SODIUM_EXPORT +int crypto_auth_hmacsha512256_init(crypto_auth_hmacsha512256_state *state, + const unsigned char *key, + size_t keylen) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_auth_hmacsha512256_update(crypto_auth_hmacsha512256_state *state, + const unsigned char *in, + unsigned long long inlen) __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_auth_hmacsha512256_final(crypto_auth_hmacsha512256_state *state, + unsigned char *out) __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_auth_hmacsha512256_keygen(unsigned char k[crypto_auth_hmacsha512256_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_box.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_box.h new file mode 100644 index 000000000..e060dd29f --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_box.h @@ -0,0 +1,177 @@ +#ifndef crypto_box_H +#define crypto_box_H + +/* + * THREAD SAFETY: crypto_box_keypair() is thread-safe, + * provided that sodium_init() was called before. + * + * Other functions are always thread-safe. + */ + +#include + +#include "crypto_box_curve25519xsalsa20poly1305.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_box_SEEDBYTES crypto_box_curve25519xsalsa20poly1305_SEEDBYTES +SODIUM_EXPORT +size_t crypto_box_seedbytes(void); + +#define crypto_box_PUBLICKEYBYTES crypto_box_curve25519xsalsa20poly1305_PUBLICKEYBYTES +SODIUM_EXPORT +size_t crypto_box_publickeybytes(void); + +#define crypto_box_SECRETKEYBYTES crypto_box_curve25519xsalsa20poly1305_SECRETKEYBYTES +SODIUM_EXPORT +size_t crypto_box_secretkeybytes(void); + +#define crypto_box_NONCEBYTES crypto_box_curve25519xsalsa20poly1305_NONCEBYTES +SODIUM_EXPORT +size_t crypto_box_noncebytes(void); + +#define crypto_box_MACBYTES crypto_box_curve25519xsalsa20poly1305_MACBYTES +SODIUM_EXPORT +size_t crypto_box_macbytes(void); + +#define crypto_box_MESSAGEBYTES_MAX crypto_box_curve25519xsalsa20poly1305_MESSAGEBYTES_MAX +SODIUM_EXPORT +size_t crypto_box_messagebytes_max(void); + +#define crypto_box_PRIMITIVE "curve25519xsalsa20poly1305" +SODIUM_EXPORT +const char *crypto_box_primitive(void); + +SODIUM_EXPORT +int crypto_box_seed_keypair(unsigned char *pk, unsigned char *sk, + const unsigned char *seed) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_box_keypair(unsigned char *pk, unsigned char *sk) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_box_easy(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *pk, const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4, 5, 6))); + +SODIUM_EXPORT +int crypto_box_open_easy(unsigned char *m, const unsigned char *c, + unsigned long long clen, const unsigned char *n, + const unsigned char *pk, const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5, 6))); + +SODIUM_EXPORT +int crypto_box_detached(unsigned char *c, unsigned char *mac, + const unsigned char *m, unsigned long long mlen, + const unsigned char *n, const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 2, 5, 6, 7))); + +SODIUM_EXPORT +int crypto_box_open_detached(unsigned char *m, const unsigned char *c, + const unsigned char *mac, + unsigned long long clen, + const unsigned char *n, + const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 3, 5, 6, 7))); + +/* -- Precomputation interface -- */ + +#define crypto_box_BEFORENMBYTES crypto_box_curve25519xsalsa20poly1305_BEFORENMBYTES +SODIUM_EXPORT +size_t crypto_box_beforenmbytes(void); + +SODIUM_EXPORT +int crypto_box_beforenm(unsigned char *k, const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_box_easy_afternm(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) __attribute__ ((nonnull(1, 4, 5))); + +SODIUM_EXPORT +int crypto_box_open_easy_afternm(unsigned char *m, const unsigned char *c, + unsigned long long clen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5))); + +SODIUM_EXPORT +int crypto_box_detached_afternm(unsigned char *c, unsigned char *mac, + const unsigned char *m, unsigned long long mlen, + const unsigned char *n, const unsigned char *k) + __attribute__ ((nonnull(1, 2, 5, 6))); + +SODIUM_EXPORT +int crypto_box_open_detached_afternm(unsigned char *m, const unsigned char *c, + const unsigned char *mac, + unsigned long long clen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 3, 5, 6))); + +/* -- Ephemeral SK interface -- */ + +#define crypto_box_SEALBYTES (crypto_box_PUBLICKEYBYTES + crypto_box_MACBYTES) +SODIUM_EXPORT +size_t crypto_box_sealbytes(void); + +SODIUM_EXPORT +int crypto_box_seal(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *pk) + __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_box_seal_open(unsigned char *m, const unsigned char *c, + unsigned long long clen, + const unsigned char *pk, const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5))); + +/* -- NaCl compatibility interface ; Requires padding -- */ + +#define crypto_box_ZEROBYTES crypto_box_curve25519xsalsa20poly1305_ZEROBYTES +SODIUM_EXPORT +size_t crypto_box_zerobytes(void); + +#define crypto_box_BOXZEROBYTES crypto_box_curve25519xsalsa20poly1305_BOXZEROBYTES +SODIUM_EXPORT +size_t crypto_box_boxzerobytes(void); + +SODIUM_EXPORT +int crypto_box(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *pk, const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4, 5, 6))); + +SODIUM_EXPORT +int crypto_box_open(unsigned char *m, const unsigned char *c, + unsigned long long clen, const unsigned char *n, + const unsigned char *pk, const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5, 6))); + +SODIUM_EXPORT +int crypto_box_afternm(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) __attribute__ ((nonnull(1, 4, 5))); + +SODIUM_EXPORT +int crypto_box_open_afternm(unsigned char *m, const unsigned char *c, + unsigned long long clen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5))); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_box_curve25519xchacha20poly1305.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_box_curve25519xchacha20poly1305.h new file mode 100644 index 000000000..26a3d31ef --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_box_curve25519xchacha20poly1305.h @@ -0,0 +1,164 @@ + +#ifndef crypto_box_curve25519xchacha20poly1305_H +#define crypto_box_curve25519xchacha20poly1305_H + +#include +#include "crypto_stream_xchacha20.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_box_curve25519xchacha20poly1305_SEEDBYTES 32U +SODIUM_EXPORT +size_t crypto_box_curve25519xchacha20poly1305_seedbytes(void); + +#define crypto_box_curve25519xchacha20poly1305_PUBLICKEYBYTES 32U +SODIUM_EXPORT +size_t crypto_box_curve25519xchacha20poly1305_publickeybytes(void); + +#define crypto_box_curve25519xchacha20poly1305_SECRETKEYBYTES 32U +SODIUM_EXPORT +size_t crypto_box_curve25519xchacha20poly1305_secretkeybytes(void); + +#define crypto_box_curve25519xchacha20poly1305_BEFORENMBYTES 32U +SODIUM_EXPORT +size_t crypto_box_curve25519xchacha20poly1305_beforenmbytes(void); + +#define crypto_box_curve25519xchacha20poly1305_NONCEBYTES 24U +SODIUM_EXPORT +size_t crypto_box_curve25519xchacha20poly1305_noncebytes(void); + +#define crypto_box_curve25519xchacha20poly1305_MACBYTES 16U +SODIUM_EXPORT +size_t crypto_box_curve25519xchacha20poly1305_macbytes(void); + +#define crypto_box_curve25519xchacha20poly1305_MESSAGEBYTES_MAX \ + (crypto_stream_xchacha20_MESSAGEBYTES_MAX - crypto_box_curve25519xchacha20poly1305_MACBYTES) +SODIUM_EXPORT +size_t crypto_box_curve25519xchacha20poly1305_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_seed_keypair(unsigned char *pk, + unsigned char *sk, + const unsigned char *seed) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_keypair(unsigned char *pk, + unsigned char *sk) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_easy(unsigned char *c, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, + const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4, 5, 6))); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_open_easy(unsigned char *m, + const unsigned char *c, + unsigned long long clen, + const unsigned char *n, + const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5, 6))); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_detached(unsigned char *c, + unsigned char *mac, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, + const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 2, 5, 6, 7))); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_open_detached(unsigned char *m, + const unsigned char *c, + const unsigned char *mac, + unsigned long long clen, + const unsigned char *n, + const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 3, 5, 6, 7))); + +/* -- Precomputation interface -- */ + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_beforenm(unsigned char *k, + const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_easy_afternm(unsigned char *c, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull(1, 4, 5))); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_open_easy_afternm(unsigned char *m, + const unsigned char *c, + unsigned long long clen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5))); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_detached_afternm(unsigned char *c, + unsigned char *mac, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull(1, 2, 5, 6))); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_open_detached_afternm(unsigned char *m, + const unsigned char *c, + const unsigned char *mac, + unsigned long long clen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 3, 5, 6))); + +/* -- Ephemeral SK interface -- */ + +#define crypto_box_curve25519xchacha20poly1305_SEALBYTES \ + (crypto_box_curve25519xchacha20poly1305_PUBLICKEYBYTES + \ + crypto_box_curve25519xchacha20poly1305_MACBYTES) + +SODIUM_EXPORT +size_t crypto_box_curve25519xchacha20poly1305_sealbytes(void); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_seal(unsigned char *c, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *pk) + __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_seal_open(unsigned char *m, + const unsigned char *c, + unsigned long long clen, + const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5))); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_box_curve25519xsalsa20poly1305.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_box_curve25519xsalsa20poly1305.h new file mode 100644 index 000000000..e733f4999 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_box_curve25519xsalsa20poly1305.h @@ -0,0 +1,112 @@ +#ifndef crypto_box_curve25519xsalsa20poly1305_H +#define crypto_box_curve25519xsalsa20poly1305_H + +#include +#include "crypto_stream_xsalsa20.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_box_curve25519xsalsa20poly1305_SEEDBYTES 32U +SODIUM_EXPORT +size_t crypto_box_curve25519xsalsa20poly1305_seedbytes(void); + +#define crypto_box_curve25519xsalsa20poly1305_PUBLICKEYBYTES 32U +SODIUM_EXPORT +size_t crypto_box_curve25519xsalsa20poly1305_publickeybytes(void); + +#define crypto_box_curve25519xsalsa20poly1305_SECRETKEYBYTES 32U +SODIUM_EXPORT +size_t crypto_box_curve25519xsalsa20poly1305_secretkeybytes(void); + +#define crypto_box_curve25519xsalsa20poly1305_BEFORENMBYTES 32U +SODIUM_EXPORT +size_t crypto_box_curve25519xsalsa20poly1305_beforenmbytes(void); + +#define crypto_box_curve25519xsalsa20poly1305_NONCEBYTES 24U +SODIUM_EXPORT +size_t crypto_box_curve25519xsalsa20poly1305_noncebytes(void); + +#define crypto_box_curve25519xsalsa20poly1305_MACBYTES 16U +SODIUM_EXPORT +size_t crypto_box_curve25519xsalsa20poly1305_macbytes(void); + +/* Only for the libsodium API - The NaCl compatibility API would require BOXZEROBYTES extra bytes */ +#define crypto_box_curve25519xsalsa20poly1305_MESSAGEBYTES_MAX \ + (crypto_stream_xsalsa20_MESSAGEBYTES_MAX - crypto_box_curve25519xsalsa20poly1305_MACBYTES) +SODIUM_EXPORT +size_t crypto_box_curve25519xsalsa20poly1305_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_box_curve25519xsalsa20poly1305_seed_keypair(unsigned char *pk, + unsigned char *sk, + const unsigned char *seed) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_box_curve25519xsalsa20poly1305_keypair(unsigned char *pk, + unsigned char *sk) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_box_curve25519xsalsa20poly1305_beforenm(unsigned char *k, + const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +/* -- NaCl compatibility interface ; Requires padding -- */ + +#define crypto_box_curve25519xsalsa20poly1305_BOXZEROBYTES 16U +SODIUM_EXPORT +size_t crypto_box_curve25519xsalsa20poly1305_boxzerobytes(void); + +#define crypto_box_curve25519xsalsa20poly1305_ZEROBYTES \ + (crypto_box_curve25519xsalsa20poly1305_BOXZEROBYTES + \ + crypto_box_curve25519xsalsa20poly1305_MACBYTES) +SODIUM_EXPORT +size_t crypto_box_curve25519xsalsa20poly1305_zerobytes(void); + +SODIUM_EXPORT +int crypto_box_curve25519xsalsa20poly1305(unsigned char *c, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, + const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4, 5, 6))); + +SODIUM_EXPORT +int crypto_box_curve25519xsalsa20poly1305_open(unsigned char *m, + const unsigned char *c, + unsigned long long clen, + const unsigned char *n, + const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5, 6))); + +SODIUM_EXPORT +int crypto_box_curve25519xsalsa20poly1305_afternm(unsigned char *c, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull(1, 4, 5))); + +SODIUM_EXPORT +int crypto_box_curve25519xsalsa20poly1305_open_afternm(unsigned char *m, + const unsigned char *c, + unsigned long long clen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5))); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_core_ed25519.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_core_ed25519.h new file mode 100644 index 000000000..3eae00c45 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_core_ed25519.h @@ -0,0 +1,100 @@ +#ifndef crypto_core_ed25519_H +#define crypto_core_ed25519_H + +#include +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_core_ed25519_BYTES 32 +SODIUM_EXPORT +size_t crypto_core_ed25519_bytes(void); + +#define crypto_core_ed25519_UNIFORMBYTES 32 +SODIUM_EXPORT +size_t crypto_core_ed25519_uniformbytes(void); + +#define crypto_core_ed25519_HASHBYTES 64 +SODIUM_EXPORT +size_t crypto_core_ed25519_hashbytes(void); + +#define crypto_core_ed25519_SCALARBYTES 32 +SODIUM_EXPORT +size_t crypto_core_ed25519_scalarbytes(void); + +#define crypto_core_ed25519_NONREDUCEDSCALARBYTES 64 +SODIUM_EXPORT +size_t crypto_core_ed25519_nonreducedscalarbytes(void); + +SODIUM_EXPORT +int crypto_core_ed25519_is_valid_point(const unsigned char *p) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_core_ed25519_add(unsigned char *r, + const unsigned char *p, const unsigned char *q) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_core_ed25519_sub(unsigned char *r, + const unsigned char *p, const unsigned char *q) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_core_ed25519_from_uniform(unsigned char *p, const unsigned char *r) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_core_ed25519_from_hash(unsigned char *p, const unsigned char *h) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ed25519_random(unsigned char *p) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ed25519_scalar_random(unsigned char *r) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_core_ed25519_scalar_invert(unsigned char *recip, const unsigned char *s) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ed25519_scalar_negate(unsigned char *neg, const unsigned char *s) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ed25519_scalar_complement(unsigned char *comp, const unsigned char *s) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ed25519_scalar_add(unsigned char *z, const unsigned char *x, + const unsigned char *y) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ed25519_scalar_sub(unsigned char *z, const unsigned char *x, + const unsigned char *y) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ed25519_scalar_mul(unsigned char *z, const unsigned char *x, + const unsigned char *y) + __attribute__ ((nonnull)); + +/* + * The interval `s` is sampled from should be at least 317 bits to ensure almost + * uniformity of `r` over `L`. + */ +SODIUM_EXPORT +void crypto_core_ed25519_scalar_reduce(unsigned char *r, const unsigned char *s) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_core_hchacha20.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_core_hchacha20.h new file mode 100644 index 000000000..ece141b09 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_core_hchacha20.h @@ -0,0 +1,36 @@ +#ifndef crypto_core_hchacha20_H +#define crypto_core_hchacha20_H + +#include +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_core_hchacha20_OUTPUTBYTES 32U +SODIUM_EXPORT +size_t crypto_core_hchacha20_outputbytes(void); + +#define crypto_core_hchacha20_INPUTBYTES 16U +SODIUM_EXPORT +size_t crypto_core_hchacha20_inputbytes(void); + +#define crypto_core_hchacha20_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_core_hchacha20_keybytes(void); + +#define crypto_core_hchacha20_CONSTBYTES 16U +SODIUM_EXPORT +size_t crypto_core_hchacha20_constbytes(void); + +SODIUM_EXPORT +int crypto_core_hchacha20(unsigned char *out, const unsigned char *in, + const unsigned char *k, const unsigned char *c) + __attribute__ ((nonnull(1, 2, 3))); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_core_hsalsa20.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_core_hsalsa20.h new file mode 100644 index 000000000..4bf7a4878 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_core_hsalsa20.h @@ -0,0 +1,36 @@ +#ifndef crypto_core_hsalsa20_H +#define crypto_core_hsalsa20_H + +#include +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_core_hsalsa20_OUTPUTBYTES 32U +SODIUM_EXPORT +size_t crypto_core_hsalsa20_outputbytes(void); + +#define crypto_core_hsalsa20_INPUTBYTES 16U +SODIUM_EXPORT +size_t crypto_core_hsalsa20_inputbytes(void); + +#define crypto_core_hsalsa20_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_core_hsalsa20_keybytes(void); + +#define crypto_core_hsalsa20_CONSTBYTES 16U +SODIUM_EXPORT +size_t crypto_core_hsalsa20_constbytes(void); + +SODIUM_EXPORT +int crypto_core_hsalsa20(unsigned char *out, const unsigned char *in, + const unsigned char *k, const unsigned char *c) + __attribute__ ((nonnull(1, 2, 3))); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_core_ristretto255.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_core_ristretto255.h new file mode 100644 index 000000000..f2820e557 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_core_ristretto255.h @@ -0,0 +1,100 @@ +#ifndef crypto_core_ristretto255_H +#define crypto_core_ristretto255_H + +#include +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_core_ristretto255_BYTES 32 +SODIUM_EXPORT +size_t crypto_core_ristretto255_bytes(void); + +#define crypto_core_ristretto255_HASHBYTES 64 +SODIUM_EXPORT +size_t crypto_core_ristretto255_hashbytes(void); + +#define crypto_core_ristretto255_SCALARBYTES 32 +SODIUM_EXPORT +size_t crypto_core_ristretto255_scalarbytes(void); + +#define crypto_core_ristretto255_NONREDUCEDSCALARBYTES 64 +SODIUM_EXPORT +size_t crypto_core_ristretto255_nonreducedscalarbytes(void); + +SODIUM_EXPORT +int crypto_core_ristretto255_is_valid_point(const unsigned char *p) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_core_ristretto255_add(unsigned char *r, + const unsigned char *p, const unsigned char *q) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_core_ristretto255_sub(unsigned char *r, + const unsigned char *p, const unsigned char *q) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_core_ristretto255_from_hash(unsigned char *p, + const unsigned char *r) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ristretto255_random(unsigned char *p) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ristretto255_scalar_random(unsigned char *r) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_core_ristretto255_scalar_invert(unsigned char *recip, + const unsigned char *s) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ristretto255_scalar_negate(unsigned char *neg, + const unsigned char *s) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ristretto255_scalar_complement(unsigned char *comp, + const unsigned char *s) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ristretto255_scalar_add(unsigned char *z, + const unsigned char *x, + const unsigned char *y) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ristretto255_scalar_sub(unsigned char *z, + const unsigned char *x, + const unsigned char *y) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ristretto255_scalar_mul(unsigned char *z, + const unsigned char *x, + const unsigned char *y) + __attribute__ ((nonnull)); + +/* + * The interval `s` is sampled from should be at least 317 bits to ensure almost + * uniformity of `r` over `L`. + */ +SODIUM_EXPORT +void crypto_core_ristretto255_scalar_reduce(unsigned char *r, + const unsigned char *s) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_core_salsa20.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_core_salsa20.h new file mode 100644 index 000000000..bd79fd9f5 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_core_salsa20.h @@ -0,0 +1,36 @@ +#ifndef crypto_core_salsa20_H +#define crypto_core_salsa20_H + +#include +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_core_salsa20_OUTPUTBYTES 64U +SODIUM_EXPORT +size_t crypto_core_salsa20_outputbytes(void); + +#define crypto_core_salsa20_INPUTBYTES 16U +SODIUM_EXPORT +size_t crypto_core_salsa20_inputbytes(void); + +#define crypto_core_salsa20_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_core_salsa20_keybytes(void); + +#define crypto_core_salsa20_CONSTBYTES 16U +SODIUM_EXPORT +size_t crypto_core_salsa20_constbytes(void); + +SODIUM_EXPORT +int crypto_core_salsa20(unsigned char *out, const unsigned char *in, + const unsigned char *k, const unsigned char *c) + __attribute__ ((nonnull(1, 2, 3))); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_core_salsa2012.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_core_salsa2012.h new file mode 100644 index 000000000..05957591c --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_core_salsa2012.h @@ -0,0 +1,36 @@ +#ifndef crypto_core_salsa2012_H +#define crypto_core_salsa2012_H + +#include +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_core_salsa2012_OUTPUTBYTES 64U +SODIUM_EXPORT +size_t crypto_core_salsa2012_outputbytes(void); + +#define crypto_core_salsa2012_INPUTBYTES 16U +SODIUM_EXPORT +size_t crypto_core_salsa2012_inputbytes(void); + +#define crypto_core_salsa2012_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_core_salsa2012_keybytes(void); + +#define crypto_core_salsa2012_CONSTBYTES 16U +SODIUM_EXPORT +size_t crypto_core_salsa2012_constbytes(void); + +SODIUM_EXPORT +int crypto_core_salsa2012(unsigned char *out, const unsigned char *in, + const unsigned char *k, const unsigned char *c) + __attribute__ ((nonnull(1, 2, 3))); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_core_salsa208.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_core_salsa208.h new file mode 100644 index 000000000..d2f216af2 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_core_salsa208.h @@ -0,0 +1,40 @@ +#ifndef crypto_core_salsa208_H +#define crypto_core_salsa208_H + +#include +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_core_salsa208_OUTPUTBYTES 64U +SODIUM_EXPORT +size_t crypto_core_salsa208_outputbytes(void) + __attribute__ ((deprecated)); + +#define crypto_core_salsa208_INPUTBYTES 16U +SODIUM_EXPORT +size_t crypto_core_salsa208_inputbytes(void) + __attribute__ ((deprecated)); + +#define crypto_core_salsa208_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_core_salsa208_keybytes(void) + __attribute__ ((deprecated)); + +#define crypto_core_salsa208_CONSTBYTES 16U +SODIUM_EXPORT +size_t crypto_core_salsa208_constbytes(void) + __attribute__ ((deprecated)); + +SODIUM_EXPORT +int crypto_core_salsa208(unsigned char *out, const unsigned char *in, + const unsigned char *k, const unsigned char *c) + __attribute__ ((nonnull(1, 2, 3))); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_generichash.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_generichash.h new file mode 100644 index 000000000..d897e5d26 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_generichash.h @@ -0,0 +1,84 @@ +#ifndef crypto_generichash_H +#define crypto_generichash_H + +#include + +#include "crypto_generichash_blake2b.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_generichash_BYTES_MIN crypto_generichash_blake2b_BYTES_MIN +SODIUM_EXPORT +size_t crypto_generichash_bytes_min(void); + +#define crypto_generichash_BYTES_MAX crypto_generichash_blake2b_BYTES_MAX +SODIUM_EXPORT +size_t crypto_generichash_bytes_max(void); + +#define crypto_generichash_BYTES crypto_generichash_blake2b_BYTES +SODIUM_EXPORT +size_t crypto_generichash_bytes(void); + +#define crypto_generichash_KEYBYTES_MIN crypto_generichash_blake2b_KEYBYTES_MIN +SODIUM_EXPORT +size_t crypto_generichash_keybytes_min(void); + +#define crypto_generichash_KEYBYTES_MAX crypto_generichash_blake2b_KEYBYTES_MAX +SODIUM_EXPORT +size_t crypto_generichash_keybytes_max(void); + +#define crypto_generichash_KEYBYTES crypto_generichash_blake2b_KEYBYTES +SODIUM_EXPORT +size_t crypto_generichash_keybytes(void); + +#define crypto_generichash_PRIMITIVE "blake2b" +SODIUM_EXPORT +const char *crypto_generichash_primitive(void); + +/* + * Important when writing bindings for other programming languages: + * the state address should be 64-bytes aligned. + */ +typedef crypto_generichash_blake2b_state crypto_generichash_state; + +SODIUM_EXPORT +size_t crypto_generichash_statebytes(void); + +SODIUM_EXPORT +int crypto_generichash(unsigned char *out, size_t outlen, + const unsigned char *in, unsigned long long inlen, + const unsigned char *key, size_t keylen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_generichash_init(crypto_generichash_state *state, + const unsigned char *key, + const size_t keylen, const size_t outlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_generichash_update(crypto_generichash_state *state, + const unsigned char *in, + unsigned long long inlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_generichash_final(crypto_generichash_state *state, + unsigned char *out, const size_t outlen) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_generichash_keygen(unsigned char k[crypto_generichash_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_generichash_blake2b.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_generichash_blake2b.h new file mode 100644 index 000000000..fee9d8ad1 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_generichash_blake2b.h @@ -0,0 +1,118 @@ +#ifndef crypto_generichash_blake2b_H +#define crypto_generichash_blake2b_H + +#include +#include +#include + +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#if defined(__IBMC__) || defined(__SUNPRO_C) || defined(__SUNPRO_CC) +# pragma pack(1) +#else +# pragma pack(push, 1) +#endif + +typedef struct CRYPTO_ALIGN(64) crypto_generichash_blake2b_state { + unsigned char opaque[384]; +} crypto_generichash_blake2b_state; + +#if defined(__IBMC__) || defined(__SUNPRO_C) || defined(__SUNPRO_CC) +# pragma pack() +#else +# pragma pack(pop) +#endif + +#define crypto_generichash_blake2b_BYTES_MIN 16U +SODIUM_EXPORT +size_t crypto_generichash_blake2b_bytes_min(void); + +#define crypto_generichash_blake2b_BYTES_MAX 64U +SODIUM_EXPORT +size_t crypto_generichash_blake2b_bytes_max(void); + +#define crypto_generichash_blake2b_BYTES 32U +SODIUM_EXPORT +size_t crypto_generichash_blake2b_bytes(void); + +#define crypto_generichash_blake2b_KEYBYTES_MIN 16U +SODIUM_EXPORT +size_t crypto_generichash_blake2b_keybytes_min(void); + +#define crypto_generichash_blake2b_KEYBYTES_MAX 64U +SODIUM_EXPORT +size_t crypto_generichash_blake2b_keybytes_max(void); + +#define crypto_generichash_blake2b_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_generichash_blake2b_keybytes(void); + +#define crypto_generichash_blake2b_SALTBYTES 16U +SODIUM_EXPORT +size_t crypto_generichash_blake2b_saltbytes(void); + +#define crypto_generichash_blake2b_PERSONALBYTES 16U +SODIUM_EXPORT +size_t crypto_generichash_blake2b_personalbytes(void); + +SODIUM_EXPORT +size_t crypto_generichash_blake2b_statebytes(void); + +SODIUM_EXPORT +int crypto_generichash_blake2b(unsigned char *out, size_t outlen, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *key, size_t keylen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_generichash_blake2b_salt_personal(unsigned char *out, size_t outlen, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *key, + size_t keylen, + const unsigned char *salt, + const unsigned char *personal) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_generichash_blake2b_init(crypto_generichash_blake2b_state *state, + const unsigned char *key, + const size_t keylen, const size_t outlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_generichash_blake2b_init_salt_personal(crypto_generichash_blake2b_state *state, + const unsigned char *key, + const size_t keylen, const size_t outlen, + const unsigned char *salt, + const unsigned char *personal) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_generichash_blake2b_update(crypto_generichash_blake2b_state *state, + const unsigned char *in, + unsigned long long inlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_generichash_blake2b_final(crypto_generichash_blake2b_state *state, + unsigned char *out, + const size_t outlen) __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_generichash_blake2b_keygen(unsigned char k[crypto_generichash_blake2b_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_hash.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_hash.h new file mode 100644 index 000000000..8752f9caf --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_hash.h @@ -0,0 +1,40 @@ +#ifndef crypto_hash_H +#define crypto_hash_H + +/* + * WARNING: Unless you absolutely need to use SHA512 for interoperatibility, + * purposes, you might want to consider crypto_generichash() instead. + * Unlike SHA512, crypto_generichash() is not vulnerable to length + * extension attacks. + */ + +#include + +#include "crypto_hash_sha512.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_hash_BYTES crypto_hash_sha512_BYTES +SODIUM_EXPORT +size_t crypto_hash_bytes(void); + +SODIUM_EXPORT +int crypto_hash(unsigned char *out, const unsigned char *in, + unsigned long long inlen) __attribute__ ((nonnull(1))); + +#define crypto_hash_PRIMITIVE "sha512" +SODIUM_EXPORT +const char *crypto_hash_primitive(void) + __attribute__ ((warn_unused_result)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_hash_sha256.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_hash_sha256.h new file mode 100644 index 000000000..b18217e18 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_hash_sha256.h @@ -0,0 +1,60 @@ +#ifndef crypto_hash_sha256_H +#define crypto_hash_sha256_H + +/* + * WARNING: Unless you absolutely need to use SHA256 for interoperatibility, + * purposes, you might want to consider crypto_generichash() instead. + * Unlike SHA256, crypto_generichash() is not vulnerable to length + * extension attacks. + */ + +#include +#include +#include + +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +typedef struct crypto_hash_sha256_state { + uint32_t state[8]; + uint64_t count; + uint8_t buf[64]; +} crypto_hash_sha256_state; + +SODIUM_EXPORT +size_t crypto_hash_sha256_statebytes(void); + +#define crypto_hash_sha256_BYTES 32U +SODIUM_EXPORT +size_t crypto_hash_sha256_bytes(void); + +SODIUM_EXPORT +int crypto_hash_sha256(unsigned char *out, const unsigned char *in, + unsigned long long inlen) __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_hash_sha256_init(crypto_hash_sha256_state *state) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_hash_sha256_update(crypto_hash_sha256_state *state, + const unsigned char *in, + unsigned long long inlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_hash_sha256_final(crypto_hash_sha256_state *state, + unsigned char *out) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_hash_sha512.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_hash_sha512.h new file mode 100644 index 000000000..8efa7193a --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_hash_sha512.h @@ -0,0 +1,60 @@ +#ifndef crypto_hash_sha512_H +#define crypto_hash_sha512_H + +/* + * WARNING: Unless you absolutely need to use SHA512 for interoperatibility, + * purposes, you might want to consider crypto_generichash() instead. + * Unlike SHA512, crypto_generichash() is not vulnerable to length + * extension attacks. + */ + +#include +#include +#include + +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +typedef struct crypto_hash_sha512_state { + uint64_t state[8]; + uint64_t count[2]; + uint8_t buf[128]; +} crypto_hash_sha512_state; + +SODIUM_EXPORT +size_t crypto_hash_sha512_statebytes(void); + +#define crypto_hash_sha512_BYTES 64U +SODIUM_EXPORT +size_t crypto_hash_sha512_bytes(void); + +SODIUM_EXPORT +int crypto_hash_sha512(unsigned char *out, const unsigned char *in, + unsigned long long inlen) __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_hash_sha512_init(crypto_hash_sha512_state *state) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_hash_sha512_update(crypto_hash_sha512_state *state, + const unsigned char *in, + unsigned long long inlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_hash_sha512_final(crypto_hash_sha512_state *state, + unsigned char *out) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_kdf.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_kdf.h new file mode 100644 index 000000000..ac2fc6183 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_kdf.h @@ -0,0 +1,53 @@ +#ifndef crypto_kdf_H +#define crypto_kdf_H + +#include +#include + +#include "crypto_kdf_blake2b.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_kdf_BYTES_MIN crypto_kdf_blake2b_BYTES_MIN +SODIUM_EXPORT +size_t crypto_kdf_bytes_min(void); + +#define crypto_kdf_BYTES_MAX crypto_kdf_blake2b_BYTES_MAX +SODIUM_EXPORT +size_t crypto_kdf_bytes_max(void); + +#define crypto_kdf_CONTEXTBYTES crypto_kdf_blake2b_CONTEXTBYTES +SODIUM_EXPORT +size_t crypto_kdf_contextbytes(void); + +#define crypto_kdf_KEYBYTES crypto_kdf_blake2b_KEYBYTES +SODIUM_EXPORT +size_t crypto_kdf_keybytes(void); + +#define crypto_kdf_PRIMITIVE "blake2b" +SODIUM_EXPORT +const char *crypto_kdf_primitive(void) + __attribute__ ((warn_unused_result)); + +SODIUM_EXPORT +int crypto_kdf_derive_from_key(unsigned char *subkey, size_t subkey_len, + uint64_t subkey_id, + const char ctx[crypto_kdf_CONTEXTBYTES], + const unsigned char key[crypto_kdf_KEYBYTES]) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_kdf_keygen(unsigned char k[crypto_kdf_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_kdf_blake2b.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_kdf_blake2b.h new file mode 100644 index 000000000..3ae47dd32 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_kdf_blake2b.h @@ -0,0 +1,44 @@ +#ifndef crypto_kdf_blake2b_H +#define crypto_kdf_blake2b_H + +#include +#include + +#include "crypto_kdf_blake2b.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_kdf_blake2b_BYTES_MIN 16 +SODIUM_EXPORT +size_t crypto_kdf_blake2b_bytes_min(void); + +#define crypto_kdf_blake2b_BYTES_MAX 64 +SODIUM_EXPORT +size_t crypto_kdf_blake2b_bytes_max(void); + +#define crypto_kdf_blake2b_CONTEXTBYTES 8 +SODIUM_EXPORT +size_t crypto_kdf_blake2b_contextbytes(void); + +#define crypto_kdf_blake2b_KEYBYTES 32 +SODIUM_EXPORT +size_t crypto_kdf_blake2b_keybytes(void); + +SODIUM_EXPORT +int crypto_kdf_blake2b_derive_from_key(unsigned char *subkey, size_t subkey_len, + uint64_t subkey_id, + const char ctx[crypto_kdf_blake2b_CONTEXTBYTES], + const unsigned char key[crypto_kdf_blake2b_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_kx.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_kx.h new file mode 100644 index 000000000..347132c32 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_kx.h @@ -0,0 +1,66 @@ +#ifndef crypto_kx_H +#define crypto_kx_H + +#include + +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_kx_PUBLICKEYBYTES 32 +SODIUM_EXPORT +size_t crypto_kx_publickeybytes(void); + +#define crypto_kx_SECRETKEYBYTES 32 +SODIUM_EXPORT +size_t crypto_kx_secretkeybytes(void); + +#define crypto_kx_SEEDBYTES 32 +SODIUM_EXPORT +size_t crypto_kx_seedbytes(void); + +#define crypto_kx_SESSIONKEYBYTES 32 +SODIUM_EXPORT +size_t crypto_kx_sessionkeybytes(void); + +#define crypto_kx_PRIMITIVE "x25519blake2b" +SODIUM_EXPORT +const char *crypto_kx_primitive(void); + +SODIUM_EXPORT +int crypto_kx_seed_keypair(unsigned char pk[crypto_kx_PUBLICKEYBYTES], + unsigned char sk[crypto_kx_SECRETKEYBYTES], + const unsigned char seed[crypto_kx_SEEDBYTES]) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_kx_keypair(unsigned char pk[crypto_kx_PUBLICKEYBYTES], + unsigned char sk[crypto_kx_SECRETKEYBYTES]) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_kx_client_session_keys(unsigned char rx[crypto_kx_SESSIONKEYBYTES], + unsigned char tx[crypto_kx_SESSIONKEYBYTES], + const unsigned char client_pk[crypto_kx_PUBLICKEYBYTES], + const unsigned char client_sk[crypto_kx_SECRETKEYBYTES], + const unsigned char server_pk[crypto_kx_PUBLICKEYBYTES]) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(3, 4, 5))); + +SODIUM_EXPORT +int crypto_kx_server_session_keys(unsigned char rx[crypto_kx_SESSIONKEYBYTES], + unsigned char tx[crypto_kx_SESSIONKEYBYTES], + const unsigned char server_pk[crypto_kx_PUBLICKEYBYTES], + const unsigned char server_sk[crypto_kx_SECRETKEYBYTES], + const unsigned char client_pk[crypto_kx_PUBLICKEYBYTES]) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(3, 4, 5))); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_onetimeauth.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_onetimeauth.h new file mode 100644 index 000000000..7cd7b0706 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_onetimeauth.h @@ -0,0 +1,65 @@ +#ifndef crypto_onetimeauth_H +#define crypto_onetimeauth_H + +#include + +#include "crypto_onetimeauth_poly1305.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +typedef crypto_onetimeauth_poly1305_state crypto_onetimeauth_state; + +SODIUM_EXPORT +size_t crypto_onetimeauth_statebytes(void); + +#define crypto_onetimeauth_BYTES crypto_onetimeauth_poly1305_BYTES +SODIUM_EXPORT +size_t crypto_onetimeauth_bytes(void); + +#define crypto_onetimeauth_KEYBYTES crypto_onetimeauth_poly1305_KEYBYTES +SODIUM_EXPORT +size_t crypto_onetimeauth_keybytes(void); + +#define crypto_onetimeauth_PRIMITIVE "poly1305" +SODIUM_EXPORT +const char *crypto_onetimeauth_primitive(void); + +SODIUM_EXPORT +int crypto_onetimeauth(unsigned char *out, const unsigned char *in, + unsigned long long inlen, const unsigned char *k) + __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_onetimeauth_verify(const unsigned char *h, const unsigned char *in, + unsigned long long inlen, const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_onetimeauth_init(crypto_onetimeauth_state *state, + const unsigned char *key) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_onetimeauth_update(crypto_onetimeauth_state *state, + const unsigned char *in, + unsigned long long inlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_onetimeauth_final(crypto_onetimeauth_state *state, + unsigned char *out) __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_onetimeauth_keygen(unsigned char k[crypto_onetimeauth_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_onetimeauth_poly1305.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_onetimeauth_poly1305.h new file mode 100644 index 000000000..f3e34d86d --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_onetimeauth_poly1305.h @@ -0,0 +1,72 @@ +#ifndef crypto_onetimeauth_poly1305_H +#define crypto_onetimeauth_poly1305_H + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#include +#include +#include + +#include + +#include "export.h" + +typedef struct CRYPTO_ALIGN(16) crypto_onetimeauth_poly1305_state { + unsigned char opaque[256]; +} crypto_onetimeauth_poly1305_state; + +SODIUM_EXPORT +size_t crypto_onetimeauth_poly1305_statebytes(void); + +#define crypto_onetimeauth_poly1305_BYTES 16U +SODIUM_EXPORT +size_t crypto_onetimeauth_poly1305_bytes(void); + +#define crypto_onetimeauth_poly1305_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_onetimeauth_poly1305_keybytes(void); + +SODIUM_EXPORT +int crypto_onetimeauth_poly1305(unsigned char *out, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *k) + __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_onetimeauth_poly1305_verify(const unsigned char *h, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_onetimeauth_poly1305_init(crypto_onetimeauth_poly1305_state *state, + const unsigned char *key) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_onetimeauth_poly1305_update(crypto_onetimeauth_poly1305_state *state, + const unsigned char *in, + unsigned long long inlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_onetimeauth_poly1305_final(crypto_onetimeauth_poly1305_state *state, + unsigned char *out) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_onetimeauth_poly1305_keygen(unsigned char k[crypto_onetimeauth_poly1305_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_pwhash.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_pwhash.h new file mode 100644 index 000000000..585a993ef --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_pwhash.h @@ -0,0 +1,147 @@ +#ifndef crypto_pwhash_H +#define crypto_pwhash_H + +#include + +#include "crypto_pwhash_argon2i.h" +#include "crypto_pwhash_argon2id.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_pwhash_ALG_ARGON2I13 crypto_pwhash_argon2i_ALG_ARGON2I13 +SODIUM_EXPORT +int crypto_pwhash_alg_argon2i13(void); + +#define crypto_pwhash_ALG_ARGON2ID13 crypto_pwhash_argon2id_ALG_ARGON2ID13 +SODIUM_EXPORT +int crypto_pwhash_alg_argon2id13(void); + +#define crypto_pwhash_ALG_DEFAULT crypto_pwhash_ALG_ARGON2ID13 +SODIUM_EXPORT +int crypto_pwhash_alg_default(void); + +#define crypto_pwhash_BYTES_MIN crypto_pwhash_argon2id_BYTES_MIN +SODIUM_EXPORT +size_t crypto_pwhash_bytes_min(void); + +#define crypto_pwhash_BYTES_MAX crypto_pwhash_argon2id_BYTES_MAX +SODIUM_EXPORT +size_t crypto_pwhash_bytes_max(void); + +#define crypto_pwhash_PASSWD_MIN crypto_pwhash_argon2id_PASSWD_MIN +SODIUM_EXPORT +size_t crypto_pwhash_passwd_min(void); + +#define crypto_pwhash_PASSWD_MAX crypto_pwhash_argon2id_PASSWD_MAX +SODIUM_EXPORT +size_t crypto_pwhash_passwd_max(void); + +#define crypto_pwhash_SALTBYTES crypto_pwhash_argon2id_SALTBYTES +SODIUM_EXPORT +size_t crypto_pwhash_saltbytes(void); + +#define crypto_pwhash_STRBYTES crypto_pwhash_argon2id_STRBYTES +SODIUM_EXPORT +size_t crypto_pwhash_strbytes(void); + +#define crypto_pwhash_STRPREFIX crypto_pwhash_argon2id_STRPREFIX +SODIUM_EXPORT +const char *crypto_pwhash_strprefix(void); + +#define crypto_pwhash_OPSLIMIT_MIN crypto_pwhash_argon2id_OPSLIMIT_MIN +SODIUM_EXPORT +size_t crypto_pwhash_opslimit_min(void); + +#define crypto_pwhash_OPSLIMIT_MAX crypto_pwhash_argon2id_OPSLIMIT_MAX +SODIUM_EXPORT +size_t crypto_pwhash_opslimit_max(void); + +#define crypto_pwhash_MEMLIMIT_MIN crypto_pwhash_argon2id_MEMLIMIT_MIN +SODIUM_EXPORT +size_t crypto_pwhash_memlimit_min(void); + +#define crypto_pwhash_MEMLIMIT_MAX crypto_pwhash_argon2id_MEMLIMIT_MAX +SODIUM_EXPORT +size_t crypto_pwhash_memlimit_max(void); + +#define crypto_pwhash_OPSLIMIT_INTERACTIVE crypto_pwhash_argon2id_OPSLIMIT_INTERACTIVE +SODIUM_EXPORT +size_t crypto_pwhash_opslimit_interactive(void); + +#define crypto_pwhash_MEMLIMIT_INTERACTIVE crypto_pwhash_argon2id_MEMLIMIT_INTERACTIVE +SODIUM_EXPORT +size_t crypto_pwhash_memlimit_interactive(void); + +#define crypto_pwhash_OPSLIMIT_MODERATE crypto_pwhash_argon2id_OPSLIMIT_MODERATE +SODIUM_EXPORT +size_t crypto_pwhash_opslimit_moderate(void); + +#define crypto_pwhash_MEMLIMIT_MODERATE crypto_pwhash_argon2id_MEMLIMIT_MODERATE +SODIUM_EXPORT +size_t crypto_pwhash_memlimit_moderate(void); + +#define crypto_pwhash_OPSLIMIT_SENSITIVE crypto_pwhash_argon2id_OPSLIMIT_SENSITIVE +SODIUM_EXPORT +size_t crypto_pwhash_opslimit_sensitive(void); + +#define crypto_pwhash_MEMLIMIT_SENSITIVE crypto_pwhash_argon2id_MEMLIMIT_SENSITIVE +SODIUM_EXPORT +size_t crypto_pwhash_memlimit_sensitive(void); + +/* + * With this function, do not forget to store all parameters, including the + * algorithm identifier in order to produce deterministic output. + * The crypto_pwhash_* definitions, including crypto_pwhash_ALG_DEFAULT, + * may change. + */ +SODIUM_EXPORT +int crypto_pwhash(unsigned char * const out, unsigned long long outlen, + const char * const passwd, unsigned long long passwdlen, + const unsigned char * const salt, + unsigned long long opslimit, size_t memlimit, int alg) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +/* + * The output string already includes all the required parameters, including + * the algorithm identifier. The string is all that has to be stored in + * order to verify a password. + */ +SODIUM_EXPORT +int crypto_pwhash_str(char out[crypto_pwhash_STRBYTES], + const char * const passwd, unsigned long long passwdlen, + unsigned long long opslimit, size_t memlimit) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_str_alg(char out[crypto_pwhash_STRBYTES], + const char * const passwd, unsigned long long passwdlen, + unsigned long long opslimit, size_t memlimit, int alg) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_str_verify(const char str[crypto_pwhash_STRBYTES], + const char * const passwd, + unsigned long long passwdlen) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_str_needs_rehash(const char str[crypto_pwhash_STRBYTES], + unsigned long long opslimit, size_t memlimit) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +#define crypto_pwhash_PRIMITIVE "argon2i" +SODIUM_EXPORT +const char *crypto_pwhash_primitive(void) + __attribute__ ((warn_unused_result)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_pwhash_argon2i.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_pwhash_argon2i.h new file mode 100644 index 000000000..88ff6221d --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_pwhash_argon2i.h @@ -0,0 +1,122 @@ +#ifndef crypto_pwhash_argon2i_H +#define crypto_pwhash_argon2i_H + +#include +#include +#include + +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_pwhash_argon2i_ALG_ARGON2I13 1 +SODIUM_EXPORT +int crypto_pwhash_argon2i_alg_argon2i13(void); + +#define crypto_pwhash_argon2i_BYTES_MIN 16U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_bytes_min(void); + +#define crypto_pwhash_argon2i_BYTES_MAX SODIUM_MIN(SODIUM_SIZE_MAX, 4294967295U) +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_bytes_max(void); + +#define crypto_pwhash_argon2i_PASSWD_MIN 0U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_passwd_min(void); + +#define crypto_pwhash_argon2i_PASSWD_MAX 4294967295U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_passwd_max(void); + +#define crypto_pwhash_argon2i_SALTBYTES 16U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_saltbytes(void); + +#define crypto_pwhash_argon2i_STRBYTES 128U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_strbytes(void); + +#define crypto_pwhash_argon2i_STRPREFIX "$argon2i$" +SODIUM_EXPORT +const char *crypto_pwhash_argon2i_strprefix(void); + +#define crypto_pwhash_argon2i_OPSLIMIT_MIN 3U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_opslimit_min(void); + +#define crypto_pwhash_argon2i_OPSLIMIT_MAX 4294967295U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_opslimit_max(void); + +#define crypto_pwhash_argon2i_MEMLIMIT_MIN 8192U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_memlimit_min(void); + +#define crypto_pwhash_argon2i_MEMLIMIT_MAX \ + ((SIZE_MAX >= 4398046510080U) ? 4398046510080U : (SIZE_MAX >= 2147483648U) ? 2147483648U : 32768U) +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_memlimit_max(void); + +#define crypto_pwhash_argon2i_OPSLIMIT_INTERACTIVE 4U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_opslimit_interactive(void); + +#define crypto_pwhash_argon2i_MEMLIMIT_INTERACTIVE 33554432U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_memlimit_interactive(void); + +#define crypto_pwhash_argon2i_OPSLIMIT_MODERATE 6U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_opslimit_moderate(void); + +#define crypto_pwhash_argon2i_MEMLIMIT_MODERATE 134217728U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_memlimit_moderate(void); + +#define crypto_pwhash_argon2i_OPSLIMIT_SENSITIVE 8U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_opslimit_sensitive(void); + +#define crypto_pwhash_argon2i_MEMLIMIT_SENSITIVE 536870912U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_memlimit_sensitive(void); + +SODIUM_EXPORT +int crypto_pwhash_argon2i(unsigned char * const out, + unsigned long long outlen, + const char * const passwd, + unsigned long long passwdlen, + const unsigned char * const salt, + unsigned long long opslimit, size_t memlimit, + int alg) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_argon2i_str(char out[crypto_pwhash_argon2i_STRBYTES], + const char * const passwd, + unsigned long long passwdlen, + unsigned long long opslimit, size_t memlimit) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_argon2i_str_verify(const char str[crypto_pwhash_argon2i_STRBYTES], + const char * const passwd, + unsigned long long passwdlen) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_argon2i_str_needs_rehash(const char str[crypto_pwhash_argon2i_STRBYTES], + unsigned long long opslimit, size_t memlimit) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_pwhash_argon2id.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_pwhash_argon2id.h new file mode 100644 index 000000000..7183abd18 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_pwhash_argon2id.h @@ -0,0 +1,122 @@ +#ifndef crypto_pwhash_argon2id_H +#define crypto_pwhash_argon2id_H + +#include +#include +#include + +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_pwhash_argon2id_ALG_ARGON2ID13 2 +SODIUM_EXPORT +int crypto_pwhash_argon2id_alg_argon2id13(void); + +#define crypto_pwhash_argon2id_BYTES_MIN 16U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_bytes_min(void); + +#define crypto_pwhash_argon2id_BYTES_MAX SODIUM_MIN(SODIUM_SIZE_MAX, 4294967295U) +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_bytes_max(void); + +#define crypto_pwhash_argon2id_PASSWD_MIN 0U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_passwd_min(void); + +#define crypto_pwhash_argon2id_PASSWD_MAX 4294967295U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_passwd_max(void); + +#define crypto_pwhash_argon2id_SALTBYTES 16U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_saltbytes(void); + +#define crypto_pwhash_argon2id_STRBYTES 128U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_strbytes(void); + +#define crypto_pwhash_argon2id_STRPREFIX "$argon2id$" +SODIUM_EXPORT +const char *crypto_pwhash_argon2id_strprefix(void); + +#define crypto_pwhash_argon2id_OPSLIMIT_MIN 1U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_opslimit_min(void); + +#define crypto_pwhash_argon2id_OPSLIMIT_MAX 4294967295U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_opslimit_max(void); + +#define crypto_pwhash_argon2id_MEMLIMIT_MIN 8192U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_memlimit_min(void); + +#define crypto_pwhash_argon2id_MEMLIMIT_MAX \ + ((SIZE_MAX >= 4398046510080U) ? 4398046510080U : (SIZE_MAX >= 2147483648U) ? 2147483648U : 32768U) +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_memlimit_max(void); + +#define crypto_pwhash_argon2id_OPSLIMIT_INTERACTIVE 2U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_opslimit_interactive(void); + +#define crypto_pwhash_argon2id_MEMLIMIT_INTERACTIVE 67108864U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_memlimit_interactive(void); + +#define crypto_pwhash_argon2id_OPSLIMIT_MODERATE 3U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_opslimit_moderate(void); + +#define crypto_pwhash_argon2id_MEMLIMIT_MODERATE 268435456U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_memlimit_moderate(void); + +#define crypto_pwhash_argon2id_OPSLIMIT_SENSITIVE 4U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_opslimit_sensitive(void); + +#define crypto_pwhash_argon2id_MEMLIMIT_SENSITIVE 1073741824U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_memlimit_sensitive(void); + +SODIUM_EXPORT +int crypto_pwhash_argon2id(unsigned char * const out, + unsigned long long outlen, + const char * const passwd, + unsigned long long passwdlen, + const unsigned char * const salt, + unsigned long long opslimit, size_t memlimit, + int alg) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_argon2id_str(char out[crypto_pwhash_argon2id_STRBYTES], + const char * const passwd, + unsigned long long passwdlen, + unsigned long long opslimit, size_t memlimit) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_argon2id_str_verify(const char str[crypto_pwhash_argon2id_STRBYTES], + const char * const passwd, + unsigned long long passwdlen) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_argon2id_str_needs_rehash(const char str[crypto_pwhash_argon2id_STRBYTES], + unsigned long long opslimit, size_t memlimit) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_pwhash_scryptsalsa208sha256.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_pwhash_scryptsalsa208sha256.h new file mode 100644 index 000000000..5c0bf7d39 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_pwhash_scryptsalsa208sha256.h @@ -0,0 +1,120 @@ +#ifndef crypto_pwhash_scryptsalsa208sha256_H +#define crypto_pwhash_scryptsalsa208sha256_H + +#include +#include +#include + +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_pwhash_scryptsalsa208sha256_BYTES_MIN 16U +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_bytes_min(void); + +#define crypto_pwhash_scryptsalsa208sha256_BYTES_MAX \ + SODIUM_MIN(SODIUM_SIZE_MAX, 0x1fffffffe0ULL) +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_bytes_max(void); + +#define crypto_pwhash_scryptsalsa208sha256_PASSWD_MIN 0U +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_passwd_min(void); + +#define crypto_pwhash_scryptsalsa208sha256_PASSWD_MAX SODIUM_SIZE_MAX +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_passwd_max(void); + +#define crypto_pwhash_scryptsalsa208sha256_SALTBYTES 32U +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_saltbytes(void); + +#define crypto_pwhash_scryptsalsa208sha256_STRBYTES 102U +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_strbytes(void); + +#define crypto_pwhash_scryptsalsa208sha256_STRPREFIX "$7$" +SODIUM_EXPORT +const char *crypto_pwhash_scryptsalsa208sha256_strprefix(void); + +#define crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_MIN 32768U +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_opslimit_min(void); + +#define crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_MAX 4294967295U +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_opslimit_max(void); + +#define crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_MIN 16777216U +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_memlimit_min(void); + +#define crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_MAX \ + SODIUM_MIN(SIZE_MAX, 68719476736ULL) +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_memlimit_max(void); + +#define crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_INTERACTIVE 524288U +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_opslimit_interactive(void); + +#define crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_INTERACTIVE 16777216U +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_memlimit_interactive(void); + +#define crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_SENSITIVE 33554432U +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_opslimit_sensitive(void); + +#define crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_SENSITIVE 1073741824U +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_memlimit_sensitive(void); + +SODIUM_EXPORT +int crypto_pwhash_scryptsalsa208sha256(unsigned char * const out, + unsigned long long outlen, + const char * const passwd, + unsigned long long passwdlen, + const unsigned char * const salt, + unsigned long long opslimit, + size_t memlimit) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_scryptsalsa208sha256_str(char out[crypto_pwhash_scryptsalsa208sha256_STRBYTES], + const char * const passwd, + unsigned long long passwdlen, + unsigned long long opslimit, + size_t memlimit) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_scryptsalsa208sha256_str_verify(const char str[crypto_pwhash_scryptsalsa208sha256_STRBYTES], + const char * const passwd, + unsigned long long passwdlen) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_scryptsalsa208sha256_ll(const uint8_t * passwd, size_t passwdlen, + const uint8_t * salt, size_t saltlen, + uint64_t N, uint32_t r, uint32_t p, + uint8_t * buf, size_t buflen) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_scryptsalsa208sha256_str_needs_rehash(const char str[crypto_pwhash_scryptsalsa208sha256_STRBYTES], + unsigned long long opslimit, + size_t memlimit) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_scalarmult.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_scalarmult.h new file mode 100644 index 000000000..1c6858537 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_scalarmult.h @@ -0,0 +1,46 @@ +#ifndef crypto_scalarmult_H +#define crypto_scalarmult_H + +#include + +#include "crypto_scalarmult_curve25519.h" +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_scalarmult_BYTES crypto_scalarmult_curve25519_BYTES +SODIUM_EXPORT +size_t crypto_scalarmult_bytes(void); + +#define crypto_scalarmult_SCALARBYTES crypto_scalarmult_curve25519_SCALARBYTES +SODIUM_EXPORT +size_t crypto_scalarmult_scalarbytes(void); + +#define crypto_scalarmult_PRIMITIVE "curve25519" +SODIUM_EXPORT +const char *crypto_scalarmult_primitive(void); + +SODIUM_EXPORT +int crypto_scalarmult_base(unsigned char *q, const unsigned char *n) + __attribute__ ((nonnull)); + +/* + * NOTE: Do not use the result of this function directly for key exchange. + * + * Hash the result with the public keys in order to compute a shared + * secret key: H(q || client_pk || server_pk) + * + * Or unless this is not an option, use the crypto_kx() API instead. + */ +SODIUM_EXPORT +int crypto_scalarmult(unsigned char *q, const unsigned char *n, + const unsigned char *p) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_scalarmult_curve25519.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_scalarmult_curve25519.h new file mode 100644 index 000000000..60e9d0c5a --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_scalarmult_curve25519.h @@ -0,0 +1,42 @@ +#ifndef crypto_scalarmult_curve25519_H +#define crypto_scalarmult_curve25519_H + +#include + +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_scalarmult_curve25519_BYTES 32U +SODIUM_EXPORT +size_t crypto_scalarmult_curve25519_bytes(void); + +#define crypto_scalarmult_curve25519_SCALARBYTES 32U +SODIUM_EXPORT +size_t crypto_scalarmult_curve25519_scalarbytes(void); + +/* + * NOTE: Do not use the result of this function directly for key exchange. + * + * Hash the result with the public keys in order to compute a shared + * secret key: H(q || client_pk || server_pk) + * + * Or unless this is not an option, use the crypto_kx() API instead. + */ +SODIUM_EXPORT +int crypto_scalarmult_curve25519(unsigned char *q, const unsigned char *n, + const unsigned char *p) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_scalarmult_curve25519_base(unsigned char *q, + const unsigned char *n) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_scalarmult_ed25519.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_scalarmult_ed25519.h new file mode 100644 index 000000000..2dfa4d707 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_scalarmult_ed25519.h @@ -0,0 +1,51 @@ + +#ifndef crypto_scalarmult_ed25519_H +#define crypto_scalarmult_ed25519_H + +#include + +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_scalarmult_ed25519_BYTES 32U +SODIUM_EXPORT +size_t crypto_scalarmult_ed25519_bytes(void); + +#define crypto_scalarmult_ed25519_SCALARBYTES 32U +SODIUM_EXPORT +size_t crypto_scalarmult_ed25519_scalarbytes(void); + +/* + * NOTE: Do not use the result of this function directly for key exchange. + * + * Hash the result with the public keys in order to compute a shared + * secret key: H(q || client_pk || server_pk) + * + * Or unless this is not an option, use the crypto_kx() API instead. + */ +SODIUM_EXPORT +int crypto_scalarmult_ed25519(unsigned char *q, const unsigned char *n, + const unsigned char *p) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_scalarmult_ed25519_noclamp(unsigned char *q, const unsigned char *n, + const unsigned char *p) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_scalarmult_ed25519_base(unsigned char *q, const unsigned char *n) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_scalarmult_ed25519_base_noclamp(unsigned char *q, const unsigned char *n) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_scalarmult_ristretto255.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_scalarmult_ristretto255.h new file mode 100644 index 000000000..40a45ccef --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_scalarmult_ristretto255.h @@ -0,0 +1,43 @@ + +#ifndef crypto_scalarmult_ristretto255_H +#define crypto_scalarmult_ristretto255_H + +#include + +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_scalarmult_ristretto255_BYTES 32U +SODIUM_EXPORT +size_t crypto_scalarmult_ristretto255_bytes(void); + +#define crypto_scalarmult_ristretto255_SCALARBYTES 32U +SODIUM_EXPORT +size_t crypto_scalarmult_ristretto255_scalarbytes(void); + +/* + * NOTE: Do not use the result of this function directly for key exchange. + * + * Hash the result with the public keys in order to compute a shared + * secret key: H(q || client_pk || server_pk) + * + * Or unless this is not an option, use the crypto_kx() API instead. + */ +SODIUM_EXPORT +int crypto_scalarmult_ristretto255(unsigned char *q, const unsigned char *n, + const unsigned char *p) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_scalarmult_ristretto255_base(unsigned char *q, + const unsigned char *n) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_secretbox.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_secretbox.h new file mode 100644 index 000000000..1d3709db1 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_secretbox.h @@ -0,0 +1,93 @@ +#ifndef crypto_secretbox_H +#define crypto_secretbox_H + +#include + +#include "crypto_secretbox_xsalsa20poly1305.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_secretbox_KEYBYTES crypto_secretbox_xsalsa20poly1305_KEYBYTES +SODIUM_EXPORT +size_t crypto_secretbox_keybytes(void); + +#define crypto_secretbox_NONCEBYTES crypto_secretbox_xsalsa20poly1305_NONCEBYTES +SODIUM_EXPORT +size_t crypto_secretbox_noncebytes(void); + +#define crypto_secretbox_MACBYTES crypto_secretbox_xsalsa20poly1305_MACBYTES +SODIUM_EXPORT +size_t crypto_secretbox_macbytes(void); + +#define crypto_secretbox_PRIMITIVE "xsalsa20poly1305" +SODIUM_EXPORT +const char *crypto_secretbox_primitive(void); + +#define crypto_secretbox_MESSAGEBYTES_MAX crypto_secretbox_xsalsa20poly1305_MESSAGEBYTES_MAX +SODIUM_EXPORT +size_t crypto_secretbox_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_secretbox_easy(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) __attribute__ ((nonnull(1, 4, 5))); + +SODIUM_EXPORT +int crypto_secretbox_open_easy(unsigned char *m, const unsigned char *c, + unsigned long long clen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5))); + +SODIUM_EXPORT +int crypto_secretbox_detached(unsigned char *c, unsigned char *mac, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull(1, 2, 5, 6))); + +SODIUM_EXPORT +int crypto_secretbox_open_detached(unsigned char *m, + const unsigned char *c, + const unsigned char *mac, + unsigned long long clen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 3, 5, 6))); + +SODIUM_EXPORT +void crypto_secretbox_keygen(unsigned char k[crypto_secretbox_KEYBYTES]) + __attribute__ ((nonnull)); + +/* -- NaCl compatibility interface ; Requires padding -- */ + +#define crypto_secretbox_ZEROBYTES crypto_secretbox_xsalsa20poly1305_ZEROBYTES +SODIUM_EXPORT +size_t crypto_secretbox_zerobytes(void); + +#define crypto_secretbox_BOXZEROBYTES crypto_secretbox_xsalsa20poly1305_BOXZEROBYTES +SODIUM_EXPORT +size_t crypto_secretbox_boxzerobytes(void); + +SODIUM_EXPORT +int crypto_secretbox(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) __attribute__ ((nonnull(1, 4, 5))); + +SODIUM_EXPORT +int crypto_secretbox_open(unsigned char *m, const unsigned char *c, + unsigned long long clen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5))); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_secretbox_xchacha20poly1305.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_secretbox_xchacha20poly1305.h new file mode 100644 index 000000000..6ec674e31 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_secretbox_xchacha20poly1305.h @@ -0,0 +1,70 @@ +#ifndef crypto_secretbox_xchacha20poly1305_H +#define crypto_secretbox_xchacha20poly1305_H + +#include +#include "crypto_stream_xchacha20.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_secretbox_xchacha20poly1305_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_secretbox_xchacha20poly1305_keybytes(void); + +#define crypto_secretbox_xchacha20poly1305_NONCEBYTES 24U +SODIUM_EXPORT +size_t crypto_secretbox_xchacha20poly1305_noncebytes(void); + +#define crypto_secretbox_xchacha20poly1305_MACBYTES 16U +SODIUM_EXPORT +size_t crypto_secretbox_xchacha20poly1305_macbytes(void); + +#define crypto_secretbox_xchacha20poly1305_MESSAGEBYTES_MAX \ + (crypto_stream_xchacha20_MESSAGEBYTES_MAX - crypto_secretbox_xchacha20poly1305_MACBYTES) +SODIUM_EXPORT +size_t crypto_secretbox_xchacha20poly1305_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_secretbox_xchacha20poly1305_easy(unsigned char *c, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull(1, 4, 5))); + +SODIUM_EXPORT +int crypto_secretbox_xchacha20poly1305_open_easy(unsigned char *m, + const unsigned char *c, + unsigned long long clen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5))); + +SODIUM_EXPORT +int crypto_secretbox_xchacha20poly1305_detached(unsigned char *c, + unsigned char *mac, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull(1, 2, 5, 6))); + +SODIUM_EXPORT +int crypto_secretbox_xchacha20poly1305_open_detached(unsigned char *m, + const unsigned char *c, + const unsigned char *mac, + unsigned long long clen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 3, 5, 6))); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_secretbox_xsalsa20poly1305.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_secretbox_xsalsa20poly1305.h new file mode 100644 index 000000000..be0874cba --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_secretbox_xsalsa20poly1305.h @@ -0,0 +1,69 @@ +#ifndef crypto_secretbox_xsalsa20poly1305_H +#define crypto_secretbox_xsalsa20poly1305_H + +#include +#include "crypto_stream_xsalsa20.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_secretbox_xsalsa20poly1305_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_secretbox_xsalsa20poly1305_keybytes(void); + +#define crypto_secretbox_xsalsa20poly1305_NONCEBYTES 24U +SODIUM_EXPORT +size_t crypto_secretbox_xsalsa20poly1305_noncebytes(void); + +#define crypto_secretbox_xsalsa20poly1305_MACBYTES 16U +SODIUM_EXPORT +size_t crypto_secretbox_xsalsa20poly1305_macbytes(void); + +/* Only for the libsodium API - The NaCl compatibility API would require BOXZEROBYTES extra bytes */ +#define crypto_secretbox_xsalsa20poly1305_MESSAGEBYTES_MAX \ + (crypto_stream_xsalsa20_MESSAGEBYTES_MAX - crypto_secretbox_xsalsa20poly1305_MACBYTES) +SODIUM_EXPORT +size_t crypto_secretbox_xsalsa20poly1305_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_secretbox_xsalsa20poly1305(unsigned char *c, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull(1, 4, 5))); + +SODIUM_EXPORT +int crypto_secretbox_xsalsa20poly1305_open(unsigned char *m, + const unsigned char *c, + unsigned long long clen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5))); + +SODIUM_EXPORT +void crypto_secretbox_xsalsa20poly1305_keygen(unsigned char k[crypto_secretbox_xsalsa20poly1305_KEYBYTES]) + __attribute__ ((nonnull)); + +/* -- NaCl compatibility interface ; Requires padding -- */ + +#define crypto_secretbox_xsalsa20poly1305_BOXZEROBYTES 16U +SODIUM_EXPORT +size_t crypto_secretbox_xsalsa20poly1305_boxzerobytes(void); + +#define crypto_secretbox_xsalsa20poly1305_ZEROBYTES \ + (crypto_secretbox_xsalsa20poly1305_BOXZEROBYTES + \ + crypto_secretbox_xsalsa20poly1305_MACBYTES) +SODIUM_EXPORT +size_t crypto_secretbox_xsalsa20poly1305_zerobytes(void); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_secretstream_xchacha20poly1305.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_secretstream_xchacha20poly1305.h new file mode 100644 index 000000000..b22e4e931 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_secretstream_xchacha20poly1305.h @@ -0,0 +1,108 @@ +#ifndef crypto_secretstream_xchacha20poly1305_H +#define crypto_secretstream_xchacha20poly1305_H + +#include + +#include "crypto_aead_xchacha20poly1305.h" +#include "crypto_stream_chacha20.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_secretstream_xchacha20poly1305_ABYTES \ + (1U + crypto_aead_xchacha20poly1305_ietf_ABYTES) +SODIUM_EXPORT +size_t crypto_secretstream_xchacha20poly1305_abytes(void); + +#define crypto_secretstream_xchacha20poly1305_HEADERBYTES \ + crypto_aead_xchacha20poly1305_ietf_NPUBBYTES +SODIUM_EXPORT +size_t crypto_secretstream_xchacha20poly1305_headerbytes(void); + +#define crypto_secretstream_xchacha20poly1305_KEYBYTES \ + crypto_aead_xchacha20poly1305_ietf_KEYBYTES +SODIUM_EXPORT +size_t crypto_secretstream_xchacha20poly1305_keybytes(void); + +#define crypto_secretstream_xchacha20poly1305_MESSAGEBYTES_MAX \ + SODIUM_MIN(SODIUM_SIZE_MAX - crypto_secretstream_xchacha20poly1305_ABYTES, \ + (64ULL * ((1ULL << 32) - 2ULL))) +SODIUM_EXPORT +size_t crypto_secretstream_xchacha20poly1305_messagebytes_max(void); + +#define crypto_secretstream_xchacha20poly1305_TAG_MESSAGE 0x00 +SODIUM_EXPORT +unsigned char crypto_secretstream_xchacha20poly1305_tag_message(void); + +#define crypto_secretstream_xchacha20poly1305_TAG_PUSH 0x01 +SODIUM_EXPORT +unsigned char crypto_secretstream_xchacha20poly1305_tag_push(void); + +#define crypto_secretstream_xchacha20poly1305_TAG_REKEY 0x02 +SODIUM_EXPORT +unsigned char crypto_secretstream_xchacha20poly1305_tag_rekey(void); + +#define crypto_secretstream_xchacha20poly1305_TAG_FINAL \ + (crypto_secretstream_xchacha20poly1305_TAG_PUSH | \ + crypto_secretstream_xchacha20poly1305_TAG_REKEY) +SODIUM_EXPORT +unsigned char crypto_secretstream_xchacha20poly1305_tag_final(void); + +typedef struct crypto_secretstream_xchacha20poly1305_state { + unsigned char k[crypto_stream_chacha20_ietf_KEYBYTES]; + unsigned char nonce[crypto_stream_chacha20_ietf_NONCEBYTES]; + unsigned char _pad[8]; +} crypto_secretstream_xchacha20poly1305_state; + +SODIUM_EXPORT +size_t crypto_secretstream_xchacha20poly1305_statebytes(void); + +SODIUM_EXPORT +void crypto_secretstream_xchacha20poly1305_keygen + (unsigned char k[crypto_secretstream_xchacha20poly1305_KEYBYTES]) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_secretstream_xchacha20poly1305_init_push + (crypto_secretstream_xchacha20poly1305_state *state, + unsigned char header[crypto_secretstream_xchacha20poly1305_HEADERBYTES], + const unsigned char k[crypto_secretstream_xchacha20poly1305_KEYBYTES]) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_secretstream_xchacha20poly1305_push + (crypto_secretstream_xchacha20poly1305_state *state, + unsigned char *c, unsigned long long *clen_p, + const unsigned char *m, unsigned long long mlen, + const unsigned char *ad, unsigned long long adlen, unsigned char tag) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_secretstream_xchacha20poly1305_init_pull + (crypto_secretstream_xchacha20poly1305_state *state, + const unsigned char header[crypto_secretstream_xchacha20poly1305_HEADERBYTES], + const unsigned char k[crypto_secretstream_xchacha20poly1305_KEYBYTES]) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_secretstream_xchacha20poly1305_pull + (crypto_secretstream_xchacha20poly1305_state *state, + unsigned char *m, unsigned long long *mlen_p, unsigned char *tag_p, + const unsigned char *c, unsigned long long clen, + const unsigned char *ad, unsigned long long adlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +void crypto_secretstream_xchacha20poly1305_rekey + (crypto_secretstream_xchacha20poly1305_state *state); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_shorthash.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_shorthash.h new file mode 100644 index 000000000..fecaa88bd --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_shorthash.h @@ -0,0 +1,41 @@ +#ifndef crypto_shorthash_H +#define crypto_shorthash_H + +#include + +#include "crypto_shorthash_siphash24.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_shorthash_BYTES crypto_shorthash_siphash24_BYTES +SODIUM_EXPORT +size_t crypto_shorthash_bytes(void); + +#define crypto_shorthash_KEYBYTES crypto_shorthash_siphash24_KEYBYTES +SODIUM_EXPORT +size_t crypto_shorthash_keybytes(void); + +#define crypto_shorthash_PRIMITIVE "siphash24" +SODIUM_EXPORT +const char *crypto_shorthash_primitive(void); + +SODIUM_EXPORT +int crypto_shorthash(unsigned char *out, const unsigned char *in, + unsigned long long inlen, const unsigned char *k) + __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +void crypto_shorthash_keygen(unsigned char k[crypto_shorthash_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_shorthash_siphash24.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_shorthash_siphash24.h new file mode 100644 index 000000000..1e6f72a62 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_shorthash_siphash24.h @@ -0,0 +1,50 @@ +#ifndef crypto_shorthash_siphash24_H +#define crypto_shorthash_siphash24_H + +#include +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +/* -- 64-bit output -- */ + +#define crypto_shorthash_siphash24_BYTES 8U +SODIUM_EXPORT +size_t crypto_shorthash_siphash24_bytes(void); + +#define crypto_shorthash_siphash24_KEYBYTES 16U +SODIUM_EXPORT +size_t crypto_shorthash_siphash24_keybytes(void); + +SODIUM_EXPORT +int crypto_shorthash_siphash24(unsigned char *out, const unsigned char *in, + unsigned long long inlen, const unsigned char *k) + __attribute__ ((nonnull(1, 4))); + +#ifndef SODIUM_LIBRARY_MINIMAL +/* -- 128-bit output -- */ + +#define crypto_shorthash_siphashx24_BYTES 16U +SODIUM_EXPORT +size_t crypto_shorthash_siphashx24_bytes(void); + +#define crypto_shorthash_siphashx24_KEYBYTES 16U +SODIUM_EXPORT +size_t crypto_shorthash_siphashx24_keybytes(void); + +SODIUM_EXPORT +int crypto_shorthash_siphashx24(unsigned char *out, const unsigned char *in, + unsigned long long inlen, const unsigned char *k) + __attribute__ ((nonnull(1, 4))); +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_sign.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_sign.h new file mode 100644 index 000000000..f5fafb123 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_sign.h @@ -0,0 +1,107 @@ +#ifndef crypto_sign_H +#define crypto_sign_H + +/* + * THREAD SAFETY: crypto_sign_keypair() is thread-safe, + * provided that sodium_init() was called before. + * + * Other functions, including crypto_sign_seed_keypair() are always thread-safe. + */ + +#include + +#include "crypto_sign_ed25519.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +typedef crypto_sign_ed25519ph_state crypto_sign_state; + +SODIUM_EXPORT +size_t crypto_sign_statebytes(void); + +#define crypto_sign_BYTES crypto_sign_ed25519_BYTES +SODIUM_EXPORT +size_t crypto_sign_bytes(void); + +#define crypto_sign_SEEDBYTES crypto_sign_ed25519_SEEDBYTES +SODIUM_EXPORT +size_t crypto_sign_seedbytes(void); + +#define crypto_sign_PUBLICKEYBYTES crypto_sign_ed25519_PUBLICKEYBYTES +SODIUM_EXPORT +size_t crypto_sign_publickeybytes(void); + +#define crypto_sign_SECRETKEYBYTES crypto_sign_ed25519_SECRETKEYBYTES +SODIUM_EXPORT +size_t crypto_sign_secretkeybytes(void); + +#define crypto_sign_MESSAGEBYTES_MAX crypto_sign_ed25519_MESSAGEBYTES_MAX +SODIUM_EXPORT +size_t crypto_sign_messagebytes_max(void); + +#define crypto_sign_PRIMITIVE "ed25519" +SODIUM_EXPORT +const char *crypto_sign_primitive(void); + +SODIUM_EXPORT +int crypto_sign_seed_keypair(unsigned char *pk, unsigned char *sk, + const unsigned char *seed) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_sign_keypair(unsigned char *pk, unsigned char *sk) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_sign(unsigned char *sm, unsigned long long *smlen_p, + const unsigned char *m, unsigned long long mlen, + const unsigned char *sk) __attribute__ ((nonnull(1, 5))); + +SODIUM_EXPORT +int crypto_sign_open(unsigned char *m, unsigned long long *mlen_p, + const unsigned char *sm, unsigned long long smlen, + const unsigned char *pk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(3, 5))); + +SODIUM_EXPORT +int crypto_sign_detached(unsigned char *sig, unsigned long long *siglen_p, + const unsigned char *m, unsigned long long mlen, + const unsigned char *sk) __attribute__ ((nonnull(1, 5))); + +SODIUM_EXPORT +int crypto_sign_verify_detached(const unsigned char *sig, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *pk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_sign_init(crypto_sign_state *state); + +SODIUM_EXPORT +int crypto_sign_update(crypto_sign_state *state, + const unsigned char *m, unsigned long long mlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_sign_final_create(crypto_sign_state *state, unsigned char *sig, + unsigned long long *siglen_p, + const unsigned char *sk) + __attribute__ ((nonnull(1, 2, 4))); + +SODIUM_EXPORT +int crypto_sign_final_verify(crypto_sign_state *state, const unsigned char *sig, + const unsigned char *pk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_sign_ed25519.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_sign_ed25519.h new file mode 100644 index 000000000..0fdac42d3 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_sign_ed25519.h @@ -0,0 +1,124 @@ +#ifndef crypto_sign_ed25519_H +#define crypto_sign_ed25519_H + +#include +#include "crypto_hash_sha512.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +typedef struct crypto_sign_ed25519ph_state { + crypto_hash_sha512_state hs; +} crypto_sign_ed25519ph_state; + +SODIUM_EXPORT +size_t crypto_sign_ed25519ph_statebytes(void); + +#define crypto_sign_ed25519_BYTES 64U +SODIUM_EXPORT +size_t crypto_sign_ed25519_bytes(void); + +#define crypto_sign_ed25519_SEEDBYTES 32U +SODIUM_EXPORT +size_t crypto_sign_ed25519_seedbytes(void); + +#define crypto_sign_ed25519_PUBLICKEYBYTES 32U +SODIUM_EXPORT +size_t crypto_sign_ed25519_publickeybytes(void); + +#define crypto_sign_ed25519_SECRETKEYBYTES (32U + 32U) +SODIUM_EXPORT +size_t crypto_sign_ed25519_secretkeybytes(void); + +#define crypto_sign_ed25519_MESSAGEBYTES_MAX (SODIUM_SIZE_MAX - crypto_sign_ed25519_BYTES) +SODIUM_EXPORT +size_t crypto_sign_ed25519_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_sign_ed25519(unsigned char *sm, unsigned long long *smlen_p, + const unsigned char *m, unsigned long long mlen, + const unsigned char *sk) + __attribute__ ((nonnull(1, 5))); + +SODIUM_EXPORT +int crypto_sign_ed25519_open(unsigned char *m, unsigned long long *mlen_p, + const unsigned char *sm, unsigned long long smlen, + const unsigned char *pk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(3, 5))); + +SODIUM_EXPORT +int crypto_sign_ed25519_detached(unsigned char *sig, + unsigned long long *siglen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *sk) + __attribute__ ((nonnull(1, 5))); + +SODIUM_EXPORT +int crypto_sign_ed25519_verify_detached(const unsigned char *sig, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *pk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_sign_ed25519_keypair(unsigned char *pk, unsigned char *sk) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_sign_ed25519_seed_keypair(unsigned char *pk, unsigned char *sk, + const unsigned char *seed) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_sign_ed25519_pk_to_curve25519(unsigned char *curve25519_pk, + const unsigned char *ed25519_pk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_sign_ed25519_sk_to_curve25519(unsigned char *curve25519_sk, + const unsigned char *ed25519_sk) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_sign_ed25519_sk_to_seed(unsigned char *seed, + const unsigned char *sk) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_sign_ed25519_sk_to_pk(unsigned char *pk, const unsigned char *sk) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_sign_ed25519ph_init(crypto_sign_ed25519ph_state *state) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_sign_ed25519ph_update(crypto_sign_ed25519ph_state *state, + const unsigned char *m, + unsigned long long mlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_sign_ed25519ph_final_create(crypto_sign_ed25519ph_state *state, + unsigned char *sig, + unsigned long long *siglen_p, + const unsigned char *sk) + __attribute__ ((nonnull(1, 2, 4))); + +SODIUM_EXPORT +int crypto_sign_ed25519ph_final_verify(crypto_sign_ed25519ph_state *state, + const unsigned char *sig, + const unsigned char *pk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_sign_edwards25519sha512batch.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_sign_edwards25519sha512batch.h new file mode 100644 index 000000000..eed158aa8 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_sign_edwards25519sha512batch.h @@ -0,0 +1,55 @@ +#ifndef crypto_sign_edwards25519sha512batch_H +#define crypto_sign_edwards25519sha512batch_H + +/* + * WARNING: This construction was a prototype, which should not be used + * any more in new projects. + * + * crypto_sign_edwards25519sha512batch is provided for applications + * initially built with NaCl, but as recommended by the author of this + * construction, new applications should use ed25519 instead. + * + * In Sodium, you should use the high-level crypto_sign_*() functions instead. + */ + +#include +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_sign_edwards25519sha512batch_BYTES 64U +#define crypto_sign_edwards25519sha512batch_PUBLICKEYBYTES 32U +#define crypto_sign_edwards25519sha512batch_SECRETKEYBYTES (32U + 32U) +#define crypto_sign_edwards25519sha512batch_MESSAGEBYTES_MAX (SODIUM_SIZE_MAX - crypto_sign_edwards25519sha512batch_BYTES) + +SODIUM_EXPORT +int crypto_sign_edwards25519sha512batch(unsigned char *sm, + unsigned long long *smlen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *sk) + __attribute__ ((deprecated)) __attribute__ ((nonnull(1, 5))); + +SODIUM_EXPORT +int crypto_sign_edwards25519sha512batch_open(unsigned char *m, + unsigned long long *mlen_p, + const unsigned char *sm, + unsigned long long smlen, + const unsigned char *pk) + __attribute__ ((deprecated)) __attribute__ ((nonnull(3, 5))); + +SODIUM_EXPORT +int crypto_sign_edwards25519sha512batch_keypair(unsigned char *pk, + unsigned char *sk) + __attribute__ ((deprecated)) __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_stream.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_stream.h new file mode 100644 index 000000000..88dab5f61 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_stream.h @@ -0,0 +1,59 @@ +#ifndef crypto_stream_H +#define crypto_stream_H + +/* + * WARNING: This is just a stream cipher. It is NOT authenticated encryption. + * While it provides some protection against eavesdropping, it does NOT + * provide any security against active attacks. + * Unless you know what you're doing, what you are looking for is probably + * the crypto_box functions. + */ + +#include + +#include "crypto_stream_xsalsa20.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_stream_KEYBYTES crypto_stream_xsalsa20_KEYBYTES +SODIUM_EXPORT +size_t crypto_stream_keybytes(void); + +#define crypto_stream_NONCEBYTES crypto_stream_xsalsa20_NONCEBYTES +SODIUM_EXPORT +size_t crypto_stream_noncebytes(void); + +#define crypto_stream_MESSAGEBYTES_MAX crypto_stream_xsalsa20_MESSAGEBYTES_MAX +SODIUM_EXPORT +size_t crypto_stream_messagebytes_max(void); + +#define crypto_stream_PRIMITIVE "xsalsa20" +SODIUM_EXPORT +const char *crypto_stream_primitive(void); + +SODIUM_EXPORT +int crypto_stream(unsigned char *c, unsigned long long clen, + const unsigned char *n, const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_xor(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_stream_keygen(unsigned char k[crypto_stream_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_stream_chacha20.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_stream_chacha20.h new file mode 100644 index 000000000..408897558 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_stream_chacha20.h @@ -0,0 +1,106 @@ +#ifndef crypto_stream_chacha20_H +#define crypto_stream_chacha20_H + +/* + * WARNING: This is just a stream cipher. It is NOT authenticated encryption. + * While it provides some protection against eavesdropping, it does NOT + * provide any security against active attacks. + * Unless you know what you're doing, what you are looking for is probably + * the crypto_box functions. + */ + +#include +#include +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_stream_chacha20_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_stream_chacha20_keybytes(void); + +#define crypto_stream_chacha20_NONCEBYTES 8U +SODIUM_EXPORT +size_t crypto_stream_chacha20_noncebytes(void); + +#define crypto_stream_chacha20_MESSAGEBYTES_MAX SODIUM_SIZE_MAX +SODIUM_EXPORT +size_t crypto_stream_chacha20_messagebytes_max(void); + +/* ChaCha20 with a 64-bit nonce and a 64-bit counter, as originally designed */ + +SODIUM_EXPORT +int crypto_stream_chacha20(unsigned char *c, unsigned long long clen, + const unsigned char *n, const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_chacha20_xor(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_chacha20_xor_ic(unsigned char *c, const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, uint64_t ic, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_stream_chacha20_keygen(unsigned char k[crypto_stream_chacha20_KEYBYTES]) + __attribute__ ((nonnull)); + +/* ChaCha20 with a 96-bit nonce and a 32-bit counter (IETF) */ + +#define crypto_stream_chacha20_ietf_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_stream_chacha20_ietf_keybytes(void); + +#define crypto_stream_chacha20_ietf_NONCEBYTES 12U +SODIUM_EXPORT +size_t crypto_stream_chacha20_ietf_noncebytes(void); + +#define crypto_stream_chacha20_ietf_MESSAGEBYTES_MAX \ + SODIUM_MIN(SODIUM_SIZE_MAX, 64ULL * (1ULL << 32)) +SODIUM_EXPORT +size_t crypto_stream_chacha20_ietf_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_stream_chacha20_ietf(unsigned char *c, unsigned long long clen, + const unsigned char *n, const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_chacha20_ietf_xor(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_chacha20_ietf_xor_ic(unsigned char *c, const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, uint32_t ic, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_stream_chacha20_ietf_keygen(unsigned char k[crypto_stream_chacha20_ietf_KEYBYTES]) + __attribute__ ((nonnull)); + +/* Aliases */ + +#define crypto_stream_chacha20_IETF_KEYBYTES crypto_stream_chacha20_ietf_KEYBYTES +#define crypto_stream_chacha20_IETF_NONCEBYTES crypto_stream_chacha20_ietf_NONCEBYTES +#define crypto_stream_chacha20_IETF_MESSAGEBYTES_MAX crypto_stream_chacha20_ietf_MESSAGEBYTES_MAX + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_stream_salsa20.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_stream_salsa20.h new file mode 100644 index 000000000..45b3b3e34 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_stream_salsa20.h @@ -0,0 +1,61 @@ +#ifndef crypto_stream_salsa20_H +#define crypto_stream_salsa20_H + +/* + * WARNING: This is just a stream cipher. It is NOT authenticated encryption. + * While it provides some protection against eavesdropping, it does NOT + * provide any security against active attacks. + * Unless you know what you're doing, what you are looking for is probably + * the crypto_box functions. + */ + +#include +#include +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_stream_salsa20_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_stream_salsa20_keybytes(void); + +#define crypto_stream_salsa20_NONCEBYTES 8U +SODIUM_EXPORT +size_t crypto_stream_salsa20_noncebytes(void); + +#define crypto_stream_salsa20_MESSAGEBYTES_MAX SODIUM_SIZE_MAX +SODIUM_EXPORT +size_t crypto_stream_salsa20_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_stream_salsa20(unsigned char *c, unsigned long long clen, + const unsigned char *n, const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_salsa20_xor(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_salsa20_xor_ic(unsigned char *c, const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, uint64_t ic, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_stream_salsa20_keygen(unsigned char k[crypto_stream_salsa20_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_stream_salsa2012.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_stream_salsa2012.h new file mode 100644 index 000000000..6c5d303ca --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_stream_salsa2012.h @@ -0,0 +1,53 @@ +#ifndef crypto_stream_salsa2012_H +#define crypto_stream_salsa2012_H + +/* + * WARNING: This is just a stream cipher. It is NOT authenticated encryption. + * While it provides some protection against eavesdropping, it does NOT + * provide any security against active attacks. + * Unless you know what you're doing, what you are looking for is probably + * the crypto_box functions. + */ + +#include +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_stream_salsa2012_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_stream_salsa2012_keybytes(void); + +#define crypto_stream_salsa2012_NONCEBYTES 8U +SODIUM_EXPORT +size_t crypto_stream_salsa2012_noncebytes(void); + +#define crypto_stream_salsa2012_MESSAGEBYTES_MAX SODIUM_SIZE_MAX +SODIUM_EXPORT +size_t crypto_stream_salsa2012_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_stream_salsa2012(unsigned char *c, unsigned long long clen, + const unsigned char *n, const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_salsa2012_xor(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_stream_salsa2012_keygen(unsigned char k[crypto_stream_salsa2012_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_stream_salsa208.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_stream_salsa208.h new file mode 100644 index 000000000..d574f3047 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_stream_salsa208.h @@ -0,0 +1,56 @@ +#ifndef crypto_stream_salsa208_H +#define crypto_stream_salsa208_H + +/* + * WARNING: This is just a stream cipher. It is NOT authenticated encryption. + * While it provides some protection against eavesdropping, it does NOT + * provide any security against active attacks. + * Unless you know what you're doing, what you are looking for is probably + * the crypto_box functions. + */ + +#include +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_stream_salsa208_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_stream_salsa208_keybytes(void) + __attribute__ ((deprecated)); + +#define crypto_stream_salsa208_NONCEBYTES 8U +SODIUM_EXPORT +size_t crypto_stream_salsa208_noncebytes(void) + __attribute__ ((deprecated)); + +#define crypto_stream_salsa208_MESSAGEBYTES_MAX SODIUM_SIZE_MAX + SODIUM_EXPORT +size_t crypto_stream_salsa208_messagebytes_max(void) + __attribute__ ((deprecated)); + +SODIUM_EXPORT +int crypto_stream_salsa208(unsigned char *c, unsigned long long clen, + const unsigned char *n, const unsigned char *k) + __attribute__ ((deprecated)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_salsa208_xor(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((deprecated)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_stream_salsa208_keygen(unsigned char k[crypto_stream_salsa208_KEYBYTES]) + __attribute__ ((deprecated)) __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_stream_xchacha20.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_stream_xchacha20.h new file mode 100644 index 000000000..c4002db00 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_stream_xchacha20.h @@ -0,0 +1,61 @@ +#ifndef crypto_stream_xchacha20_H +#define crypto_stream_xchacha20_H + +/* + * WARNING: This is just a stream cipher. It is NOT authenticated encryption. + * While it provides some protection against eavesdropping, it does NOT + * provide any security against active attacks. + * Unless you know what you're doing, what you are looking for is probably + * the crypto_box functions. + */ + +#include +#include +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_stream_xchacha20_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_stream_xchacha20_keybytes(void); + +#define crypto_stream_xchacha20_NONCEBYTES 24U +SODIUM_EXPORT +size_t crypto_stream_xchacha20_noncebytes(void); + +#define crypto_stream_xchacha20_MESSAGEBYTES_MAX SODIUM_SIZE_MAX +SODIUM_EXPORT +size_t crypto_stream_xchacha20_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_stream_xchacha20(unsigned char *c, unsigned long long clen, + const unsigned char *n, const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_xchacha20_xor(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_xchacha20_xor_ic(unsigned char *c, const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, uint64_t ic, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_stream_xchacha20_keygen(unsigned char k[crypto_stream_xchacha20_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_stream_xsalsa20.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_stream_xsalsa20.h new file mode 100644 index 000000000..20034e346 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_stream_xsalsa20.h @@ -0,0 +1,61 @@ +#ifndef crypto_stream_xsalsa20_H +#define crypto_stream_xsalsa20_H + +/* + * WARNING: This is just a stream cipher. It is NOT authenticated encryption. + * While it provides some protection against eavesdropping, it does NOT + * provide any security against active attacks. + * Unless you know what you're doing, what you are looking for is probably + * the crypto_box functions. + */ + +#include +#include +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_stream_xsalsa20_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_stream_xsalsa20_keybytes(void); + +#define crypto_stream_xsalsa20_NONCEBYTES 24U +SODIUM_EXPORT +size_t crypto_stream_xsalsa20_noncebytes(void); + +#define crypto_stream_xsalsa20_MESSAGEBYTES_MAX SODIUM_SIZE_MAX +SODIUM_EXPORT +size_t crypto_stream_xsalsa20_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_stream_xsalsa20(unsigned char *c, unsigned long long clen, + const unsigned char *n, const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_xsalsa20_xor(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_xsalsa20_xor_ic(unsigned char *c, const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, uint64_t ic, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_stream_xsalsa20_keygen(unsigned char k[crypto_stream_xsalsa20_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_verify_16.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_verify_16.h new file mode 100644 index 000000000..7b9c8077a --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_verify_16.h @@ -0,0 +1,23 @@ +#ifndef crypto_verify_16_H +#define crypto_verify_16_H + +#include +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_verify_16_BYTES 16U +SODIUM_EXPORT +size_t crypto_verify_16_bytes(void); + +SODIUM_EXPORT +int crypto_verify_16(const unsigned char *x, const unsigned char *y) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_verify_32.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_verify_32.h new file mode 100644 index 000000000..9b0f4529f --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_verify_32.h @@ -0,0 +1,23 @@ +#ifndef crypto_verify_32_H +#define crypto_verify_32_H + +#include +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_verify_32_BYTES 32U +SODIUM_EXPORT +size_t crypto_verify_32_bytes(void); + +SODIUM_EXPORT +int crypto_verify_32(const unsigned char *x, const unsigned char *y) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_verify_64.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_verify_64.h new file mode 100644 index 000000000..c83b73025 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_verify_64.h @@ -0,0 +1,23 @@ +#ifndef crypto_verify_64_H +#define crypto_verify_64_H + +#include +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_verify_64_BYTES 64U +SODIUM_EXPORT +size_t crypto_verify_64_bytes(void); + +SODIUM_EXPORT +int crypto_verify_64(const unsigned char *x, const unsigned char *y) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/export.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/export.h new file mode 100644 index 000000000..a0074fc9c --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/export.h @@ -0,0 +1,57 @@ + +#ifndef sodium_export_H +#define sodium_export_H + +#include +#include +#include + +#if !defined(__clang__) && !defined(__GNUC__) +# ifdef __attribute__ +# undef __attribute__ +# endif +# define __attribute__(a) +#endif + +#ifdef SODIUM_STATIC +# define SODIUM_EXPORT +# define SODIUM_EXPORT_WEAK +#else +# if defined(_MSC_VER) +# ifdef SODIUM_DLL_EXPORT +# define SODIUM_EXPORT __declspec(dllexport) +# else +# define SODIUM_EXPORT __declspec(dllimport) +# endif +# else +# if defined(__SUNPRO_C) +# ifndef __GNU_C__ +# define SODIUM_EXPORT __attribute__ (visibility(__global)) +# else +# define SODIUM_EXPORT __attribute__ __global +# endif +# elif defined(_MSG_VER) +# define SODIUM_EXPORT extern __declspec(dllexport) +# else +# define SODIUM_EXPORT __attribute__ ((visibility ("default"))) +# endif +# endif +# if defined(__ELF__) && !defined(SODIUM_DISABLE_WEAK_FUNCTIONS) +# define SODIUM_EXPORT_WEAK SODIUM_EXPORT __attribute__((weak)) +# else +# define SODIUM_EXPORT_WEAK SODIUM_EXPORT +# endif +#endif + +#ifndef CRYPTO_ALIGN +# if defined(__INTEL_COMPILER) || defined(_MSC_VER) +# define CRYPTO_ALIGN(x) __declspec(align(x)) +# else +# define CRYPTO_ALIGN(x) __attribute__ ((aligned(x))) +# endif +#endif + +#define SODIUM_MIN(A, B) ((A) < (B) ? (A) : (B)) +#define SODIUM_SIZE_MAX SODIUM_MIN(UINT64_MAX, SIZE_MAX) + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/randombytes.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/randombytes.h new file mode 100644 index 000000000..a03cc6572 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/randombytes.h @@ -0,0 +1,72 @@ + +#ifndef randombytes_H +#define randombytes_H + +#include +#include + +#include + +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +typedef struct randombytes_implementation { + const char *(*implementation_name)(void); /* required */ + uint32_t (*random)(void); /* required */ + void (*stir)(void); /* optional */ + uint32_t (*uniform)(const uint32_t upper_bound); /* optional, a default implementation will be used if NULL */ + void (*buf)(void * const buf, const size_t size); /* required */ + int (*close)(void); /* optional */ +} randombytes_implementation; + +#define randombytes_BYTES_MAX SODIUM_MIN(SODIUM_SIZE_MAX, 0xffffffffUL) + +#define randombytes_SEEDBYTES 32U +SODIUM_EXPORT +size_t randombytes_seedbytes(void); + +SODIUM_EXPORT +void randombytes_buf(void * const buf, const size_t size) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void randombytes_buf_deterministic(void * const buf, const size_t size, + const unsigned char seed[randombytes_SEEDBYTES]) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +uint32_t randombytes_random(void); + +SODIUM_EXPORT +uint32_t randombytes_uniform(const uint32_t upper_bound); + +SODIUM_EXPORT +void randombytes_stir(void); + +SODIUM_EXPORT +int randombytes_close(void); + +SODIUM_EXPORT +int randombytes_set_implementation(randombytes_implementation *impl) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +const char *randombytes_implementation_name(void); + +/* -- NaCl compatibility interface -- */ + +SODIUM_EXPORT +void randombytes(unsigned char * const buf, const unsigned long long buf_len) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/randombytes_internal_random.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/randombytes_internal_random.h new file mode 100644 index 000000000..2b2b7d6ed --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/randombytes_internal_random.h @@ -0,0 +1,22 @@ + +#ifndef randombytes_internal_random_H +#define randombytes_internal_random_H + +#include "export.h" +#include "randombytes.h" + +#ifdef __cplusplus +extern "C" { +#endif + +SODIUM_EXPORT +extern struct randombytes_implementation randombytes_internal_implementation; + +/* Backwards compatibility with libsodium < 1.0.18 */ +#define randombytes_salsa20_implementation randombytes_internal_implementation + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/randombytes_sysrandom.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/randombytes_sysrandom.h new file mode 100644 index 000000000..9e27b674c --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/randombytes_sysrandom.h @@ -0,0 +1,19 @@ + +#ifndef randombytes_sysrandom_H +#define randombytes_sysrandom_H + +#include "export.h" +#include "randombytes.h" + +#ifdef __cplusplus +extern "C" { +#endif + +SODIUM_EXPORT +extern struct randombytes_implementation randombytes_sysrandom_implementation; + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/runtime.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/runtime.h new file mode 100644 index 000000000..7f15d58e7 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/runtime.h @@ -0,0 +1,52 @@ + +#ifndef sodium_runtime_H +#define sodium_runtime_H + +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +SODIUM_EXPORT_WEAK +int sodium_runtime_has_neon(void); + +SODIUM_EXPORT_WEAK +int sodium_runtime_has_sse2(void); + +SODIUM_EXPORT_WEAK +int sodium_runtime_has_sse3(void); + +SODIUM_EXPORT_WEAK +int sodium_runtime_has_ssse3(void); + +SODIUM_EXPORT_WEAK +int sodium_runtime_has_sse41(void); + +SODIUM_EXPORT_WEAK +int sodium_runtime_has_avx(void); + +SODIUM_EXPORT_WEAK +int sodium_runtime_has_avx2(void); + +SODIUM_EXPORT_WEAK +int sodium_runtime_has_avx512f(void); + +SODIUM_EXPORT_WEAK +int sodium_runtime_has_pclmul(void); + +SODIUM_EXPORT_WEAK +int sodium_runtime_has_aesni(void); + +SODIUM_EXPORT_WEAK +int sodium_runtime_has_rdrand(void); + +/* ------------------------------------------------------------------------- */ + +int _sodium_runtime_get_cpu_features(void); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/utils.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/utils.h new file mode 100644 index 000000000..ac8015129 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/utils.h @@ -0,0 +1,179 @@ + +#ifndef sodium_utils_H +#define sodium_utils_H + +#include + +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef SODIUM_C99 +# if defined(__cplusplus) || !defined(__STDC_VERSION__) || __STDC_VERSION__ < 199901L +# define SODIUM_C99(X) +# else +# define SODIUM_C99(X) X +# endif +#endif + +SODIUM_EXPORT +void sodium_memzero(void * const pnt, const size_t len); + +SODIUM_EXPORT +void sodium_stackzero(const size_t len); + +/* + * WARNING: sodium_memcmp() must be used to verify if two secret keys + * are equal, in constant time. + * It returns 0 if the keys are equal, and -1 if they differ. + * This function is not designed for lexicographical comparisons. + */ +SODIUM_EXPORT +int sodium_memcmp(const void * const b1_, const void * const b2_, size_t len) + __attribute__ ((warn_unused_result)); + +/* + * sodium_compare() returns -1 if b1_ < b2_, 1 if b1_ > b2_ and 0 if b1_ == b2_ + * It is suitable for lexicographical comparisons, or to compare nonces + * and counters stored in little-endian format. + * However, it is slower than sodium_memcmp(). + */ +SODIUM_EXPORT +int sodium_compare(const unsigned char *b1_, const unsigned char *b2_, + size_t len) __attribute__ ((warn_unused_result)); + +SODIUM_EXPORT +int sodium_is_zero(const unsigned char *n, const size_t nlen); + +SODIUM_EXPORT +void sodium_increment(unsigned char *n, const size_t nlen); + +SODIUM_EXPORT +void sodium_add(unsigned char *a, const unsigned char *b, const size_t len); + +SODIUM_EXPORT +void sodium_sub(unsigned char *a, const unsigned char *b, const size_t len); + +SODIUM_EXPORT +char *sodium_bin2hex(char * const hex, const size_t hex_maxlen, + const unsigned char * const bin, const size_t bin_len) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int sodium_hex2bin(unsigned char * const bin, const size_t bin_maxlen, + const char * const hex, const size_t hex_len, + const char * const ignore, size_t * const bin_len, + const char ** const hex_end) + __attribute__ ((nonnull(1))); + +#define sodium_base64_VARIANT_ORIGINAL 1 +#define sodium_base64_VARIANT_ORIGINAL_NO_PADDING 3 +#define sodium_base64_VARIANT_URLSAFE 5 +#define sodium_base64_VARIANT_URLSAFE_NO_PADDING 7 + +/* + * Computes the required length to encode BIN_LEN bytes as a base64 string + * using the given variant. The computed length includes a trailing \0. + */ +#define sodium_base64_ENCODED_LEN(BIN_LEN, VARIANT) \ + (((BIN_LEN) / 3U) * 4U + \ + ((((BIN_LEN) - ((BIN_LEN) / 3U) * 3U) | (((BIN_LEN) - ((BIN_LEN) / 3U) * 3U) >> 1)) & 1U) * \ + (4U - (~((((VARIANT) & 2U) >> 1) - 1U) & (3U - ((BIN_LEN) - ((BIN_LEN) / 3U) * 3U)))) + 1U) + +SODIUM_EXPORT +size_t sodium_base64_encoded_len(const size_t bin_len, const int variant); + +SODIUM_EXPORT +char *sodium_bin2base64(char * const b64, const size_t b64_maxlen, + const unsigned char * const bin, const size_t bin_len, + const int variant) __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int sodium_base642bin(unsigned char * const bin, const size_t bin_maxlen, + const char * const b64, const size_t b64_len, + const char * const ignore, size_t * const bin_len, + const char ** const b64_end, const int variant) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int sodium_mlock(void * const addr, const size_t len) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int sodium_munlock(void * const addr, const size_t len) + __attribute__ ((nonnull)); + +/* WARNING: sodium_malloc() and sodium_allocarray() are not general-purpose + * allocation functions. + * + * They return a pointer to a region filled with 0xd0 bytes, immediately + * followed by a guard page. + * As a result, accessing a single byte after the requested allocation size + * will intentionally trigger a segmentation fault. + * + * A canary and an additional guard page placed before the beginning of the + * region may also kill the process if a buffer underflow is detected. + * + * The memory layout is: + * [unprotected region size (read only)][guard page (no access)][unprotected pages (read/write)][guard page (no access)] + * With the layout of the unprotected pages being: + * [optional padding][16-bytes canary][user region] + * + * However: + * - These functions are significantly slower than standard functions + * - Each allocation requires 3 or 4 additional pages + * - The returned address will not be aligned if the allocation size is not + * a multiple of the required alignment. For this reason, these functions + * are designed to store data, such as secret keys and messages. + * + * sodium_malloc() can be used to allocate any libsodium data structure. + * + * The crypto_generichash_state structure is packed and its length is + * either 357 or 361 bytes. For this reason, when using sodium_malloc() to + * allocate a crypto_generichash_state structure, padding must be added in + * order to ensure proper alignment. crypto_generichash_statebytes() + * returns the rounded up structure size, and should be prefered to sizeof(): + * state = sodium_malloc(crypto_generichash_statebytes()); + */ + +SODIUM_EXPORT +void *sodium_malloc(const size_t size) + __attribute__ ((malloc)); + +SODIUM_EXPORT +void *sodium_allocarray(size_t count, size_t size) + __attribute__ ((malloc)); + +SODIUM_EXPORT +void sodium_free(void *ptr); + +SODIUM_EXPORT +int sodium_mprotect_noaccess(void *ptr) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int sodium_mprotect_readonly(void *ptr) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int sodium_mprotect_readwrite(void *ptr) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int sodium_pad(size_t *padded_buflen_p, unsigned char *buf, + size_t unpadded_buflen, size_t blocksize, size_t max_buflen) + __attribute__ ((nonnull(2))); + +SODIUM_EXPORT +int sodium_unpad(size_t *unpadded_buflen_p, const unsigned char *buf, + size_t padded_buflen, size_t blocksize) + __attribute__ ((nonnull(2))); + +/* -------- */ + +int _sodium_alloc_init(void); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/version.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/version.h new file mode 100644 index 000000000..201a290e7 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/version.h @@ -0,0 +1,33 @@ + +#ifndef sodium_version_H +#define sodium_version_H + +#include "export.h" + +#define SODIUM_VERSION_STRING "1.0.18" + +#define SODIUM_LIBRARY_VERSION_MAJOR 10 +#define SODIUM_LIBRARY_VERSION_MINOR 3 + + +#ifdef __cplusplus +extern "C" { +#endif + +SODIUM_EXPORT +const char *sodium_version_string(void); + +SODIUM_EXPORT +int sodium_library_version_major(void); + +SODIUM_EXPORT +int sodium_library_version_minor(void); + +SODIUM_EXPORT +int sodium_library_minimal(void); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/lib/libsodium.a b/example/android/third_party/libsodium/libsodium-android-armv8-a/lib/libsodium.a new file mode 100644 index 0000000000000000000000000000000000000000..865ac560a1b5e44263633e4b49df11f276bc4508 GIT binary patch literal 433990 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

    ^WWPjeTpD^YaO{B8pMP}082qpr|FnB5Y)1%1VG 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®%%>f@Km@K>XdZl(I$c884`h$@kYyn^Cgmq3)K< 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 literal 0 HcmV?d00001 diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/lib/libsodium.la b/example/android/third_party/libsodium/libsodium-android-armv8-a/lib/libsodium.la new file mode 100644 index 000000000..4248f4218 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/lib/libsodium.la @@ -0,0 +1,41 @@ +# libsodium.la - a libtool library file +# Generated by libtool (GNU libtool) 2.4.6 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='libsodium.so' + +# Names of this library. +library_names='libsodium.so' + +# The name of the static archive. +old_library='libsodium.a' + +# Linker flags that cannot go in dependency_libs. +inherited_linker_flags=' -pthread' + +# Libraries that this one depends upon. +dependency_libs='' + +# Names of additional weak libraries provided by this library +weak_library_names='' + +# Version information for libsodium. +current=0 +age=0 +revision=0 + +# Is this an already installed library? +installed=yes + +# Should we warn about portability when linking against -modules? +shouldnotlink=no + +# Files to dlopen/dlpreopen +dlopen='' +dlpreopen='' + +# Directory that this library needs to be installed in: +libdir='/home/alex/magnet/example/android/third_party/libsodium/libsodium-1.0.18/libsodium-android-armv8-a/lib' diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/lib/libsodium.so b/example/android/third_party/libsodium/libsodium-android-armv8-a/lib/libsodium.so new file mode 100644 index 0000000000000000000000000000000000000000..b5fe50346c6feed9aca0220e0a6e07935a47ca85 GIT binary patch literal 283928 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

    Xw`Ok#ij`D`w0N}(Q&-@_F&mf7z`H(&d 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 kc4g(my?;vTf6_#pTfUb3Z=AIF@BB+rpV8-$;Y +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +SODIUM_EXPORT +int crypto_aead_aes256gcm_is_available(void); + +#define crypto_aead_aes256gcm_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_aead_aes256gcm_keybytes(void); + +#define crypto_aead_aes256gcm_NSECBYTES 0U +SODIUM_EXPORT +size_t crypto_aead_aes256gcm_nsecbytes(void); + +#define crypto_aead_aes256gcm_NPUBBYTES 12U +SODIUM_EXPORT +size_t crypto_aead_aes256gcm_npubbytes(void); + +#define crypto_aead_aes256gcm_ABYTES 16U +SODIUM_EXPORT +size_t crypto_aead_aes256gcm_abytes(void); + +#define crypto_aead_aes256gcm_MESSAGEBYTES_MAX \ + SODIUM_MIN(SODIUM_SIZE_MAX - crypto_aead_aes256gcm_ABYTES, \ + (16ULL * ((1ULL << 32) - 2ULL))) +SODIUM_EXPORT +size_t crypto_aead_aes256gcm_messagebytes_max(void); + +typedef struct CRYPTO_ALIGN(16) crypto_aead_aes256gcm_state_ { + unsigned char opaque[512]; +} crypto_aead_aes256gcm_state; + +SODIUM_EXPORT +size_t crypto_aead_aes256gcm_statebytes(void); + +SODIUM_EXPORT +int crypto_aead_aes256gcm_encrypt(unsigned char *c, + unsigned long long *clen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((nonnull(1, 8, 9))); + +SODIUM_EXPORT +int crypto_aead_aes256gcm_decrypt(unsigned char *m, + unsigned long long *mlen_p, + unsigned char *nsec, + const unsigned char *c, + unsigned long long clen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(4, 8, 9))); + +SODIUM_EXPORT +int crypto_aead_aes256gcm_encrypt_detached(unsigned char *c, + unsigned char *mac, + unsigned long long *maclen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((nonnull(1, 2, 9, 10))); + +SODIUM_EXPORT +int crypto_aead_aes256gcm_decrypt_detached(unsigned char *m, + unsigned char *nsec, + const unsigned char *c, + unsigned long long clen, + const unsigned char *mac, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(3, 5, 8, 9))); + +/* -- Precomputation interface -- */ + +SODIUM_EXPORT +int crypto_aead_aes256gcm_beforenm(crypto_aead_aes256gcm_state *ctx_, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_aead_aes256gcm_encrypt_afternm(unsigned char *c, + unsigned long long *clen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const crypto_aead_aes256gcm_state *ctx_) + __attribute__ ((nonnull(1, 8, 9))); + +SODIUM_EXPORT +int crypto_aead_aes256gcm_decrypt_afternm(unsigned char *m, + unsigned long long *mlen_p, + unsigned char *nsec, + const unsigned char *c, + unsigned long long clen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *npub, + const crypto_aead_aes256gcm_state *ctx_) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(4, 8, 9))); + +SODIUM_EXPORT +int crypto_aead_aes256gcm_encrypt_detached_afternm(unsigned char *c, + unsigned char *mac, + unsigned long long *maclen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const crypto_aead_aes256gcm_state *ctx_) + __attribute__ ((nonnull(1, 2, 9, 10))); + +SODIUM_EXPORT +int crypto_aead_aes256gcm_decrypt_detached_afternm(unsigned char *m, + unsigned char *nsec, + const unsigned char *c, + unsigned long long clen, + const unsigned char *mac, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *npub, + const crypto_aead_aes256gcm_state *ctx_) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(3, 5, 8, 9))); + +SODIUM_EXPORT +void crypto_aead_aes256gcm_keygen(unsigned char k[crypto_aead_aes256gcm_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_aead_chacha20poly1305.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_aead_chacha20poly1305.h new file mode 100644 index 000000000..5d671df14 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_aead_chacha20poly1305.h @@ -0,0 +1,180 @@ +#ifndef crypto_aead_chacha20poly1305_H +#define crypto_aead_chacha20poly1305_H + +#include +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +/* -- IETF ChaCha20-Poly1305 construction with a 96-bit nonce and a 32-bit internal counter -- */ + +#define crypto_aead_chacha20poly1305_ietf_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_aead_chacha20poly1305_ietf_keybytes(void); + +#define crypto_aead_chacha20poly1305_ietf_NSECBYTES 0U +SODIUM_EXPORT +size_t crypto_aead_chacha20poly1305_ietf_nsecbytes(void); + +#define crypto_aead_chacha20poly1305_ietf_NPUBBYTES 12U + +SODIUM_EXPORT +size_t crypto_aead_chacha20poly1305_ietf_npubbytes(void); + +#define crypto_aead_chacha20poly1305_ietf_ABYTES 16U +SODIUM_EXPORT +size_t crypto_aead_chacha20poly1305_ietf_abytes(void); + +#define crypto_aead_chacha20poly1305_ietf_MESSAGEBYTES_MAX \ + SODIUM_MIN(SODIUM_SIZE_MAX - crypto_aead_chacha20poly1305_ietf_ABYTES, \ + (64ULL * ((1ULL << 32) - 1ULL))) +SODIUM_EXPORT +size_t crypto_aead_chacha20poly1305_ietf_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_aead_chacha20poly1305_ietf_encrypt(unsigned char *c, + unsigned long long *clen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((nonnull(1, 8, 9))); + +SODIUM_EXPORT +int crypto_aead_chacha20poly1305_ietf_decrypt(unsigned char *m, + unsigned long long *mlen_p, + unsigned char *nsec, + const unsigned char *c, + unsigned long long clen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(4, 8, 9))); + +SODIUM_EXPORT +int crypto_aead_chacha20poly1305_ietf_encrypt_detached(unsigned char *c, + unsigned char *mac, + unsigned long long *maclen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((nonnull(1, 2, 9, 10))); + +SODIUM_EXPORT +int crypto_aead_chacha20poly1305_ietf_decrypt_detached(unsigned char *m, + unsigned char *nsec, + const unsigned char *c, + unsigned long long clen, + const unsigned char *mac, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(3, 5, 8, 9))); + +SODIUM_EXPORT +void crypto_aead_chacha20poly1305_ietf_keygen(unsigned char k[crypto_aead_chacha20poly1305_ietf_KEYBYTES]) + __attribute__ ((nonnull)); + +/* -- Original ChaCha20-Poly1305 construction with a 64-bit nonce and a 64-bit internal counter -- */ + +#define crypto_aead_chacha20poly1305_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_aead_chacha20poly1305_keybytes(void); + +#define crypto_aead_chacha20poly1305_NSECBYTES 0U +SODIUM_EXPORT +size_t crypto_aead_chacha20poly1305_nsecbytes(void); + +#define crypto_aead_chacha20poly1305_NPUBBYTES 8U +SODIUM_EXPORT +size_t crypto_aead_chacha20poly1305_npubbytes(void); + +#define crypto_aead_chacha20poly1305_ABYTES 16U +SODIUM_EXPORT +size_t crypto_aead_chacha20poly1305_abytes(void); + +#define crypto_aead_chacha20poly1305_MESSAGEBYTES_MAX \ + (SODIUM_SIZE_MAX - crypto_aead_chacha20poly1305_ABYTES) +SODIUM_EXPORT +size_t crypto_aead_chacha20poly1305_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_aead_chacha20poly1305_encrypt(unsigned char *c, + unsigned long long *clen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((nonnull(1, 8, 9))); + +SODIUM_EXPORT +int crypto_aead_chacha20poly1305_decrypt(unsigned char *m, + unsigned long long *mlen_p, + unsigned char *nsec, + const unsigned char *c, + unsigned long long clen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(4, 8, 9))); + +SODIUM_EXPORT +int crypto_aead_chacha20poly1305_encrypt_detached(unsigned char *c, + unsigned char *mac, + unsigned long long *maclen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((nonnull(1, 2, 9, 10))); + +SODIUM_EXPORT +int crypto_aead_chacha20poly1305_decrypt_detached(unsigned char *m, + unsigned char *nsec, + const unsigned char *c, + unsigned long long clen, + const unsigned char *mac, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(3, 5, 8, 9))); + +SODIUM_EXPORT +void crypto_aead_chacha20poly1305_keygen(unsigned char k[crypto_aead_chacha20poly1305_KEYBYTES]) + __attribute__ ((nonnull)); + +/* Aliases */ + +#define crypto_aead_chacha20poly1305_IETF_KEYBYTES crypto_aead_chacha20poly1305_ietf_KEYBYTES +#define crypto_aead_chacha20poly1305_IETF_NSECBYTES crypto_aead_chacha20poly1305_ietf_NSECBYTES +#define crypto_aead_chacha20poly1305_IETF_NPUBBYTES crypto_aead_chacha20poly1305_ietf_NPUBBYTES +#define crypto_aead_chacha20poly1305_IETF_ABYTES crypto_aead_chacha20poly1305_ietf_ABYTES +#define crypto_aead_chacha20poly1305_IETF_MESSAGEBYTES_MAX crypto_aead_chacha20poly1305_ietf_MESSAGEBYTES_MAX + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_aead_xchacha20poly1305.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_aead_xchacha20poly1305.h new file mode 100644 index 000000000..6643b0cbf --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_aead_xchacha20poly1305.h @@ -0,0 +1,100 @@ +#ifndef crypto_aead_xchacha20poly1305_H +#define crypto_aead_xchacha20poly1305_H + +#include +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_aead_xchacha20poly1305_ietf_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_aead_xchacha20poly1305_ietf_keybytes(void); + +#define crypto_aead_xchacha20poly1305_ietf_NSECBYTES 0U +SODIUM_EXPORT +size_t crypto_aead_xchacha20poly1305_ietf_nsecbytes(void); + +#define crypto_aead_xchacha20poly1305_ietf_NPUBBYTES 24U +SODIUM_EXPORT +size_t crypto_aead_xchacha20poly1305_ietf_npubbytes(void); + +#define crypto_aead_xchacha20poly1305_ietf_ABYTES 16U +SODIUM_EXPORT +size_t crypto_aead_xchacha20poly1305_ietf_abytes(void); + +#define crypto_aead_xchacha20poly1305_ietf_MESSAGEBYTES_MAX \ + (SODIUM_SIZE_MAX - crypto_aead_xchacha20poly1305_ietf_ABYTES) +SODIUM_EXPORT +size_t crypto_aead_xchacha20poly1305_ietf_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_aead_xchacha20poly1305_ietf_encrypt(unsigned char *c, + unsigned long long *clen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((nonnull(1, 8, 9))); + +SODIUM_EXPORT +int crypto_aead_xchacha20poly1305_ietf_decrypt(unsigned char *m, + unsigned long long *mlen_p, + unsigned char *nsec, + const unsigned char *c, + unsigned long long clen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(4, 8, 9))); + +SODIUM_EXPORT +int crypto_aead_xchacha20poly1305_ietf_encrypt_detached(unsigned char *c, + unsigned char *mac, + unsigned long long *maclen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((nonnull(1, 2, 9, 10))); + +SODIUM_EXPORT +int crypto_aead_xchacha20poly1305_ietf_decrypt_detached(unsigned char *m, + unsigned char *nsec, + const unsigned char *c, + unsigned long long clen, + const unsigned char *mac, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(3, 5, 8, 9))); + +SODIUM_EXPORT +void crypto_aead_xchacha20poly1305_ietf_keygen(unsigned char k[crypto_aead_xchacha20poly1305_ietf_KEYBYTES]) + __attribute__ ((nonnull)); + +/* Aliases */ + +#define crypto_aead_xchacha20poly1305_IETF_KEYBYTES crypto_aead_xchacha20poly1305_ietf_KEYBYTES +#define crypto_aead_xchacha20poly1305_IETF_NSECBYTES crypto_aead_xchacha20poly1305_ietf_NSECBYTES +#define crypto_aead_xchacha20poly1305_IETF_NPUBBYTES crypto_aead_xchacha20poly1305_ietf_NPUBBYTES +#define crypto_aead_xchacha20poly1305_IETF_ABYTES crypto_aead_xchacha20poly1305_ietf_ABYTES +#define crypto_aead_xchacha20poly1305_IETF_MESSAGEBYTES_MAX crypto_aead_xchacha20poly1305_ietf_MESSAGEBYTES_MAX + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_auth.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_auth.h new file mode 100644 index 000000000..540aee0e8 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_auth.h @@ -0,0 +1,46 @@ +#ifndef crypto_auth_H +#define crypto_auth_H + +#include + +#include "crypto_auth_hmacsha512256.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_auth_BYTES crypto_auth_hmacsha512256_BYTES +SODIUM_EXPORT +size_t crypto_auth_bytes(void); + +#define crypto_auth_KEYBYTES crypto_auth_hmacsha512256_KEYBYTES +SODIUM_EXPORT +size_t crypto_auth_keybytes(void); + +#define crypto_auth_PRIMITIVE "hmacsha512256" +SODIUM_EXPORT +const char *crypto_auth_primitive(void); + +SODIUM_EXPORT +int crypto_auth(unsigned char *out, const unsigned char *in, + unsigned long long inlen, const unsigned char *k) + __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_auth_verify(const unsigned char *h, const unsigned char *in, + unsigned long long inlen, const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +void crypto_auth_keygen(unsigned char k[crypto_auth_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_auth_hmacsha256.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_auth_hmacsha256.h new file mode 100644 index 000000000..3da864c7d --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_auth_hmacsha256.h @@ -0,0 +1,70 @@ +#ifndef crypto_auth_hmacsha256_H +#define crypto_auth_hmacsha256_H + +#include +#include "crypto_hash_sha256.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_auth_hmacsha256_BYTES 32U +SODIUM_EXPORT +size_t crypto_auth_hmacsha256_bytes(void); + +#define crypto_auth_hmacsha256_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_auth_hmacsha256_keybytes(void); + +SODIUM_EXPORT +int crypto_auth_hmacsha256(unsigned char *out, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *k) __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_auth_hmacsha256_verify(const unsigned char *h, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4))); + +/* ------------------------------------------------------------------------- */ + +typedef struct crypto_auth_hmacsha256_state { + crypto_hash_sha256_state ictx; + crypto_hash_sha256_state octx; +} crypto_auth_hmacsha256_state; + +SODIUM_EXPORT +size_t crypto_auth_hmacsha256_statebytes(void); + +SODIUM_EXPORT +int crypto_auth_hmacsha256_init(crypto_auth_hmacsha256_state *state, + const unsigned char *key, + size_t keylen) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_auth_hmacsha256_update(crypto_auth_hmacsha256_state *state, + const unsigned char *in, + unsigned long long inlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_auth_hmacsha256_final(crypto_auth_hmacsha256_state *state, + unsigned char *out) __attribute__ ((nonnull)); + + +SODIUM_EXPORT +void crypto_auth_hmacsha256_keygen(unsigned char k[crypto_auth_hmacsha256_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_auth_hmacsha512.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_auth_hmacsha512.h new file mode 100644 index 000000000..d992cb816 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_auth_hmacsha512.h @@ -0,0 +1,68 @@ +#ifndef crypto_auth_hmacsha512_H +#define crypto_auth_hmacsha512_H + +#include +#include "crypto_hash_sha512.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_auth_hmacsha512_BYTES 64U +SODIUM_EXPORT +size_t crypto_auth_hmacsha512_bytes(void); + +#define crypto_auth_hmacsha512_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_auth_hmacsha512_keybytes(void); + +SODIUM_EXPORT +int crypto_auth_hmacsha512(unsigned char *out, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *k) __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_auth_hmacsha512_verify(const unsigned char *h, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4))); + +/* ------------------------------------------------------------------------- */ + +typedef struct crypto_auth_hmacsha512_state { + crypto_hash_sha512_state ictx; + crypto_hash_sha512_state octx; +} crypto_auth_hmacsha512_state; + +SODIUM_EXPORT +size_t crypto_auth_hmacsha512_statebytes(void); + +SODIUM_EXPORT +int crypto_auth_hmacsha512_init(crypto_auth_hmacsha512_state *state, + const unsigned char *key, + size_t keylen) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_auth_hmacsha512_update(crypto_auth_hmacsha512_state *state, + const unsigned char *in, + unsigned long long inlen) __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_auth_hmacsha512_final(crypto_auth_hmacsha512_state *state, + unsigned char *out) __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_auth_hmacsha512_keygen(unsigned char k[crypto_auth_hmacsha512_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_auth_hmacsha512256.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_auth_hmacsha512256.h new file mode 100644 index 000000000..3fb526389 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_auth_hmacsha512256.h @@ -0,0 +1,65 @@ +#ifndef crypto_auth_hmacsha512256_H +#define crypto_auth_hmacsha512256_H + +#include +#include "crypto_auth_hmacsha512.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_auth_hmacsha512256_BYTES 32U +SODIUM_EXPORT +size_t crypto_auth_hmacsha512256_bytes(void); + +#define crypto_auth_hmacsha512256_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_auth_hmacsha512256_keybytes(void); + +SODIUM_EXPORT +int crypto_auth_hmacsha512256(unsigned char *out, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *k) __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_auth_hmacsha512256_verify(const unsigned char *h, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4))); + +/* ------------------------------------------------------------------------- */ + +typedef crypto_auth_hmacsha512_state crypto_auth_hmacsha512256_state; + +SODIUM_EXPORT +size_t crypto_auth_hmacsha512256_statebytes(void); + +SODIUM_EXPORT +int crypto_auth_hmacsha512256_init(crypto_auth_hmacsha512256_state *state, + const unsigned char *key, + size_t keylen) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_auth_hmacsha512256_update(crypto_auth_hmacsha512256_state *state, + const unsigned char *in, + unsigned long long inlen) __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_auth_hmacsha512256_final(crypto_auth_hmacsha512256_state *state, + unsigned char *out) __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_auth_hmacsha512256_keygen(unsigned char k[crypto_auth_hmacsha512256_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_box.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_box.h new file mode 100644 index 000000000..e060dd29f --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_box.h @@ -0,0 +1,177 @@ +#ifndef crypto_box_H +#define crypto_box_H + +/* + * THREAD SAFETY: crypto_box_keypair() is thread-safe, + * provided that sodium_init() was called before. + * + * Other functions are always thread-safe. + */ + +#include + +#include "crypto_box_curve25519xsalsa20poly1305.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_box_SEEDBYTES crypto_box_curve25519xsalsa20poly1305_SEEDBYTES +SODIUM_EXPORT +size_t crypto_box_seedbytes(void); + +#define crypto_box_PUBLICKEYBYTES crypto_box_curve25519xsalsa20poly1305_PUBLICKEYBYTES +SODIUM_EXPORT +size_t crypto_box_publickeybytes(void); + +#define crypto_box_SECRETKEYBYTES crypto_box_curve25519xsalsa20poly1305_SECRETKEYBYTES +SODIUM_EXPORT +size_t crypto_box_secretkeybytes(void); + +#define crypto_box_NONCEBYTES crypto_box_curve25519xsalsa20poly1305_NONCEBYTES +SODIUM_EXPORT +size_t crypto_box_noncebytes(void); + +#define crypto_box_MACBYTES crypto_box_curve25519xsalsa20poly1305_MACBYTES +SODIUM_EXPORT +size_t crypto_box_macbytes(void); + +#define crypto_box_MESSAGEBYTES_MAX crypto_box_curve25519xsalsa20poly1305_MESSAGEBYTES_MAX +SODIUM_EXPORT +size_t crypto_box_messagebytes_max(void); + +#define crypto_box_PRIMITIVE "curve25519xsalsa20poly1305" +SODIUM_EXPORT +const char *crypto_box_primitive(void); + +SODIUM_EXPORT +int crypto_box_seed_keypair(unsigned char *pk, unsigned char *sk, + const unsigned char *seed) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_box_keypair(unsigned char *pk, unsigned char *sk) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_box_easy(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *pk, const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4, 5, 6))); + +SODIUM_EXPORT +int crypto_box_open_easy(unsigned char *m, const unsigned char *c, + unsigned long long clen, const unsigned char *n, + const unsigned char *pk, const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5, 6))); + +SODIUM_EXPORT +int crypto_box_detached(unsigned char *c, unsigned char *mac, + const unsigned char *m, unsigned long long mlen, + const unsigned char *n, const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 2, 5, 6, 7))); + +SODIUM_EXPORT +int crypto_box_open_detached(unsigned char *m, const unsigned char *c, + const unsigned char *mac, + unsigned long long clen, + const unsigned char *n, + const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 3, 5, 6, 7))); + +/* -- Precomputation interface -- */ + +#define crypto_box_BEFORENMBYTES crypto_box_curve25519xsalsa20poly1305_BEFORENMBYTES +SODIUM_EXPORT +size_t crypto_box_beforenmbytes(void); + +SODIUM_EXPORT +int crypto_box_beforenm(unsigned char *k, const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_box_easy_afternm(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) __attribute__ ((nonnull(1, 4, 5))); + +SODIUM_EXPORT +int crypto_box_open_easy_afternm(unsigned char *m, const unsigned char *c, + unsigned long long clen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5))); + +SODIUM_EXPORT +int crypto_box_detached_afternm(unsigned char *c, unsigned char *mac, + const unsigned char *m, unsigned long long mlen, + const unsigned char *n, const unsigned char *k) + __attribute__ ((nonnull(1, 2, 5, 6))); + +SODIUM_EXPORT +int crypto_box_open_detached_afternm(unsigned char *m, const unsigned char *c, + const unsigned char *mac, + unsigned long long clen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 3, 5, 6))); + +/* -- Ephemeral SK interface -- */ + +#define crypto_box_SEALBYTES (crypto_box_PUBLICKEYBYTES + crypto_box_MACBYTES) +SODIUM_EXPORT +size_t crypto_box_sealbytes(void); + +SODIUM_EXPORT +int crypto_box_seal(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *pk) + __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_box_seal_open(unsigned char *m, const unsigned char *c, + unsigned long long clen, + const unsigned char *pk, const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5))); + +/* -- NaCl compatibility interface ; Requires padding -- */ + +#define crypto_box_ZEROBYTES crypto_box_curve25519xsalsa20poly1305_ZEROBYTES +SODIUM_EXPORT +size_t crypto_box_zerobytes(void); + +#define crypto_box_BOXZEROBYTES crypto_box_curve25519xsalsa20poly1305_BOXZEROBYTES +SODIUM_EXPORT +size_t crypto_box_boxzerobytes(void); + +SODIUM_EXPORT +int crypto_box(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *pk, const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4, 5, 6))); + +SODIUM_EXPORT +int crypto_box_open(unsigned char *m, const unsigned char *c, + unsigned long long clen, const unsigned char *n, + const unsigned char *pk, const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5, 6))); + +SODIUM_EXPORT +int crypto_box_afternm(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) __attribute__ ((nonnull(1, 4, 5))); + +SODIUM_EXPORT +int crypto_box_open_afternm(unsigned char *m, const unsigned char *c, + unsigned long long clen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5))); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_box_curve25519xchacha20poly1305.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_box_curve25519xchacha20poly1305.h new file mode 100644 index 000000000..26a3d31ef --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_box_curve25519xchacha20poly1305.h @@ -0,0 +1,164 @@ + +#ifndef crypto_box_curve25519xchacha20poly1305_H +#define crypto_box_curve25519xchacha20poly1305_H + +#include +#include "crypto_stream_xchacha20.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_box_curve25519xchacha20poly1305_SEEDBYTES 32U +SODIUM_EXPORT +size_t crypto_box_curve25519xchacha20poly1305_seedbytes(void); + +#define crypto_box_curve25519xchacha20poly1305_PUBLICKEYBYTES 32U +SODIUM_EXPORT +size_t crypto_box_curve25519xchacha20poly1305_publickeybytes(void); + +#define crypto_box_curve25519xchacha20poly1305_SECRETKEYBYTES 32U +SODIUM_EXPORT +size_t crypto_box_curve25519xchacha20poly1305_secretkeybytes(void); + +#define crypto_box_curve25519xchacha20poly1305_BEFORENMBYTES 32U +SODIUM_EXPORT +size_t crypto_box_curve25519xchacha20poly1305_beforenmbytes(void); + +#define crypto_box_curve25519xchacha20poly1305_NONCEBYTES 24U +SODIUM_EXPORT +size_t crypto_box_curve25519xchacha20poly1305_noncebytes(void); + +#define crypto_box_curve25519xchacha20poly1305_MACBYTES 16U +SODIUM_EXPORT +size_t crypto_box_curve25519xchacha20poly1305_macbytes(void); + +#define crypto_box_curve25519xchacha20poly1305_MESSAGEBYTES_MAX \ + (crypto_stream_xchacha20_MESSAGEBYTES_MAX - crypto_box_curve25519xchacha20poly1305_MACBYTES) +SODIUM_EXPORT +size_t crypto_box_curve25519xchacha20poly1305_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_seed_keypair(unsigned char *pk, + unsigned char *sk, + const unsigned char *seed) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_keypair(unsigned char *pk, + unsigned char *sk) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_easy(unsigned char *c, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, + const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4, 5, 6))); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_open_easy(unsigned char *m, + const unsigned char *c, + unsigned long long clen, + const unsigned char *n, + const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5, 6))); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_detached(unsigned char *c, + unsigned char *mac, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, + const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 2, 5, 6, 7))); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_open_detached(unsigned char *m, + const unsigned char *c, + const unsigned char *mac, + unsigned long long clen, + const unsigned char *n, + const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 3, 5, 6, 7))); + +/* -- Precomputation interface -- */ + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_beforenm(unsigned char *k, + const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_easy_afternm(unsigned char *c, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull(1, 4, 5))); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_open_easy_afternm(unsigned char *m, + const unsigned char *c, + unsigned long long clen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5))); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_detached_afternm(unsigned char *c, + unsigned char *mac, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull(1, 2, 5, 6))); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_open_detached_afternm(unsigned char *m, + const unsigned char *c, + const unsigned char *mac, + unsigned long long clen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 3, 5, 6))); + +/* -- Ephemeral SK interface -- */ + +#define crypto_box_curve25519xchacha20poly1305_SEALBYTES \ + (crypto_box_curve25519xchacha20poly1305_PUBLICKEYBYTES + \ + crypto_box_curve25519xchacha20poly1305_MACBYTES) + +SODIUM_EXPORT +size_t crypto_box_curve25519xchacha20poly1305_sealbytes(void); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_seal(unsigned char *c, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *pk) + __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_seal_open(unsigned char *m, + const unsigned char *c, + unsigned long long clen, + const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5))); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_box_curve25519xsalsa20poly1305.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_box_curve25519xsalsa20poly1305.h new file mode 100644 index 000000000..e733f4999 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_box_curve25519xsalsa20poly1305.h @@ -0,0 +1,112 @@ +#ifndef crypto_box_curve25519xsalsa20poly1305_H +#define crypto_box_curve25519xsalsa20poly1305_H + +#include +#include "crypto_stream_xsalsa20.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_box_curve25519xsalsa20poly1305_SEEDBYTES 32U +SODIUM_EXPORT +size_t crypto_box_curve25519xsalsa20poly1305_seedbytes(void); + +#define crypto_box_curve25519xsalsa20poly1305_PUBLICKEYBYTES 32U +SODIUM_EXPORT +size_t crypto_box_curve25519xsalsa20poly1305_publickeybytes(void); + +#define crypto_box_curve25519xsalsa20poly1305_SECRETKEYBYTES 32U +SODIUM_EXPORT +size_t crypto_box_curve25519xsalsa20poly1305_secretkeybytes(void); + +#define crypto_box_curve25519xsalsa20poly1305_BEFORENMBYTES 32U +SODIUM_EXPORT +size_t crypto_box_curve25519xsalsa20poly1305_beforenmbytes(void); + +#define crypto_box_curve25519xsalsa20poly1305_NONCEBYTES 24U +SODIUM_EXPORT +size_t crypto_box_curve25519xsalsa20poly1305_noncebytes(void); + +#define crypto_box_curve25519xsalsa20poly1305_MACBYTES 16U +SODIUM_EXPORT +size_t crypto_box_curve25519xsalsa20poly1305_macbytes(void); + +/* Only for the libsodium API - The NaCl compatibility API would require BOXZEROBYTES extra bytes */ +#define crypto_box_curve25519xsalsa20poly1305_MESSAGEBYTES_MAX \ + (crypto_stream_xsalsa20_MESSAGEBYTES_MAX - crypto_box_curve25519xsalsa20poly1305_MACBYTES) +SODIUM_EXPORT +size_t crypto_box_curve25519xsalsa20poly1305_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_box_curve25519xsalsa20poly1305_seed_keypair(unsigned char *pk, + unsigned char *sk, + const unsigned char *seed) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_box_curve25519xsalsa20poly1305_keypair(unsigned char *pk, + unsigned char *sk) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_box_curve25519xsalsa20poly1305_beforenm(unsigned char *k, + const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +/* -- NaCl compatibility interface ; Requires padding -- */ + +#define crypto_box_curve25519xsalsa20poly1305_BOXZEROBYTES 16U +SODIUM_EXPORT +size_t crypto_box_curve25519xsalsa20poly1305_boxzerobytes(void); + +#define crypto_box_curve25519xsalsa20poly1305_ZEROBYTES \ + (crypto_box_curve25519xsalsa20poly1305_BOXZEROBYTES + \ + crypto_box_curve25519xsalsa20poly1305_MACBYTES) +SODIUM_EXPORT +size_t crypto_box_curve25519xsalsa20poly1305_zerobytes(void); + +SODIUM_EXPORT +int crypto_box_curve25519xsalsa20poly1305(unsigned char *c, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, + const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4, 5, 6))); + +SODIUM_EXPORT +int crypto_box_curve25519xsalsa20poly1305_open(unsigned char *m, + const unsigned char *c, + unsigned long long clen, + const unsigned char *n, + const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5, 6))); + +SODIUM_EXPORT +int crypto_box_curve25519xsalsa20poly1305_afternm(unsigned char *c, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull(1, 4, 5))); + +SODIUM_EXPORT +int crypto_box_curve25519xsalsa20poly1305_open_afternm(unsigned char *m, + const unsigned char *c, + unsigned long long clen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5))); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_core_ed25519.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_core_ed25519.h new file mode 100644 index 000000000..3eae00c45 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_core_ed25519.h @@ -0,0 +1,100 @@ +#ifndef crypto_core_ed25519_H +#define crypto_core_ed25519_H + +#include +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_core_ed25519_BYTES 32 +SODIUM_EXPORT +size_t crypto_core_ed25519_bytes(void); + +#define crypto_core_ed25519_UNIFORMBYTES 32 +SODIUM_EXPORT +size_t crypto_core_ed25519_uniformbytes(void); + +#define crypto_core_ed25519_HASHBYTES 64 +SODIUM_EXPORT +size_t crypto_core_ed25519_hashbytes(void); + +#define crypto_core_ed25519_SCALARBYTES 32 +SODIUM_EXPORT +size_t crypto_core_ed25519_scalarbytes(void); + +#define crypto_core_ed25519_NONREDUCEDSCALARBYTES 64 +SODIUM_EXPORT +size_t crypto_core_ed25519_nonreducedscalarbytes(void); + +SODIUM_EXPORT +int crypto_core_ed25519_is_valid_point(const unsigned char *p) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_core_ed25519_add(unsigned char *r, + const unsigned char *p, const unsigned char *q) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_core_ed25519_sub(unsigned char *r, + const unsigned char *p, const unsigned char *q) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_core_ed25519_from_uniform(unsigned char *p, const unsigned char *r) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_core_ed25519_from_hash(unsigned char *p, const unsigned char *h) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ed25519_random(unsigned char *p) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ed25519_scalar_random(unsigned char *r) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_core_ed25519_scalar_invert(unsigned char *recip, const unsigned char *s) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ed25519_scalar_negate(unsigned char *neg, const unsigned char *s) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ed25519_scalar_complement(unsigned char *comp, const unsigned char *s) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ed25519_scalar_add(unsigned char *z, const unsigned char *x, + const unsigned char *y) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ed25519_scalar_sub(unsigned char *z, const unsigned char *x, + const unsigned char *y) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ed25519_scalar_mul(unsigned char *z, const unsigned char *x, + const unsigned char *y) + __attribute__ ((nonnull)); + +/* + * The interval `s` is sampled from should be at least 317 bits to ensure almost + * uniformity of `r` over `L`. + */ +SODIUM_EXPORT +void crypto_core_ed25519_scalar_reduce(unsigned char *r, const unsigned char *s) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_core_hchacha20.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_core_hchacha20.h new file mode 100644 index 000000000..ece141b09 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_core_hchacha20.h @@ -0,0 +1,36 @@ +#ifndef crypto_core_hchacha20_H +#define crypto_core_hchacha20_H + +#include +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_core_hchacha20_OUTPUTBYTES 32U +SODIUM_EXPORT +size_t crypto_core_hchacha20_outputbytes(void); + +#define crypto_core_hchacha20_INPUTBYTES 16U +SODIUM_EXPORT +size_t crypto_core_hchacha20_inputbytes(void); + +#define crypto_core_hchacha20_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_core_hchacha20_keybytes(void); + +#define crypto_core_hchacha20_CONSTBYTES 16U +SODIUM_EXPORT +size_t crypto_core_hchacha20_constbytes(void); + +SODIUM_EXPORT +int crypto_core_hchacha20(unsigned char *out, const unsigned char *in, + const unsigned char *k, const unsigned char *c) + __attribute__ ((nonnull(1, 2, 3))); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_core_hsalsa20.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_core_hsalsa20.h new file mode 100644 index 000000000..4bf7a4878 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_core_hsalsa20.h @@ -0,0 +1,36 @@ +#ifndef crypto_core_hsalsa20_H +#define crypto_core_hsalsa20_H + +#include +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_core_hsalsa20_OUTPUTBYTES 32U +SODIUM_EXPORT +size_t crypto_core_hsalsa20_outputbytes(void); + +#define crypto_core_hsalsa20_INPUTBYTES 16U +SODIUM_EXPORT +size_t crypto_core_hsalsa20_inputbytes(void); + +#define crypto_core_hsalsa20_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_core_hsalsa20_keybytes(void); + +#define crypto_core_hsalsa20_CONSTBYTES 16U +SODIUM_EXPORT +size_t crypto_core_hsalsa20_constbytes(void); + +SODIUM_EXPORT +int crypto_core_hsalsa20(unsigned char *out, const unsigned char *in, + const unsigned char *k, const unsigned char *c) + __attribute__ ((nonnull(1, 2, 3))); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_core_ristretto255.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_core_ristretto255.h new file mode 100644 index 000000000..f2820e557 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_core_ristretto255.h @@ -0,0 +1,100 @@ +#ifndef crypto_core_ristretto255_H +#define crypto_core_ristretto255_H + +#include +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_core_ristretto255_BYTES 32 +SODIUM_EXPORT +size_t crypto_core_ristretto255_bytes(void); + +#define crypto_core_ristretto255_HASHBYTES 64 +SODIUM_EXPORT +size_t crypto_core_ristretto255_hashbytes(void); + +#define crypto_core_ristretto255_SCALARBYTES 32 +SODIUM_EXPORT +size_t crypto_core_ristretto255_scalarbytes(void); + +#define crypto_core_ristretto255_NONREDUCEDSCALARBYTES 64 +SODIUM_EXPORT +size_t crypto_core_ristretto255_nonreducedscalarbytes(void); + +SODIUM_EXPORT +int crypto_core_ristretto255_is_valid_point(const unsigned char *p) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_core_ristretto255_add(unsigned char *r, + const unsigned char *p, const unsigned char *q) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_core_ristretto255_sub(unsigned char *r, + const unsigned char *p, const unsigned char *q) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_core_ristretto255_from_hash(unsigned char *p, + const unsigned char *r) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ristretto255_random(unsigned char *p) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ristretto255_scalar_random(unsigned char *r) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_core_ristretto255_scalar_invert(unsigned char *recip, + const unsigned char *s) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ristretto255_scalar_negate(unsigned char *neg, + const unsigned char *s) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ristretto255_scalar_complement(unsigned char *comp, + const unsigned char *s) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ristretto255_scalar_add(unsigned char *z, + const unsigned char *x, + const unsigned char *y) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ristretto255_scalar_sub(unsigned char *z, + const unsigned char *x, + const unsigned char *y) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ristretto255_scalar_mul(unsigned char *z, + const unsigned char *x, + const unsigned char *y) + __attribute__ ((nonnull)); + +/* + * The interval `s` is sampled from should be at least 317 bits to ensure almost + * uniformity of `r` over `L`. + */ +SODIUM_EXPORT +void crypto_core_ristretto255_scalar_reduce(unsigned char *r, + const unsigned char *s) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_core_salsa20.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_core_salsa20.h new file mode 100644 index 000000000..bd79fd9f5 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_core_salsa20.h @@ -0,0 +1,36 @@ +#ifndef crypto_core_salsa20_H +#define crypto_core_salsa20_H + +#include +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_core_salsa20_OUTPUTBYTES 64U +SODIUM_EXPORT +size_t crypto_core_salsa20_outputbytes(void); + +#define crypto_core_salsa20_INPUTBYTES 16U +SODIUM_EXPORT +size_t crypto_core_salsa20_inputbytes(void); + +#define crypto_core_salsa20_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_core_salsa20_keybytes(void); + +#define crypto_core_salsa20_CONSTBYTES 16U +SODIUM_EXPORT +size_t crypto_core_salsa20_constbytes(void); + +SODIUM_EXPORT +int crypto_core_salsa20(unsigned char *out, const unsigned char *in, + const unsigned char *k, const unsigned char *c) + __attribute__ ((nonnull(1, 2, 3))); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_core_salsa2012.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_core_salsa2012.h new file mode 100644 index 000000000..05957591c --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_core_salsa2012.h @@ -0,0 +1,36 @@ +#ifndef crypto_core_salsa2012_H +#define crypto_core_salsa2012_H + +#include +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_core_salsa2012_OUTPUTBYTES 64U +SODIUM_EXPORT +size_t crypto_core_salsa2012_outputbytes(void); + +#define crypto_core_salsa2012_INPUTBYTES 16U +SODIUM_EXPORT +size_t crypto_core_salsa2012_inputbytes(void); + +#define crypto_core_salsa2012_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_core_salsa2012_keybytes(void); + +#define crypto_core_salsa2012_CONSTBYTES 16U +SODIUM_EXPORT +size_t crypto_core_salsa2012_constbytes(void); + +SODIUM_EXPORT +int crypto_core_salsa2012(unsigned char *out, const unsigned char *in, + const unsigned char *k, const unsigned char *c) + __attribute__ ((nonnull(1, 2, 3))); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_core_salsa208.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_core_salsa208.h new file mode 100644 index 000000000..d2f216af2 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_core_salsa208.h @@ -0,0 +1,40 @@ +#ifndef crypto_core_salsa208_H +#define crypto_core_salsa208_H + +#include +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_core_salsa208_OUTPUTBYTES 64U +SODIUM_EXPORT +size_t crypto_core_salsa208_outputbytes(void) + __attribute__ ((deprecated)); + +#define crypto_core_salsa208_INPUTBYTES 16U +SODIUM_EXPORT +size_t crypto_core_salsa208_inputbytes(void) + __attribute__ ((deprecated)); + +#define crypto_core_salsa208_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_core_salsa208_keybytes(void) + __attribute__ ((deprecated)); + +#define crypto_core_salsa208_CONSTBYTES 16U +SODIUM_EXPORT +size_t crypto_core_salsa208_constbytes(void) + __attribute__ ((deprecated)); + +SODIUM_EXPORT +int crypto_core_salsa208(unsigned char *out, const unsigned char *in, + const unsigned char *k, const unsigned char *c) + __attribute__ ((nonnull(1, 2, 3))); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_generichash.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_generichash.h new file mode 100644 index 000000000..d897e5d26 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_generichash.h @@ -0,0 +1,84 @@ +#ifndef crypto_generichash_H +#define crypto_generichash_H + +#include + +#include "crypto_generichash_blake2b.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_generichash_BYTES_MIN crypto_generichash_blake2b_BYTES_MIN +SODIUM_EXPORT +size_t crypto_generichash_bytes_min(void); + +#define crypto_generichash_BYTES_MAX crypto_generichash_blake2b_BYTES_MAX +SODIUM_EXPORT +size_t crypto_generichash_bytes_max(void); + +#define crypto_generichash_BYTES crypto_generichash_blake2b_BYTES +SODIUM_EXPORT +size_t crypto_generichash_bytes(void); + +#define crypto_generichash_KEYBYTES_MIN crypto_generichash_blake2b_KEYBYTES_MIN +SODIUM_EXPORT +size_t crypto_generichash_keybytes_min(void); + +#define crypto_generichash_KEYBYTES_MAX crypto_generichash_blake2b_KEYBYTES_MAX +SODIUM_EXPORT +size_t crypto_generichash_keybytes_max(void); + +#define crypto_generichash_KEYBYTES crypto_generichash_blake2b_KEYBYTES +SODIUM_EXPORT +size_t crypto_generichash_keybytes(void); + +#define crypto_generichash_PRIMITIVE "blake2b" +SODIUM_EXPORT +const char *crypto_generichash_primitive(void); + +/* + * Important when writing bindings for other programming languages: + * the state address should be 64-bytes aligned. + */ +typedef crypto_generichash_blake2b_state crypto_generichash_state; + +SODIUM_EXPORT +size_t crypto_generichash_statebytes(void); + +SODIUM_EXPORT +int crypto_generichash(unsigned char *out, size_t outlen, + const unsigned char *in, unsigned long long inlen, + const unsigned char *key, size_t keylen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_generichash_init(crypto_generichash_state *state, + const unsigned char *key, + const size_t keylen, const size_t outlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_generichash_update(crypto_generichash_state *state, + const unsigned char *in, + unsigned long long inlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_generichash_final(crypto_generichash_state *state, + unsigned char *out, const size_t outlen) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_generichash_keygen(unsigned char k[crypto_generichash_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_generichash_blake2b.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_generichash_blake2b.h new file mode 100644 index 000000000..fee9d8ad1 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_generichash_blake2b.h @@ -0,0 +1,118 @@ +#ifndef crypto_generichash_blake2b_H +#define crypto_generichash_blake2b_H + +#include +#include +#include + +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#if defined(__IBMC__) || defined(__SUNPRO_C) || defined(__SUNPRO_CC) +# pragma pack(1) +#else +# pragma pack(push, 1) +#endif + +typedef struct CRYPTO_ALIGN(64) crypto_generichash_blake2b_state { + unsigned char opaque[384]; +} crypto_generichash_blake2b_state; + +#if defined(__IBMC__) || defined(__SUNPRO_C) || defined(__SUNPRO_CC) +# pragma pack() +#else +# pragma pack(pop) +#endif + +#define crypto_generichash_blake2b_BYTES_MIN 16U +SODIUM_EXPORT +size_t crypto_generichash_blake2b_bytes_min(void); + +#define crypto_generichash_blake2b_BYTES_MAX 64U +SODIUM_EXPORT +size_t crypto_generichash_blake2b_bytes_max(void); + +#define crypto_generichash_blake2b_BYTES 32U +SODIUM_EXPORT +size_t crypto_generichash_blake2b_bytes(void); + +#define crypto_generichash_blake2b_KEYBYTES_MIN 16U +SODIUM_EXPORT +size_t crypto_generichash_blake2b_keybytes_min(void); + +#define crypto_generichash_blake2b_KEYBYTES_MAX 64U +SODIUM_EXPORT +size_t crypto_generichash_blake2b_keybytes_max(void); + +#define crypto_generichash_blake2b_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_generichash_blake2b_keybytes(void); + +#define crypto_generichash_blake2b_SALTBYTES 16U +SODIUM_EXPORT +size_t crypto_generichash_blake2b_saltbytes(void); + +#define crypto_generichash_blake2b_PERSONALBYTES 16U +SODIUM_EXPORT +size_t crypto_generichash_blake2b_personalbytes(void); + +SODIUM_EXPORT +size_t crypto_generichash_blake2b_statebytes(void); + +SODIUM_EXPORT +int crypto_generichash_blake2b(unsigned char *out, size_t outlen, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *key, size_t keylen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_generichash_blake2b_salt_personal(unsigned char *out, size_t outlen, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *key, + size_t keylen, + const unsigned char *salt, + const unsigned char *personal) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_generichash_blake2b_init(crypto_generichash_blake2b_state *state, + const unsigned char *key, + const size_t keylen, const size_t outlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_generichash_blake2b_init_salt_personal(crypto_generichash_blake2b_state *state, + const unsigned char *key, + const size_t keylen, const size_t outlen, + const unsigned char *salt, + const unsigned char *personal) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_generichash_blake2b_update(crypto_generichash_blake2b_state *state, + const unsigned char *in, + unsigned long long inlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_generichash_blake2b_final(crypto_generichash_blake2b_state *state, + unsigned char *out, + const size_t outlen) __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_generichash_blake2b_keygen(unsigned char k[crypto_generichash_blake2b_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_hash.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_hash.h new file mode 100644 index 000000000..8752f9caf --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_hash.h @@ -0,0 +1,40 @@ +#ifndef crypto_hash_H +#define crypto_hash_H + +/* + * WARNING: Unless you absolutely need to use SHA512 for interoperatibility, + * purposes, you might want to consider crypto_generichash() instead. + * Unlike SHA512, crypto_generichash() is not vulnerable to length + * extension attacks. + */ + +#include + +#include "crypto_hash_sha512.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_hash_BYTES crypto_hash_sha512_BYTES +SODIUM_EXPORT +size_t crypto_hash_bytes(void); + +SODIUM_EXPORT +int crypto_hash(unsigned char *out, const unsigned char *in, + unsigned long long inlen) __attribute__ ((nonnull(1))); + +#define crypto_hash_PRIMITIVE "sha512" +SODIUM_EXPORT +const char *crypto_hash_primitive(void) + __attribute__ ((warn_unused_result)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_hash_sha256.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_hash_sha256.h new file mode 100644 index 000000000..b18217e18 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_hash_sha256.h @@ -0,0 +1,60 @@ +#ifndef crypto_hash_sha256_H +#define crypto_hash_sha256_H + +/* + * WARNING: Unless you absolutely need to use SHA256 for interoperatibility, + * purposes, you might want to consider crypto_generichash() instead. + * Unlike SHA256, crypto_generichash() is not vulnerable to length + * extension attacks. + */ + +#include +#include +#include + +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +typedef struct crypto_hash_sha256_state { + uint32_t state[8]; + uint64_t count; + uint8_t buf[64]; +} crypto_hash_sha256_state; + +SODIUM_EXPORT +size_t crypto_hash_sha256_statebytes(void); + +#define crypto_hash_sha256_BYTES 32U +SODIUM_EXPORT +size_t crypto_hash_sha256_bytes(void); + +SODIUM_EXPORT +int crypto_hash_sha256(unsigned char *out, const unsigned char *in, + unsigned long long inlen) __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_hash_sha256_init(crypto_hash_sha256_state *state) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_hash_sha256_update(crypto_hash_sha256_state *state, + const unsigned char *in, + unsigned long long inlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_hash_sha256_final(crypto_hash_sha256_state *state, + unsigned char *out) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_hash_sha512.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_hash_sha512.h new file mode 100644 index 000000000..8efa7193a --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_hash_sha512.h @@ -0,0 +1,60 @@ +#ifndef crypto_hash_sha512_H +#define crypto_hash_sha512_H + +/* + * WARNING: Unless you absolutely need to use SHA512 for interoperatibility, + * purposes, you might want to consider crypto_generichash() instead. + * Unlike SHA512, crypto_generichash() is not vulnerable to length + * extension attacks. + */ + +#include +#include +#include + +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +typedef struct crypto_hash_sha512_state { + uint64_t state[8]; + uint64_t count[2]; + uint8_t buf[128]; +} crypto_hash_sha512_state; + +SODIUM_EXPORT +size_t crypto_hash_sha512_statebytes(void); + +#define crypto_hash_sha512_BYTES 64U +SODIUM_EXPORT +size_t crypto_hash_sha512_bytes(void); + +SODIUM_EXPORT +int crypto_hash_sha512(unsigned char *out, const unsigned char *in, + unsigned long long inlen) __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_hash_sha512_init(crypto_hash_sha512_state *state) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_hash_sha512_update(crypto_hash_sha512_state *state, + const unsigned char *in, + unsigned long long inlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_hash_sha512_final(crypto_hash_sha512_state *state, + unsigned char *out) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_kdf.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_kdf.h new file mode 100644 index 000000000..ac2fc6183 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_kdf.h @@ -0,0 +1,53 @@ +#ifndef crypto_kdf_H +#define crypto_kdf_H + +#include +#include + +#include "crypto_kdf_blake2b.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_kdf_BYTES_MIN crypto_kdf_blake2b_BYTES_MIN +SODIUM_EXPORT +size_t crypto_kdf_bytes_min(void); + +#define crypto_kdf_BYTES_MAX crypto_kdf_blake2b_BYTES_MAX +SODIUM_EXPORT +size_t crypto_kdf_bytes_max(void); + +#define crypto_kdf_CONTEXTBYTES crypto_kdf_blake2b_CONTEXTBYTES +SODIUM_EXPORT +size_t crypto_kdf_contextbytes(void); + +#define crypto_kdf_KEYBYTES crypto_kdf_blake2b_KEYBYTES +SODIUM_EXPORT +size_t crypto_kdf_keybytes(void); + +#define crypto_kdf_PRIMITIVE "blake2b" +SODIUM_EXPORT +const char *crypto_kdf_primitive(void) + __attribute__ ((warn_unused_result)); + +SODIUM_EXPORT +int crypto_kdf_derive_from_key(unsigned char *subkey, size_t subkey_len, + uint64_t subkey_id, + const char ctx[crypto_kdf_CONTEXTBYTES], + const unsigned char key[crypto_kdf_KEYBYTES]) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_kdf_keygen(unsigned char k[crypto_kdf_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_kdf_blake2b.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_kdf_blake2b.h new file mode 100644 index 000000000..3ae47dd32 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_kdf_blake2b.h @@ -0,0 +1,44 @@ +#ifndef crypto_kdf_blake2b_H +#define crypto_kdf_blake2b_H + +#include +#include + +#include "crypto_kdf_blake2b.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_kdf_blake2b_BYTES_MIN 16 +SODIUM_EXPORT +size_t crypto_kdf_blake2b_bytes_min(void); + +#define crypto_kdf_blake2b_BYTES_MAX 64 +SODIUM_EXPORT +size_t crypto_kdf_blake2b_bytes_max(void); + +#define crypto_kdf_blake2b_CONTEXTBYTES 8 +SODIUM_EXPORT +size_t crypto_kdf_blake2b_contextbytes(void); + +#define crypto_kdf_blake2b_KEYBYTES 32 +SODIUM_EXPORT +size_t crypto_kdf_blake2b_keybytes(void); + +SODIUM_EXPORT +int crypto_kdf_blake2b_derive_from_key(unsigned char *subkey, size_t subkey_len, + uint64_t subkey_id, + const char ctx[crypto_kdf_blake2b_CONTEXTBYTES], + const unsigned char key[crypto_kdf_blake2b_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_kx.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_kx.h new file mode 100644 index 000000000..347132c32 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_kx.h @@ -0,0 +1,66 @@ +#ifndef crypto_kx_H +#define crypto_kx_H + +#include + +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_kx_PUBLICKEYBYTES 32 +SODIUM_EXPORT +size_t crypto_kx_publickeybytes(void); + +#define crypto_kx_SECRETKEYBYTES 32 +SODIUM_EXPORT +size_t crypto_kx_secretkeybytes(void); + +#define crypto_kx_SEEDBYTES 32 +SODIUM_EXPORT +size_t crypto_kx_seedbytes(void); + +#define crypto_kx_SESSIONKEYBYTES 32 +SODIUM_EXPORT +size_t crypto_kx_sessionkeybytes(void); + +#define crypto_kx_PRIMITIVE "x25519blake2b" +SODIUM_EXPORT +const char *crypto_kx_primitive(void); + +SODIUM_EXPORT +int crypto_kx_seed_keypair(unsigned char pk[crypto_kx_PUBLICKEYBYTES], + unsigned char sk[crypto_kx_SECRETKEYBYTES], + const unsigned char seed[crypto_kx_SEEDBYTES]) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_kx_keypair(unsigned char pk[crypto_kx_PUBLICKEYBYTES], + unsigned char sk[crypto_kx_SECRETKEYBYTES]) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_kx_client_session_keys(unsigned char rx[crypto_kx_SESSIONKEYBYTES], + unsigned char tx[crypto_kx_SESSIONKEYBYTES], + const unsigned char client_pk[crypto_kx_PUBLICKEYBYTES], + const unsigned char client_sk[crypto_kx_SECRETKEYBYTES], + const unsigned char server_pk[crypto_kx_PUBLICKEYBYTES]) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(3, 4, 5))); + +SODIUM_EXPORT +int crypto_kx_server_session_keys(unsigned char rx[crypto_kx_SESSIONKEYBYTES], + unsigned char tx[crypto_kx_SESSIONKEYBYTES], + const unsigned char server_pk[crypto_kx_PUBLICKEYBYTES], + const unsigned char server_sk[crypto_kx_SECRETKEYBYTES], + const unsigned char client_pk[crypto_kx_PUBLICKEYBYTES]) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(3, 4, 5))); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_onetimeauth.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_onetimeauth.h new file mode 100644 index 000000000..7cd7b0706 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_onetimeauth.h @@ -0,0 +1,65 @@ +#ifndef crypto_onetimeauth_H +#define crypto_onetimeauth_H + +#include + +#include "crypto_onetimeauth_poly1305.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +typedef crypto_onetimeauth_poly1305_state crypto_onetimeauth_state; + +SODIUM_EXPORT +size_t crypto_onetimeauth_statebytes(void); + +#define crypto_onetimeauth_BYTES crypto_onetimeauth_poly1305_BYTES +SODIUM_EXPORT +size_t crypto_onetimeauth_bytes(void); + +#define crypto_onetimeauth_KEYBYTES crypto_onetimeauth_poly1305_KEYBYTES +SODIUM_EXPORT +size_t crypto_onetimeauth_keybytes(void); + +#define crypto_onetimeauth_PRIMITIVE "poly1305" +SODIUM_EXPORT +const char *crypto_onetimeauth_primitive(void); + +SODIUM_EXPORT +int crypto_onetimeauth(unsigned char *out, const unsigned char *in, + unsigned long long inlen, const unsigned char *k) + __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_onetimeauth_verify(const unsigned char *h, const unsigned char *in, + unsigned long long inlen, const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_onetimeauth_init(crypto_onetimeauth_state *state, + const unsigned char *key) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_onetimeauth_update(crypto_onetimeauth_state *state, + const unsigned char *in, + unsigned long long inlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_onetimeauth_final(crypto_onetimeauth_state *state, + unsigned char *out) __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_onetimeauth_keygen(unsigned char k[crypto_onetimeauth_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_onetimeauth_poly1305.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_onetimeauth_poly1305.h new file mode 100644 index 000000000..f3e34d86d --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_onetimeauth_poly1305.h @@ -0,0 +1,72 @@ +#ifndef crypto_onetimeauth_poly1305_H +#define crypto_onetimeauth_poly1305_H + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#include +#include +#include + +#include + +#include "export.h" + +typedef struct CRYPTO_ALIGN(16) crypto_onetimeauth_poly1305_state { + unsigned char opaque[256]; +} crypto_onetimeauth_poly1305_state; + +SODIUM_EXPORT +size_t crypto_onetimeauth_poly1305_statebytes(void); + +#define crypto_onetimeauth_poly1305_BYTES 16U +SODIUM_EXPORT +size_t crypto_onetimeauth_poly1305_bytes(void); + +#define crypto_onetimeauth_poly1305_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_onetimeauth_poly1305_keybytes(void); + +SODIUM_EXPORT +int crypto_onetimeauth_poly1305(unsigned char *out, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *k) + __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_onetimeauth_poly1305_verify(const unsigned char *h, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_onetimeauth_poly1305_init(crypto_onetimeauth_poly1305_state *state, + const unsigned char *key) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_onetimeauth_poly1305_update(crypto_onetimeauth_poly1305_state *state, + const unsigned char *in, + unsigned long long inlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_onetimeauth_poly1305_final(crypto_onetimeauth_poly1305_state *state, + unsigned char *out) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_onetimeauth_poly1305_keygen(unsigned char k[crypto_onetimeauth_poly1305_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_pwhash.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_pwhash.h new file mode 100644 index 000000000..585a993ef --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_pwhash.h @@ -0,0 +1,147 @@ +#ifndef crypto_pwhash_H +#define crypto_pwhash_H + +#include + +#include "crypto_pwhash_argon2i.h" +#include "crypto_pwhash_argon2id.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_pwhash_ALG_ARGON2I13 crypto_pwhash_argon2i_ALG_ARGON2I13 +SODIUM_EXPORT +int crypto_pwhash_alg_argon2i13(void); + +#define crypto_pwhash_ALG_ARGON2ID13 crypto_pwhash_argon2id_ALG_ARGON2ID13 +SODIUM_EXPORT +int crypto_pwhash_alg_argon2id13(void); + +#define crypto_pwhash_ALG_DEFAULT crypto_pwhash_ALG_ARGON2ID13 +SODIUM_EXPORT +int crypto_pwhash_alg_default(void); + +#define crypto_pwhash_BYTES_MIN crypto_pwhash_argon2id_BYTES_MIN +SODIUM_EXPORT +size_t crypto_pwhash_bytes_min(void); + +#define crypto_pwhash_BYTES_MAX crypto_pwhash_argon2id_BYTES_MAX +SODIUM_EXPORT +size_t crypto_pwhash_bytes_max(void); + +#define crypto_pwhash_PASSWD_MIN crypto_pwhash_argon2id_PASSWD_MIN +SODIUM_EXPORT +size_t crypto_pwhash_passwd_min(void); + +#define crypto_pwhash_PASSWD_MAX crypto_pwhash_argon2id_PASSWD_MAX +SODIUM_EXPORT +size_t crypto_pwhash_passwd_max(void); + +#define crypto_pwhash_SALTBYTES crypto_pwhash_argon2id_SALTBYTES +SODIUM_EXPORT +size_t crypto_pwhash_saltbytes(void); + +#define crypto_pwhash_STRBYTES crypto_pwhash_argon2id_STRBYTES +SODIUM_EXPORT +size_t crypto_pwhash_strbytes(void); + +#define crypto_pwhash_STRPREFIX crypto_pwhash_argon2id_STRPREFIX +SODIUM_EXPORT +const char *crypto_pwhash_strprefix(void); + +#define crypto_pwhash_OPSLIMIT_MIN crypto_pwhash_argon2id_OPSLIMIT_MIN +SODIUM_EXPORT +size_t crypto_pwhash_opslimit_min(void); + +#define crypto_pwhash_OPSLIMIT_MAX crypto_pwhash_argon2id_OPSLIMIT_MAX +SODIUM_EXPORT +size_t crypto_pwhash_opslimit_max(void); + +#define crypto_pwhash_MEMLIMIT_MIN crypto_pwhash_argon2id_MEMLIMIT_MIN +SODIUM_EXPORT +size_t crypto_pwhash_memlimit_min(void); + +#define crypto_pwhash_MEMLIMIT_MAX crypto_pwhash_argon2id_MEMLIMIT_MAX +SODIUM_EXPORT +size_t crypto_pwhash_memlimit_max(void); + +#define crypto_pwhash_OPSLIMIT_INTERACTIVE crypto_pwhash_argon2id_OPSLIMIT_INTERACTIVE +SODIUM_EXPORT +size_t crypto_pwhash_opslimit_interactive(void); + +#define crypto_pwhash_MEMLIMIT_INTERACTIVE crypto_pwhash_argon2id_MEMLIMIT_INTERACTIVE +SODIUM_EXPORT +size_t crypto_pwhash_memlimit_interactive(void); + +#define crypto_pwhash_OPSLIMIT_MODERATE crypto_pwhash_argon2id_OPSLIMIT_MODERATE +SODIUM_EXPORT +size_t crypto_pwhash_opslimit_moderate(void); + +#define crypto_pwhash_MEMLIMIT_MODERATE crypto_pwhash_argon2id_MEMLIMIT_MODERATE +SODIUM_EXPORT +size_t crypto_pwhash_memlimit_moderate(void); + +#define crypto_pwhash_OPSLIMIT_SENSITIVE crypto_pwhash_argon2id_OPSLIMIT_SENSITIVE +SODIUM_EXPORT +size_t crypto_pwhash_opslimit_sensitive(void); + +#define crypto_pwhash_MEMLIMIT_SENSITIVE crypto_pwhash_argon2id_MEMLIMIT_SENSITIVE +SODIUM_EXPORT +size_t crypto_pwhash_memlimit_sensitive(void); + +/* + * With this function, do not forget to store all parameters, including the + * algorithm identifier in order to produce deterministic output. + * The crypto_pwhash_* definitions, including crypto_pwhash_ALG_DEFAULT, + * may change. + */ +SODIUM_EXPORT +int crypto_pwhash(unsigned char * const out, unsigned long long outlen, + const char * const passwd, unsigned long long passwdlen, + const unsigned char * const salt, + unsigned long long opslimit, size_t memlimit, int alg) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +/* + * The output string already includes all the required parameters, including + * the algorithm identifier. The string is all that has to be stored in + * order to verify a password. + */ +SODIUM_EXPORT +int crypto_pwhash_str(char out[crypto_pwhash_STRBYTES], + const char * const passwd, unsigned long long passwdlen, + unsigned long long opslimit, size_t memlimit) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_str_alg(char out[crypto_pwhash_STRBYTES], + const char * const passwd, unsigned long long passwdlen, + unsigned long long opslimit, size_t memlimit, int alg) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_str_verify(const char str[crypto_pwhash_STRBYTES], + const char * const passwd, + unsigned long long passwdlen) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_str_needs_rehash(const char str[crypto_pwhash_STRBYTES], + unsigned long long opslimit, size_t memlimit) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +#define crypto_pwhash_PRIMITIVE "argon2i" +SODIUM_EXPORT +const char *crypto_pwhash_primitive(void) + __attribute__ ((warn_unused_result)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_pwhash_argon2i.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_pwhash_argon2i.h new file mode 100644 index 000000000..88ff6221d --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_pwhash_argon2i.h @@ -0,0 +1,122 @@ +#ifndef crypto_pwhash_argon2i_H +#define crypto_pwhash_argon2i_H + +#include +#include +#include + +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_pwhash_argon2i_ALG_ARGON2I13 1 +SODIUM_EXPORT +int crypto_pwhash_argon2i_alg_argon2i13(void); + +#define crypto_pwhash_argon2i_BYTES_MIN 16U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_bytes_min(void); + +#define crypto_pwhash_argon2i_BYTES_MAX SODIUM_MIN(SODIUM_SIZE_MAX, 4294967295U) +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_bytes_max(void); + +#define crypto_pwhash_argon2i_PASSWD_MIN 0U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_passwd_min(void); + +#define crypto_pwhash_argon2i_PASSWD_MAX 4294967295U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_passwd_max(void); + +#define crypto_pwhash_argon2i_SALTBYTES 16U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_saltbytes(void); + +#define crypto_pwhash_argon2i_STRBYTES 128U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_strbytes(void); + +#define crypto_pwhash_argon2i_STRPREFIX "$argon2i$" +SODIUM_EXPORT +const char *crypto_pwhash_argon2i_strprefix(void); + +#define crypto_pwhash_argon2i_OPSLIMIT_MIN 3U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_opslimit_min(void); + +#define crypto_pwhash_argon2i_OPSLIMIT_MAX 4294967295U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_opslimit_max(void); + +#define crypto_pwhash_argon2i_MEMLIMIT_MIN 8192U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_memlimit_min(void); + +#define crypto_pwhash_argon2i_MEMLIMIT_MAX \ + ((SIZE_MAX >= 4398046510080U) ? 4398046510080U : (SIZE_MAX >= 2147483648U) ? 2147483648U : 32768U) +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_memlimit_max(void); + +#define crypto_pwhash_argon2i_OPSLIMIT_INTERACTIVE 4U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_opslimit_interactive(void); + +#define crypto_pwhash_argon2i_MEMLIMIT_INTERACTIVE 33554432U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_memlimit_interactive(void); + +#define crypto_pwhash_argon2i_OPSLIMIT_MODERATE 6U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_opslimit_moderate(void); + +#define crypto_pwhash_argon2i_MEMLIMIT_MODERATE 134217728U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_memlimit_moderate(void); + +#define crypto_pwhash_argon2i_OPSLIMIT_SENSITIVE 8U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_opslimit_sensitive(void); + +#define crypto_pwhash_argon2i_MEMLIMIT_SENSITIVE 536870912U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_memlimit_sensitive(void); + +SODIUM_EXPORT +int crypto_pwhash_argon2i(unsigned char * const out, + unsigned long long outlen, + const char * const passwd, + unsigned long long passwdlen, + const unsigned char * const salt, + unsigned long long opslimit, size_t memlimit, + int alg) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_argon2i_str(char out[crypto_pwhash_argon2i_STRBYTES], + const char * const passwd, + unsigned long long passwdlen, + unsigned long long opslimit, size_t memlimit) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_argon2i_str_verify(const char str[crypto_pwhash_argon2i_STRBYTES], + const char * const passwd, + unsigned long long passwdlen) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_argon2i_str_needs_rehash(const char str[crypto_pwhash_argon2i_STRBYTES], + unsigned long long opslimit, size_t memlimit) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_pwhash_argon2id.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_pwhash_argon2id.h new file mode 100644 index 000000000..7183abd18 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_pwhash_argon2id.h @@ -0,0 +1,122 @@ +#ifndef crypto_pwhash_argon2id_H +#define crypto_pwhash_argon2id_H + +#include +#include +#include + +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_pwhash_argon2id_ALG_ARGON2ID13 2 +SODIUM_EXPORT +int crypto_pwhash_argon2id_alg_argon2id13(void); + +#define crypto_pwhash_argon2id_BYTES_MIN 16U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_bytes_min(void); + +#define crypto_pwhash_argon2id_BYTES_MAX SODIUM_MIN(SODIUM_SIZE_MAX, 4294967295U) +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_bytes_max(void); + +#define crypto_pwhash_argon2id_PASSWD_MIN 0U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_passwd_min(void); + +#define crypto_pwhash_argon2id_PASSWD_MAX 4294967295U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_passwd_max(void); + +#define crypto_pwhash_argon2id_SALTBYTES 16U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_saltbytes(void); + +#define crypto_pwhash_argon2id_STRBYTES 128U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_strbytes(void); + +#define crypto_pwhash_argon2id_STRPREFIX "$argon2id$" +SODIUM_EXPORT +const char *crypto_pwhash_argon2id_strprefix(void); + +#define crypto_pwhash_argon2id_OPSLIMIT_MIN 1U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_opslimit_min(void); + +#define crypto_pwhash_argon2id_OPSLIMIT_MAX 4294967295U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_opslimit_max(void); + +#define crypto_pwhash_argon2id_MEMLIMIT_MIN 8192U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_memlimit_min(void); + +#define crypto_pwhash_argon2id_MEMLIMIT_MAX \ + ((SIZE_MAX >= 4398046510080U) ? 4398046510080U : (SIZE_MAX >= 2147483648U) ? 2147483648U : 32768U) +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_memlimit_max(void); + +#define crypto_pwhash_argon2id_OPSLIMIT_INTERACTIVE 2U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_opslimit_interactive(void); + +#define crypto_pwhash_argon2id_MEMLIMIT_INTERACTIVE 67108864U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_memlimit_interactive(void); + +#define crypto_pwhash_argon2id_OPSLIMIT_MODERATE 3U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_opslimit_moderate(void); + +#define crypto_pwhash_argon2id_MEMLIMIT_MODERATE 268435456U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_memlimit_moderate(void); + +#define crypto_pwhash_argon2id_OPSLIMIT_SENSITIVE 4U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_opslimit_sensitive(void); + +#define crypto_pwhash_argon2id_MEMLIMIT_SENSITIVE 1073741824U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_memlimit_sensitive(void); + +SODIUM_EXPORT +int crypto_pwhash_argon2id(unsigned char * const out, + unsigned long long outlen, + const char * const passwd, + unsigned long long passwdlen, + const unsigned char * const salt, + unsigned long long opslimit, size_t memlimit, + int alg) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_argon2id_str(char out[crypto_pwhash_argon2id_STRBYTES], + const char * const passwd, + unsigned long long passwdlen, + unsigned long long opslimit, size_t memlimit) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_argon2id_str_verify(const char str[crypto_pwhash_argon2id_STRBYTES], + const char * const passwd, + unsigned long long passwdlen) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_argon2id_str_needs_rehash(const char str[crypto_pwhash_argon2id_STRBYTES], + unsigned long long opslimit, size_t memlimit) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_pwhash_scryptsalsa208sha256.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_pwhash_scryptsalsa208sha256.h new file mode 100644 index 000000000..5c0bf7d39 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_pwhash_scryptsalsa208sha256.h @@ -0,0 +1,120 @@ +#ifndef crypto_pwhash_scryptsalsa208sha256_H +#define crypto_pwhash_scryptsalsa208sha256_H + +#include +#include +#include + +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_pwhash_scryptsalsa208sha256_BYTES_MIN 16U +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_bytes_min(void); + +#define crypto_pwhash_scryptsalsa208sha256_BYTES_MAX \ + SODIUM_MIN(SODIUM_SIZE_MAX, 0x1fffffffe0ULL) +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_bytes_max(void); + +#define crypto_pwhash_scryptsalsa208sha256_PASSWD_MIN 0U +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_passwd_min(void); + +#define crypto_pwhash_scryptsalsa208sha256_PASSWD_MAX SODIUM_SIZE_MAX +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_passwd_max(void); + +#define crypto_pwhash_scryptsalsa208sha256_SALTBYTES 32U +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_saltbytes(void); + +#define crypto_pwhash_scryptsalsa208sha256_STRBYTES 102U +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_strbytes(void); + +#define crypto_pwhash_scryptsalsa208sha256_STRPREFIX "$7$" +SODIUM_EXPORT +const char *crypto_pwhash_scryptsalsa208sha256_strprefix(void); + +#define crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_MIN 32768U +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_opslimit_min(void); + +#define crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_MAX 4294967295U +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_opslimit_max(void); + +#define crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_MIN 16777216U +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_memlimit_min(void); + +#define crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_MAX \ + SODIUM_MIN(SIZE_MAX, 68719476736ULL) +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_memlimit_max(void); + +#define crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_INTERACTIVE 524288U +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_opslimit_interactive(void); + +#define crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_INTERACTIVE 16777216U +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_memlimit_interactive(void); + +#define crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_SENSITIVE 33554432U +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_opslimit_sensitive(void); + +#define crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_SENSITIVE 1073741824U +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_memlimit_sensitive(void); + +SODIUM_EXPORT +int crypto_pwhash_scryptsalsa208sha256(unsigned char * const out, + unsigned long long outlen, + const char * const passwd, + unsigned long long passwdlen, + const unsigned char * const salt, + unsigned long long opslimit, + size_t memlimit) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_scryptsalsa208sha256_str(char out[crypto_pwhash_scryptsalsa208sha256_STRBYTES], + const char * const passwd, + unsigned long long passwdlen, + unsigned long long opslimit, + size_t memlimit) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_scryptsalsa208sha256_str_verify(const char str[crypto_pwhash_scryptsalsa208sha256_STRBYTES], + const char * const passwd, + unsigned long long passwdlen) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_scryptsalsa208sha256_ll(const uint8_t * passwd, size_t passwdlen, + const uint8_t * salt, size_t saltlen, + uint64_t N, uint32_t r, uint32_t p, + uint8_t * buf, size_t buflen) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_scryptsalsa208sha256_str_needs_rehash(const char str[crypto_pwhash_scryptsalsa208sha256_STRBYTES], + unsigned long long opslimit, + size_t memlimit) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_scalarmult.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_scalarmult.h new file mode 100644 index 000000000..1c6858537 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_scalarmult.h @@ -0,0 +1,46 @@ +#ifndef crypto_scalarmult_H +#define crypto_scalarmult_H + +#include + +#include "crypto_scalarmult_curve25519.h" +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_scalarmult_BYTES crypto_scalarmult_curve25519_BYTES +SODIUM_EXPORT +size_t crypto_scalarmult_bytes(void); + +#define crypto_scalarmult_SCALARBYTES crypto_scalarmult_curve25519_SCALARBYTES +SODIUM_EXPORT +size_t crypto_scalarmult_scalarbytes(void); + +#define crypto_scalarmult_PRIMITIVE "curve25519" +SODIUM_EXPORT +const char *crypto_scalarmult_primitive(void); + +SODIUM_EXPORT +int crypto_scalarmult_base(unsigned char *q, const unsigned char *n) + __attribute__ ((nonnull)); + +/* + * NOTE: Do not use the result of this function directly for key exchange. + * + * Hash the result with the public keys in order to compute a shared + * secret key: H(q || client_pk || server_pk) + * + * Or unless this is not an option, use the crypto_kx() API instead. + */ +SODIUM_EXPORT +int crypto_scalarmult(unsigned char *q, const unsigned char *n, + const unsigned char *p) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_scalarmult_curve25519.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_scalarmult_curve25519.h new file mode 100644 index 000000000..60e9d0c5a --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_scalarmult_curve25519.h @@ -0,0 +1,42 @@ +#ifndef crypto_scalarmult_curve25519_H +#define crypto_scalarmult_curve25519_H + +#include + +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_scalarmult_curve25519_BYTES 32U +SODIUM_EXPORT +size_t crypto_scalarmult_curve25519_bytes(void); + +#define crypto_scalarmult_curve25519_SCALARBYTES 32U +SODIUM_EXPORT +size_t crypto_scalarmult_curve25519_scalarbytes(void); + +/* + * NOTE: Do not use the result of this function directly for key exchange. + * + * Hash the result with the public keys in order to compute a shared + * secret key: H(q || client_pk || server_pk) + * + * Or unless this is not an option, use the crypto_kx() API instead. + */ +SODIUM_EXPORT +int crypto_scalarmult_curve25519(unsigned char *q, const unsigned char *n, + const unsigned char *p) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_scalarmult_curve25519_base(unsigned char *q, + const unsigned char *n) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_scalarmult_ed25519.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_scalarmult_ed25519.h new file mode 100644 index 000000000..2dfa4d707 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_scalarmult_ed25519.h @@ -0,0 +1,51 @@ + +#ifndef crypto_scalarmult_ed25519_H +#define crypto_scalarmult_ed25519_H + +#include + +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_scalarmult_ed25519_BYTES 32U +SODIUM_EXPORT +size_t crypto_scalarmult_ed25519_bytes(void); + +#define crypto_scalarmult_ed25519_SCALARBYTES 32U +SODIUM_EXPORT +size_t crypto_scalarmult_ed25519_scalarbytes(void); + +/* + * NOTE: Do not use the result of this function directly for key exchange. + * + * Hash the result with the public keys in order to compute a shared + * secret key: H(q || client_pk || server_pk) + * + * Or unless this is not an option, use the crypto_kx() API instead. + */ +SODIUM_EXPORT +int crypto_scalarmult_ed25519(unsigned char *q, const unsigned char *n, + const unsigned char *p) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_scalarmult_ed25519_noclamp(unsigned char *q, const unsigned char *n, + const unsigned char *p) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_scalarmult_ed25519_base(unsigned char *q, const unsigned char *n) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_scalarmult_ed25519_base_noclamp(unsigned char *q, const unsigned char *n) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_scalarmult_ristretto255.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_scalarmult_ristretto255.h new file mode 100644 index 000000000..40a45ccef --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_scalarmult_ristretto255.h @@ -0,0 +1,43 @@ + +#ifndef crypto_scalarmult_ristretto255_H +#define crypto_scalarmult_ristretto255_H + +#include + +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_scalarmult_ristretto255_BYTES 32U +SODIUM_EXPORT +size_t crypto_scalarmult_ristretto255_bytes(void); + +#define crypto_scalarmult_ristretto255_SCALARBYTES 32U +SODIUM_EXPORT +size_t crypto_scalarmult_ristretto255_scalarbytes(void); + +/* + * NOTE: Do not use the result of this function directly for key exchange. + * + * Hash the result with the public keys in order to compute a shared + * secret key: H(q || client_pk || server_pk) + * + * Or unless this is not an option, use the crypto_kx() API instead. + */ +SODIUM_EXPORT +int crypto_scalarmult_ristretto255(unsigned char *q, const unsigned char *n, + const unsigned char *p) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_scalarmult_ristretto255_base(unsigned char *q, + const unsigned char *n) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_secretbox.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_secretbox.h new file mode 100644 index 000000000..1d3709db1 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_secretbox.h @@ -0,0 +1,93 @@ +#ifndef crypto_secretbox_H +#define crypto_secretbox_H + +#include + +#include "crypto_secretbox_xsalsa20poly1305.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_secretbox_KEYBYTES crypto_secretbox_xsalsa20poly1305_KEYBYTES +SODIUM_EXPORT +size_t crypto_secretbox_keybytes(void); + +#define crypto_secretbox_NONCEBYTES crypto_secretbox_xsalsa20poly1305_NONCEBYTES +SODIUM_EXPORT +size_t crypto_secretbox_noncebytes(void); + +#define crypto_secretbox_MACBYTES crypto_secretbox_xsalsa20poly1305_MACBYTES +SODIUM_EXPORT +size_t crypto_secretbox_macbytes(void); + +#define crypto_secretbox_PRIMITIVE "xsalsa20poly1305" +SODIUM_EXPORT +const char *crypto_secretbox_primitive(void); + +#define crypto_secretbox_MESSAGEBYTES_MAX crypto_secretbox_xsalsa20poly1305_MESSAGEBYTES_MAX +SODIUM_EXPORT +size_t crypto_secretbox_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_secretbox_easy(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) __attribute__ ((nonnull(1, 4, 5))); + +SODIUM_EXPORT +int crypto_secretbox_open_easy(unsigned char *m, const unsigned char *c, + unsigned long long clen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5))); + +SODIUM_EXPORT +int crypto_secretbox_detached(unsigned char *c, unsigned char *mac, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull(1, 2, 5, 6))); + +SODIUM_EXPORT +int crypto_secretbox_open_detached(unsigned char *m, + const unsigned char *c, + const unsigned char *mac, + unsigned long long clen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 3, 5, 6))); + +SODIUM_EXPORT +void crypto_secretbox_keygen(unsigned char k[crypto_secretbox_KEYBYTES]) + __attribute__ ((nonnull)); + +/* -- NaCl compatibility interface ; Requires padding -- */ + +#define crypto_secretbox_ZEROBYTES crypto_secretbox_xsalsa20poly1305_ZEROBYTES +SODIUM_EXPORT +size_t crypto_secretbox_zerobytes(void); + +#define crypto_secretbox_BOXZEROBYTES crypto_secretbox_xsalsa20poly1305_BOXZEROBYTES +SODIUM_EXPORT +size_t crypto_secretbox_boxzerobytes(void); + +SODIUM_EXPORT +int crypto_secretbox(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) __attribute__ ((nonnull(1, 4, 5))); + +SODIUM_EXPORT +int crypto_secretbox_open(unsigned char *m, const unsigned char *c, + unsigned long long clen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5))); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_secretbox_xchacha20poly1305.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_secretbox_xchacha20poly1305.h new file mode 100644 index 000000000..6ec674e31 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_secretbox_xchacha20poly1305.h @@ -0,0 +1,70 @@ +#ifndef crypto_secretbox_xchacha20poly1305_H +#define crypto_secretbox_xchacha20poly1305_H + +#include +#include "crypto_stream_xchacha20.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_secretbox_xchacha20poly1305_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_secretbox_xchacha20poly1305_keybytes(void); + +#define crypto_secretbox_xchacha20poly1305_NONCEBYTES 24U +SODIUM_EXPORT +size_t crypto_secretbox_xchacha20poly1305_noncebytes(void); + +#define crypto_secretbox_xchacha20poly1305_MACBYTES 16U +SODIUM_EXPORT +size_t crypto_secretbox_xchacha20poly1305_macbytes(void); + +#define crypto_secretbox_xchacha20poly1305_MESSAGEBYTES_MAX \ + (crypto_stream_xchacha20_MESSAGEBYTES_MAX - crypto_secretbox_xchacha20poly1305_MACBYTES) +SODIUM_EXPORT +size_t crypto_secretbox_xchacha20poly1305_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_secretbox_xchacha20poly1305_easy(unsigned char *c, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull(1, 4, 5))); + +SODIUM_EXPORT +int crypto_secretbox_xchacha20poly1305_open_easy(unsigned char *m, + const unsigned char *c, + unsigned long long clen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5))); + +SODIUM_EXPORT +int crypto_secretbox_xchacha20poly1305_detached(unsigned char *c, + unsigned char *mac, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull(1, 2, 5, 6))); + +SODIUM_EXPORT +int crypto_secretbox_xchacha20poly1305_open_detached(unsigned char *m, + const unsigned char *c, + const unsigned char *mac, + unsigned long long clen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 3, 5, 6))); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_secretbox_xsalsa20poly1305.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_secretbox_xsalsa20poly1305.h new file mode 100644 index 000000000..be0874cba --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_secretbox_xsalsa20poly1305.h @@ -0,0 +1,69 @@ +#ifndef crypto_secretbox_xsalsa20poly1305_H +#define crypto_secretbox_xsalsa20poly1305_H + +#include +#include "crypto_stream_xsalsa20.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_secretbox_xsalsa20poly1305_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_secretbox_xsalsa20poly1305_keybytes(void); + +#define crypto_secretbox_xsalsa20poly1305_NONCEBYTES 24U +SODIUM_EXPORT +size_t crypto_secretbox_xsalsa20poly1305_noncebytes(void); + +#define crypto_secretbox_xsalsa20poly1305_MACBYTES 16U +SODIUM_EXPORT +size_t crypto_secretbox_xsalsa20poly1305_macbytes(void); + +/* Only for the libsodium API - The NaCl compatibility API would require BOXZEROBYTES extra bytes */ +#define crypto_secretbox_xsalsa20poly1305_MESSAGEBYTES_MAX \ + (crypto_stream_xsalsa20_MESSAGEBYTES_MAX - crypto_secretbox_xsalsa20poly1305_MACBYTES) +SODIUM_EXPORT +size_t crypto_secretbox_xsalsa20poly1305_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_secretbox_xsalsa20poly1305(unsigned char *c, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull(1, 4, 5))); + +SODIUM_EXPORT +int crypto_secretbox_xsalsa20poly1305_open(unsigned char *m, + const unsigned char *c, + unsigned long long clen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5))); + +SODIUM_EXPORT +void crypto_secretbox_xsalsa20poly1305_keygen(unsigned char k[crypto_secretbox_xsalsa20poly1305_KEYBYTES]) + __attribute__ ((nonnull)); + +/* -- NaCl compatibility interface ; Requires padding -- */ + +#define crypto_secretbox_xsalsa20poly1305_BOXZEROBYTES 16U +SODIUM_EXPORT +size_t crypto_secretbox_xsalsa20poly1305_boxzerobytes(void); + +#define crypto_secretbox_xsalsa20poly1305_ZEROBYTES \ + (crypto_secretbox_xsalsa20poly1305_BOXZEROBYTES + \ + crypto_secretbox_xsalsa20poly1305_MACBYTES) +SODIUM_EXPORT +size_t crypto_secretbox_xsalsa20poly1305_zerobytes(void); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_secretstream_xchacha20poly1305.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_secretstream_xchacha20poly1305.h new file mode 100644 index 000000000..b22e4e931 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_secretstream_xchacha20poly1305.h @@ -0,0 +1,108 @@ +#ifndef crypto_secretstream_xchacha20poly1305_H +#define crypto_secretstream_xchacha20poly1305_H + +#include + +#include "crypto_aead_xchacha20poly1305.h" +#include "crypto_stream_chacha20.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_secretstream_xchacha20poly1305_ABYTES \ + (1U + crypto_aead_xchacha20poly1305_ietf_ABYTES) +SODIUM_EXPORT +size_t crypto_secretstream_xchacha20poly1305_abytes(void); + +#define crypto_secretstream_xchacha20poly1305_HEADERBYTES \ + crypto_aead_xchacha20poly1305_ietf_NPUBBYTES +SODIUM_EXPORT +size_t crypto_secretstream_xchacha20poly1305_headerbytes(void); + +#define crypto_secretstream_xchacha20poly1305_KEYBYTES \ + crypto_aead_xchacha20poly1305_ietf_KEYBYTES +SODIUM_EXPORT +size_t crypto_secretstream_xchacha20poly1305_keybytes(void); + +#define crypto_secretstream_xchacha20poly1305_MESSAGEBYTES_MAX \ + SODIUM_MIN(SODIUM_SIZE_MAX - crypto_secretstream_xchacha20poly1305_ABYTES, \ + (64ULL * ((1ULL << 32) - 2ULL))) +SODIUM_EXPORT +size_t crypto_secretstream_xchacha20poly1305_messagebytes_max(void); + +#define crypto_secretstream_xchacha20poly1305_TAG_MESSAGE 0x00 +SODIUM_EXPORT +unsigned char crypto_secretstream_xchacha20poly1305_tag_message(void); + +#define crypto_secretstream_xchacha20poly1305_TAG_PUSH 0x01 +SODIUM_EXPORT +unsigned char crypto_secretstream_xchacha20poly1305_tag_push(void); + +#define crypto_secretstream_xchacha20poly1305_TAG_REKEY 0x02 +SODIUM_EXPORT +unsigned char crypto_secretstream_xchacha20poly1305_tag_rekey(void); + +#define crypto_secretstream_xchacha20poly1305_TAG_FINAL \ + (crypto_secretstream_xchacha20poly1305_TAG_PUSH | \ + crypto_secretstream_xchacha20poly1305_TAG_REKEY) +SODIUM_EXPORT +unsigned char crypto_secretstream_xchacha20poly1305_tag_final(void); + +typedef struct crypto_secretstream_xchacha20poly1305_state { + unsigned char k[crypto_stream_chacha20_ietf_KEYBYTES]; + unsigned char nonce[crypto_stream_chacha20_ietf_NONCEBYTES]; + unsigned char _pad[8]; +} crypto_secretstream_xchacha20poly1305_state; + +SODIUM_EXPORT +size_t crypto_secretstream_xchacha20poly1305_statebytes(void); + +SODIUM_EXPORT +void crypto_secretstream_xchacha20poly1305_keygen + (unsigned char k[crypto_secretstream_xchacha20poly1305_KEYBYTES]) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_secretstream_xchacha20poly1305_init_push + (crypto_secretstream_xchacha20poly1305_state *state, + unsigned char header[crypto_secretstream_xchacha20poly1305_HEADERBYTES], + const unsigned char k[crypto_secretstream_xchacha20poly1305_KEYBYTES]) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_secretstream_xchacha20poly1305_push + (crypto_secretstream_xchacha20poly1305_state *state, + unsigned char *c, unsigned long long *clen_p, + const unsigned char *m, unsigned long long mlen, + const unsigned char *ad, unsigned long long adlen, unsigned char tag) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_secretstream_xchacha20poly1305_init_pull + (crypto_secretstream_xchacha20poly1305_state *state, + const unsigned char header[crypto_secretstream_xchacha20poly1305_HEADERBYTES], + const unsigned char k[crypto_secretstream_xchacha20poly1305_KEYBYTES]) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_secretstream_xchacha20poly1305_pull + (crypto_secretstream_xchacha20poly1305_state *state, + unsigned char *m, unsigned long long *mlen_p, unsigned char *tag_p, + const unsigned char *c, unsigned long long clen, + const unsigned char *ad, unsigned long long adlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +void crypto_secretstream_xchacha20poly1305_rekey + (crypto_secretstream_xchacha20poly1305_state *state); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_shorthash.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_shorthash.h new file mode 100644 index 000000000..fecaa88bd --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_shorthash.h @@ -0,0 +1,41 @@ +#ifndef crypto_shorthash_H +#define crypto_shorthash_H + +#include + +#include "crypto_shorthash_siphash24.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_shorthash_BYTES crypto_shorthash_siphash24_BYTES +SODIUM_EXPORT +size_t crypto_shorthash_bytes(void); + +#define crypto_shorthash_KEYBYTES crypto_shorthash_siphash24_KEYBYTES +SODIUM_EXPORT +size_t crypto_shorthash_keybytes(void); + +#define crypto_shorthash_PRIMITIVE "siphash24" +SODIUM_EXPORT +const char *crypto_shorthash_primitive(void); + +SODIUM_EXPORT +int crypto_shorthash(unsigned char *out, const unsigned char *in, + unsigned long long inlen, const unsigned char *k) + __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +void crypto_shorthash_keygen(unsigned char k[crypto_shorthash_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_shorthash_siphash24.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_shorthash_siphash24.h new file mode 100644 index 000000000..1e6f72a62 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_shorthash_siphash24.h @@ -0,0 +1,50 @@ +#ifndef crypto_shorthash_siphash24_H +#define crypto_shorthash_siphash24_H + +#include +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +/* -- 64-bit output -- */ + +#define crypto_shorthash_siphash24_BYTES 8U +SODIUM_EXPORT +size_t crypto_shorthash_siphash24_bytes(void); + +#define crypto_shorthash_siphash24_KEYBYTES 16U +SODIUM_EXPORT +size_t crypto_shorthash_siphash24_keybytes(void); + +SODIUM_EXPORT +int crypto_shorthash_siphash24(unsigned char *out, const unsigned char *in, + unsigned long long inlen, const unsigned char *k) + __attribute__ ((nonnull(1, 4))); + +#ifndef SODIUM_LIBRARY_MINIMAL +/* -- 128-bit output -- */ + +#define crypto_shorthash_siphashx24_BYTES 16U +SODIUM_EXPORT +size_t crypto_shorthash_siphashx24_bytes(void); + +#define crypto_shorthash_siphashx24_KEYBYTES 16U +SODIUM_EXPORT +size_t crypto_shorthash_siphashx24_keybytes(void); + +SODIUM_EXPORT +int crypto_shorthash_siphashx24(unsigned char *out, const unsigned char *in, + unsigned long long inlen, const unsigned char *k) + __attribute__ ((nonnull(1, 4))); +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_sign.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_sign.h new file mode 100644 index 000000000..f5fafb123 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_sign.h @@ -0,0 +1,107 @@ +#ifndef crypto_sign_H +#define crypto_sign_H + +/* + * THREAD SAFETY: crypto_sign_keypair() is thread-safe, + * provided that sodium_init() was called before. + * + * Other functions, including crypto_sign_seed_keypair() are always thread-safe. + */ + +#include + +#include "crypto_sign_ed25519.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +typedef crypto_sign_ed25519ph_state crypto_sign_state; + +SODIUM_EXPORT +size_t crypto_sign_statebytes(void); + +#define crypto_sign_BYTES crypto_sign_ed25519_BYTES +SODIUM_EXPORT +size_t crypto_sign_bytes(void); + +#define crypto_sign_SEEDBYTES crypto_sign_ed25519_SEEDBYTES +SODIUM_EXPORT +size_t crypto_sign_seedbytes(void); + +#define crypto_sign_PUBLICKEYBYTES crypto_sign_ed25519_PUBLICKEYBYTES +SODIUM_EXPORT +size_t crypto_sign_publickeybytes(void); + +#define crypto_sign_SECRETKEYBYTES crypto_sign_ed25519_SECRETKEYBYTES +SODIUM_EXPORT +size_t crypto_sign_secretkeybytes(void); + +#define crypto_sign_MESSAGEBYTES_MAX crypto_sign_ed25519_MESSAGEBYTES_MAX +SODIUM_EXPORT +size_t crypto_sign_messagebytes_max(void); + +#define crypto_sign_PRIMITIVE "ed25519" +SODIUM_EXPORT +const char *crypto_sign_primitive(void); + +SODIUM_EXPORT +int crypto_sign_seed_keypair(unsigned char *pk, unsigned char *sk, + const unsigned char *seed) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_sign_keypair(unsigned char *pk, unsigned char *sk) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_sign(unsigned char *sm, unsigned long long *smlen_p, + const unsigned char *m, unsigned long long mlen, + const unsigned char *sk) __attribute__ ((nonnull(1, 5))); + +SODIUM_EXPORT +int crypto_sign_open(unsigned char *m, unsigned long long *mlen_p, + const unsigned char *sm, unsigned long long smlen, + const unsigned char *pk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(3, 5))); + +SODIUM_EXPORT +int crypto_sign_detached(unsigned char *sig, unsigned long long *siglen_p, + const unsigned char *m, unsigned long long mlen, + const unsigned char *sk) __attribute__ ((nonnull(1, 5))); + +SODIUM_EXPORT +int crypto_sign_verify_detached(const unsigned char *sig, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *pk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_sign_init(crypto_sign_state *state); + +SODIUM_EXPORT +int crypto_sign_update(crypto_sign_state *state, + const unsigned char *m, unsigned long long mlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_sign_final_create(crypto_sign_state *state, unsigned char *sig, + unsigned long long *siglen_p, + const unsigned char *sk) + __attribute__ ((nonnull(1, 2, 4))); + +SODIUM_EXPORT +int crypto_sign_final_verify(crypto_sign_state *state, const unsigned char *sig, + const unsigned char *pk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_sign_ed25519.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_sign_ed25519.h new file mode 100644 index 000000000..0fdac42d3 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_sign_ed25519.h @@ -0,0 +1,124 @@ +#ifndef crypto_sign_ed25519_H +#define crypto_sign_ed25519_H + +#include +#include "crypto_hash_sha512.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +typedef struct crypto_sign_ed25519ph_state { + crypto_hash_sha512_state hs; +} crypto_sign_ed25519ph_state; + +SODIUM_EXPORT +size_t crypto_sign_ed25519ph_statebytes(void); + +#define crypto_sign_ed25519_BYTES 64U +SODIUM_EXPORT +size_t crypto_sign_ed25519_bytes(void); + +#define crypto_sign_ed25519_SEEDBYTES 32U +SODIUM_EXPORT +size_t crypto_sign_ed25519_seedbytes(void); + +#define crypto_sign_ed25519_PUBLICKEYBYTES 32U +SODIUM_EXPORT +size_t crypto_sign_ed25519_publickeybytes(void); + +#define crypto_sign_ed25519_SECRETKEYBYTES (32U + 32U) +SODIUM_EXPORT +size_t crypto_sign_ed25519_secretkeybytes(void); + +#define crypto_sign_ed25519_MESSAGEBYTES_MAX (SODIUM_SIZE_MAX - crypto_sign_ed25519_BYTES) +SODIUM_EXPORT +size_t crypto_sign_ed25519_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_sign_ed25519(unsigned char *sm, unsigned long long *smlen_p, + const unsigned char *m, unsigned long long mlen, + const unsigned char *sk) + __attribute__ ((nonnull(1, 5))); + +SODIUM_EXPORT +int crypto_sign_ed25519_open(unsigned char *m, unsigned long long *mlen_p, + const unsigned char *sm, unsigned long long smlen, + const unsigned char *pk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(3, 5))); + +SODIUM_EXPORT +int crypto_sign_ed25519_detached(unsigned char *sig, + unsigned long long *siglen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *sk) + __attribute__ ((nonnull(1, 5))); + +SODIUM_EXPORT +int crypto_sign_ed25519_verify_detached(const unsigned char *sig, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *pk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_sign_ed25519_keypair(unsigned char *pk, unsigned char *sk) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_sign_ed25519_seed_keypair(unsigned char *pk, unsigned char *sk, + const unsigned char *seed) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_sign_ed25519_pk_to_curve25519(unsigned char *curve25519_pk, + const unsigned char *ed25519_pk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_sign_ed25519_sk_to_curve25519(unsigned char *curve25519_sk, + const unsigned char *ed25519_sk) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_sign_ed25519_sk_to_seed(unsigned char *seed, + const unsigned char *sk) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_sign_ed25519_sk_to_pk(unsigned char *pk, const unsigned char *sk) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_sign_ed25519ph_init(crypto_sign_ed25519ph_state *state) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_sign_ed25519ph_update(crypto_sign_ed25519ph_state *state, + const unsigned char *m, + unsigned long long mlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_sign_ed25519ph_final_create(crypto_sign_ed25519ph_state *state, + unsigned char *sig, + unsigned long long *siglen_p, + const unsigned char *sk) + __attribute__ ((nonnull(1, 2, 4))); + +SODIUM_EXPORT +int crypto_sign_ed25519ph_final_verify(crypto_sign_ed25519ph_state *state, + const unsigned char *sig, + const unsigned char *pk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_sign_edwards25519sha512batch.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_sign_edwards25519sha512batch.h new file mode 100644 index 000000000..eed158aa8 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_sign_edwards25519sha512batch.h @@ -0,0 +1,55 @@ +#ifndef crypto_sign_edwards25519sha512batch_H +#define crypto_sign_edwards25519sha512batch_H + +/* + * WARNING: This construction was a prototype, which should not be used + * any more in new projects. + * + * crypto_sign_edwards25519sha512batch is provided for applications + * initially built with NaCl, but as recommended by the author of this + * construction, new applications should use ed25519 instead. + * + * In Sodium, you should use the high-level crypto_sign_*() functions instead. + */ + +#include +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_sign_edwards25519sha512batch_BYTES 64U +#define crypto_sign_edwards25519sha512batch_PUBLICKEYBYTES 32U +#define crypto_sign_edwards25519sha512batch_SECRETKEYBYTES (32U + 32U) +#define crypto_sign_edwards25519sha512batch_MESSAGEBYTES_MAX (SODIUM_SIZE_MAX - crypto_sign_edwards25519sha512batch_BYTES) + +SODIUM_EXPORT +int crypto_sign_edwards25519sha512batch(unsigned char *sm, + unsigned long long *smlen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *sk) + __attribute__ ((deprecated)) __attribute__ ((nonnull(1, 5))); + +SODIUM_EXPORT +int crypto_sign_edwards25519sha512batch_open(unsigned char *m, + unsigned long long *mlen_p, + const unsigned char *sm, + unsigned long long smlen, + const unsigned char *pk) + __attribute__ ((deprecated)) __attribute__ ((nonnull(3, 5))); + +SODIUM_EXPORT +int crypto_sign_edwards25519sha512batch_keypair(unsigned char *pk, + unsigned char *sk) + __attribute__ ((deprecated)) __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_stream.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_stream.h new file mode 100644 index 000000000..88dab5f61 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_stream.h @@ -0,0 +1,59 @@ +#ifndef crypto_stream_H +#define crypto_stream_H + +/* + * WARNING: This is just a stream cipher. It is NOT authenticated encryption. + * While it provides some protection against eavesdropping, it does NOT + * provide any security against active attacks. + * Unless you know what you're doing, what you are looking for is probably + * the crypto_box functions. + */ + +#include + +#include "crypto_stream_xsalsa20.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_stream_KEYBYTES crypto_stream_xsalsa20_KEYBYTES +SODIUM_EXPORT +size_t crypto_stream_keybytes(void); + +#define crypto_stream_NONCEBYTES crypto_stream_xsalsa20_NONCEBYTES +SODIUM_EXPORT +size_t crypto_stream_noncebytes(void); + +#define crypto_stream_MESSAGEBYTES_MAX crypto_stream_xsalsa20_MESSAGEBYTES_MAX +SODIUM_EXPORT +size_t crypto_stream_messagebytes_max(void); + +#define crypto_stream_PRIMITIVE "xsalsa20" +SODIUM_EXPORT +const char *crypto_stream_primitive(void); + +SODIUM_EXPORT +int crypto_stream(unsigned char *c, unsigned long long clen, + const unsigned char *n, const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_xor(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_stream_keygen(unsigned char k[crypto_stream_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_stream_chacha20.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_stream_chacha20.h new file mode 100644 index 000000000..408897558 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_stream_chacha20.h @@ -0,0 +1,106 @@ +#ifndef crypto_stream_chacha20_H +#define crypto_stream_chacha20_H + +/* + * WARNING: This is just a stream cipher. It is NOT authenticated encryption. + * While it provides some protection against eavesdropping, it does NOT + * provide any security against active attacks. + * Unless you know what you're doing, what you are looking for is probably + * the crypto_box functions. + */ + +#include +#include +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_stream_chacha20_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_stream_chacha20_keybytes(void); + +#define crypto_stream_chacha20_NONCEBYTES 8U +SODIUM_EXPORT +size_t crypto_stream_chacha20_noncebytes(void); + +#define crypto_stream_chacha20_MESSAGEBYTES_MAX SODIUM_SIZE_MAX +SODIUM_EXPORT +size_t crypto_stream_chacha20_messagebytes_max(void); + +/* ChaCha20 with a 64-bit nonce and a 64-bit counter, as originally designed */ + +SODIUM_EXPORT +int crypto_stream_chacha20(unsigned char *c, unsigned long long clen, + const unsigned char *n, const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_chacha20_xor(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_chacha20_xor_ic(unsigned char *c, const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, uint64_t ic, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_stream_chacha20_keygen(unsigned char k[crypto_stream_chacha20_KEYBYTES]) + __attribute__ ((nonnull)); + +/* ChaCha20 with a 96-bit nonce and a 32-bit counter (IETF) */ + +#define crypto_stream_chacha20_ietf_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_stream_chacha20_ietf_keybytes(void); + +#define crypto_stream_chacha20_ietf_NONCEBYTES 12U +SODIUM_EXPORT +size_t crypto_stream_chacha20_ietf_noncebytes(void); + +#define crypto_stream_chacha20_ietf_MESSAGEBYTES_MAX \ + SODIUM_MIN(SODIUM_SIZE_MAX, 64ULL * (1ULL << 32)) +SODIUM_EXPORT +size_t crypto_stream_chacha20_ietf_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_stream_chacha20_ietf(unsigned char *c, unsigned long long clen, + const unsigned char *n, const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_chacha20_ietf_xor(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_chacha20_ietf_xor_ic(unsigned char *c, const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, uint32_t ic, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_stream_chacha20_ietf_keygen(unsigned char k[crypto_stream_chacha20_ietf_KEYBYTES]) + __attribute__ ((nonnull)); + +/* Aliases */ + +#define crypto_stream_chacha20_IETF_KEYBYTES crypto_stream_chacha20_ietf_KEYBYTES +#define crypto_stream_chacha20_IETF_NONCEBYTES crypto_stream_chacha20_ietf_NONCEBYTES +#define crypto_stream_chacha20_IETF_MESSAGEBYTES_MAX crypto_stream_chacha20_ietf_MESSAGEBYTES_MAX + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_stream_salsa20.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_stream_salsa20.h new file mode 100644 index 000000000..45b3b3e34 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_stream_salsa20.h @@ -0,0 +1,61 @@ +#ifndef crypto_stream_salsa20_H +#define crypto_stream_salsa20_H + +/* + * WARNING: This is just a stream cipher. It is NOT authenticated encryption. + * While it provides some protection against eavesdropping, it does NOT + * provide any security against active attacks. + * Unless you know what you're doing, what you are looking for is probably + * the crypto_box functions. + */ + +#include +#include +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_stream_salsa20_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_stream_salsa20_keybytes(void); + +#define crypto_stream_salsa20_NONCEBYTES 8U +SODIUM_EXPORT +size_t crypto_stream_salsa20_noncebytes(void); + +#define crypto_stream_salsa20_MESSAGEBYTES_MAX SODIUM_SIZE_MAX +SODIUM_EXPORT +size_t crypto_stream_salsa20_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_stream_salsa20(unsigned char *c, unsigned long long clen, + const unsigned char *n, const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_salsa20_xor(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_salsa20_xor_ic(unsigned char *c, const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, uint64_t ic, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_stream_salsa20_keygen(unsigned char k[crypto_stream_salsa20_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_stream_salsa2012.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_stream_salsa2012.h new file mode 100644 index 000000000..6c5d303ca --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_stream_salsa2012.h @@ -0,0 +1,53 @@ +#ifndef crypto_stream_salsa2012_H +#define crypto_stream_salsa2012_H + +/* + * WARNING: This is just a stream cipher. It is NOT authenticated encryption. + * While it provides some protection against eavesdropping, it does NOT + * provide any security against active attacks. + * Unless you know what you're doing, what you are looking for is probably + * the crypto_box functions. + */ + +#include +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_stream_salsa2012_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_stream_salsa2012_keybytes(void); + +#define crypto_stream_salsa2012_NONCEBYTES 8U +SODIUM_EXPORT +size_t crypto_stream_salsa2012_noncebytes(void); + +#define crypto_stream_salsa2012_MESSAGEBYTES_MAX SODIUM_SIZE_MAX +SODIUM_EXPORT +size_t crypto_stream_salsa2012_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_stream_salsa2012(unsigned char *c, unsigned long long clen, + const unsigned char *n, const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_salsa2012_xor(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_stream_salsa2012_keygen(unsigned char k[crypto_stream_salsa2012_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_stream_salsa208.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_stream_salsa208.h new file mode 100644 index 000000000..d574f3047 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_stream_salsa208.h @@ -0,0 +1,56 @@ +#ifndef crypto_stream_salsa208_H +#define crypto_stream_salsa208_H + +/* + * WARNING: This is just a stream cipher. It is NOT authenticated encryption. + * While it provides some protection against eavesdropping, it does NOT + * provide any security against active attacks. + * Unless you know what you're doing, what you are looking for is probably + * the crypto_box functions. + */ + +#include +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_stream_salsa208_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_stream_salsa208_keybytes(void) + __attribute__ ((deprecated)); + +#define crypto_stream_salsa208_NONCEBYTES 8U +SODIUM_EXPORT +size_t crypto_stream_salsa208_noncebytes(void) + __attribute__ ((deprecated)); + +#define crypto_stream_salsa208_MESSAGEBYTES_MAX SODIUM_SIZE_MAX + SODIUM_EXPORT +size_t crypto_stream_salsa208_messagebytes_max(void) + __attribute__ ((deprecated)); + +SODIUM_EXPORT +int crypto_stream_salsa208(unsigned char *c, unsigned long long clen, + const unsigned char *n, const unsigned char *k) + __attribute__ ((deprecated)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_salsa208_xor(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((deprecated)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_stream_salsa208_keygen(unsigned char k[crypto_stream_salsa208_KEYBYTES]) + __attribute__ ((deprecated)) __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_stream_xchacha20.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_stream_xchacha20.h new file mode 100644 index 000000000..c4002db00 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_stream_xchacha20.h @@ -0,0 +1,61 @@ +#ifndef crypto_stream_xchacha20_H +#define crypto_stream_xchacha20_H + +/* + * WARNING: This is just a stream cipher. It is NOT authenticated encryption. + * While it provides some protection against eavesdropping, it does NOT + * provide any security against active attacks. + * Unless you know what you're doing, what you are looking for is probably + * the crypto_box functions. + */ + +#include +#include +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_stream_xchacha20_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_stream_xchacha20_keybytes(void); + +#define crypto_stream_xchacha20_NONCEBYTES 24U +SODIUM_EXPORT +size_t crypto_stream_xchacha20_noncebytes(void); + +#define crypto_stream_xchacha20_MESSAGEBYTES_MAX SODIUM_SIZE_MAX +SODIUM_EXPORT +size_t crypto_stream_xchacha20_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_stream_xchacha20(unsigned char *c, unsigned long long clen, + const unsigned char *n, const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_xchacha20_xor(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_xchacha20_xor_ic(unsigned char *c, const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, uint64_t ic, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_stream_xchacha20_keygen(unsigned char k[crypto_stream_xchacha20_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_stream_xsalsa20.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_stream_xsalsa20.h new file mode 100644 index 000000000..20034e346 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_stream_xsalsa20.h @@ -0,0 +1,61 @@ +#ifndef crypto_stream_xsalsa20_H +#define crypto_stream_xsalsa20_H + +/* + * WARNING: This is just a stream cipher. It is NOT authenticated encryption. + * While it provides some protection against eavesdropping, it does NOT + * provide any security against active attacks. + * Unless you know what you're doing, what you are looking for is probably + * the crypto_box functions. + */ + +#include +#include +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_stream_xsalsa20_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_stream_xsalsa20_keybytes(void); + +#define crypto_stream_xsalsa20_NONCEBYTES 24U +SODIUM_EXPORT +size_t crypto_stream_xsalsa20_noncebytes(void); + +#define crypto_stream_xsalsa20_MESSAGEBYTES_MAX SODIUM_SIZE_MAX +SODIUM_EXPORT +size_t crypto_stream_xsalsa20_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_stream_xsalsa20(unsigned char *c, unsigned long long clen, + const unsigned char *n, const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_xsalsa20_xor(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_xsalsa20_xor_ic(unsigned char *c, const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, uint64_t ic, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_stream_xsalsa20_keygen(unsigned char k[crypto_stream_xsalsa20_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_verify_16.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_verify_16.h new file mode 100644 index 000000000..7b9c8077a --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_verify_16.h @@ -0,0 +1,23 @@ +#ifndef crypto_verify_16_H +#define crypto_verify_16_H + +#include +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_verify_16_BYTES 16U +SODIUM_EXPORT +size_t crypto_verify_16_bytes(void); + +SODIUM_EXPORT +int crypto_verify_16(const unsigned char *x, const unsigned char *y) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_verify_32.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_verify_32.h new file mode 100644 index 000000000..9b0f4529f --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_verify_32.h @@ -0,0 +1,23 @@ +#ifndef crypto_verify_32_H +#define crypto_verify_32_H + +#include +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_verify_32_BYTES 32U +SODIUM_EXPORT +size_t crypto_verify_32_bytes(void); + +SODIUM_EXPORT +int crypto_verify_32(const unsigned char *x, const unsigned char *y) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_verify_64.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_verify_64.h new file mode 100644 index 000000000..c83b73025 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_verify_64.h @@ -0,0 +1,23 @@ +#ifndef crypto_verify_64_H +#define crypto_verify_64_H + +#include +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_verify_64_BYTES 64U +SODIUM_EXPORT +size_t crypto_verify_64_bytes(void); + +SODIUM_EXPORT +int crypto_verify_64(const unsigned char *x, const unsigned char *y) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/export.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/export.h new file mode 100644 index 000000000..a0074fc9c --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/export.h @@ -0,0 +1,57 @@ + +#ifndef sodium_export_H +#define sodium_export_H + +#include +#include +#include + +#if !defined(__clang__) && !defined(__GNUC__) +# ifdef __attribute__ +# undef __attribute__ +# endif +# define __attribute__(a) +#endif + +#ifdef SODIUM_STATIC +# define SODIUM_EXPORT +# define SODIUM_EXPORT_WEAK +#else +# if defined(_MSC_VER) +# ifdef SODIUM_DLL_EXPORT +# define SODIUM_EXPORT __declspec(dllexport) +# else +# define SODIUM_EXPORT __declspec(dllimport) +# endif +# else +# if defined(__SUNPRO_C) +# ifndef __GNU_C__ +# define SODIUM_EXPORT __attribute__ (visibility(__global)) +# else +# define SODIUM_EXPORT __attribute__ __global +# endif +# elif defined(_MSG_VER) +# define SODIUM_EXPORT extern __declspec(dllexport) +# else +# define SODIUM_EXPORT __attribute__ ((visibility ("default"))) +# endif +# endif +# if defined(__ELF__) && !defined(SODIUM_DISABLE_WEAK_FUNCTIONS) +# define SODIUM_EXPORT_WEAK SODIUM_EXPORT __attribute__((weak)) +# else +# define SODIUM_EXPORT_WEAK SODIUM_EXPORT +# endif +#endif + +#ifndef CRYPTO_ALIGN +# if defined(__INTEL_COMPILER) || defined(_MSC_VER) +# define CRYPTO_ALIGN(x) __declspec(align(x)) +# else +# define CRYPTO_ALIGN(x) __attribute__ ((aligned(x))) +# endif +#endif + +#define SODIUM_MIN(A, B) ((A) < (B) ? (A) : (B)) +#define SODIUM_SIZE_MAX SODIUM_MIN(UINT64_MAX, SIZE_MAX) + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/randombytes.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/randombytes.h new file mode 100644 index 000000000..a03cc6572 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/randombytes.h @@ -0,0 +1,72 @@ + +#ifndef randombytes_H +#define randombytes_H + +#include +#include + +#include + +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +typedef struct randombytes_implementation { + const char *(*implementation_name)(void); /* required */ + uint32_t (*random)(void); /* required */ + void (*stir)(void); /* optional */ + uint32_t (*uniform)(const uint32_t upper_bound); /* optional, a default implementation will be used if NULL */ + void (*buf)(void * const buf, const size_t size); /* required */ + int (*close)(void); /* optional */ +} randombytes_implementation; + +#define randombytes_BYTES_MAX SODIUM_MIN(SODIUM_SIZE_MAX, 0xffffffffUL) + +#define randombytes_SEEDBYTES 32U +SODIUM_EXPORT +size_t randombytes_seedbytes(void); + +SODIUM_EXPORT +void randombytes_buf(void * const buf, const size_t size) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void randombytes_buf_deterministic(void * const buf, const size_t size, + const unsigned char seed[randombytes_SEEDBYTES]) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +uint32_t randombytes_random(void); + +SODIUM_EXPORT +uint32_t randombytes_uniform(const uint32_t upper_bound); + +SODIUM_EXPORT +void randombytes_stir(void); + +SODIUM_EXPORT +int randombytes_close(void); + +SODIUM_EXPORT +int randombytes_set_implementation(randombytes_implementation *impl) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +const char *randombytes_implementation_name(void); + +/* -- NaCl compatibility interface -- */ + +SODIUM_EXPORT +void randombytes(unsigned char * const buf, const unsigned long long buf_len) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/randombytes_internal_random.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/randombytes_internal_random.h new file mode 100644 index 000000000..2b2b7d6ed --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/randombytes_internal_random.h @@ -0,0 +1,22 @@ + +#ifndef randombytes_internal_random_H +#define randombytes_internal_random_H + +#include "export.h" +#include "randombytes.h" + +#ifdef __cplusplus +extern "C" { +#endif + +SODIUM_EXPORT +extern struct randombytes_implementation randombytes_internal_implementation; + +/* Backwards compatibility with libsodium < 1.0.18 */ +#define randombytes_salsa20_implementation randombytes_internal_implementation + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/randombytes_sysrandom.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/randombytes_sysrandom.h new file mode 100644 index 000000000..9e27b674c --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/randombytes_sysrandom.h @@ -0,0 +1,19 @@ + +#ifndef randombytes_sysrandom_H +#define randombytes_sysrandom_H + +#include "export.h" +#include "randombytes.h" + +#ifdef __cplusplus +extern "C" { +#endif + +SODIUM_EXPORT +extern struct randombytes_implementation randombytes_sysrandom_implementation; + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/runtime.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/runtime.h new file mode 100644 index 000000000..7f15d58e7 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/runtime.h @@ -0,0 +1,52 @@ + +#ifndef sodium_runtime_H +#define sodium_runtime_H + +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +SODIUM_EXPORT_WEAK +int sodium_runtime_has_neon(void); + +SODIUM_EXPORT_WEAK +int sodium_runtime_has_sse2(void); + +SODIUM_EXPORT_WEAK +int sodium_runtime_has_sse3(void); + +SODIUM_EXPORT_WEAK +int sodium_runtime_has_ssse3(void); + +SODIUM_EXPORT_WEAK +int sodium_runtime_has_sse41(void); + +SODIUM_EXPORT_WEAK +int sodium_runtime_has_avx(void); + +SODIUM_EXPORT_WEAK +int sodium_runtime_has_avx2(void); + +SODIUM_EXPORT_WEAK +int sodium_runtime_has_avx512f(void); + +SODIUM_EXPORT_WEAK +int sodium_runtime_has_pclmul(void); + +SODIUM_EXPORT_WEAK +int sodium_runtime_has_aesni(void); + +SODIUM_EXPORT_WEAK +int sodium_runtime_has_rdrand(void); + +/* ------------------------------------------------------------------------- */ + +int _sodium_runtime_get_cpu_features(void); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/utils.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/utils.h new file mode 100644 index 000000000..ac8015129 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/utils.h @@ -0,0 +1,179 @@ + +#ifndef sodium_utils_H +#define sodium_utils_H + +#include + +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef SODIUM_C99 +# if defined(__cplusplus) || !defined(__STDC_VERSION__) || __STDC_VERSION__ < 199901L +# define SODIUM_C99(X) +# else +# define SODIUM_C99(X) X +# endif +#endif + +SODIUM_EXPORT +void sodium_memzero(void * const pnt, const size_t len); + +SODIUM_EXPORT +void sodium_stackzero(const size_t len); + +/* + * WARNING: sodium_memcmp() must be used to verify if two secret keys + * are equal, in constant time. + * It returns 0 if the keys are equal, and -1 if they differ. + * This function is not designed for lexicographical comparisons. + */ +SODIUM_EXPORT +int sodium_memcmp(const void * const b1_, const void * const b2_, size_t len) + __attribute__ ((warn_unused_result)); + +/* + * sodium_compare() returns -1 if b1_ < b2_, 1 if b1_ > b2_ and 0 if b1_ == b2_ + * It is suitable for lexicographical comparisons, or to compare nonces + * and counters stored in little-endian format. + * However, it is slower than sodium_memcmp(). + */ +SODIUM_EXPORT +int sodium_compare(const unsigned char *b1_, const unsigned char *b2_, + size_t len) __attribute__ ((warn_unused_result)); + +SODIUM_EXPORT +int sodium_is_zero(const unsigned char *n, const size_t nlen); + +SODIUM_EXPORT +void sodium_increment(unsigned char *n, const size_t nlen); + +SODIUM_EXPORT +void sodium_add(unsigned char *a, const unsigned char *b, const size_t len); + +SODIUM_EXPORT +void sodium_sub(unsigned char *a, const unsigned char *b, const size_t len); + +SODIUM_EXPORT +char *sodium_bin2hex(char * const hex, const size_t hex_maxlen, + const unsigned char * const bin, const size_t bin_len) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int sodium_hex2bin(unsigned char * const bin, const size_t bin_maxlen, + const char * const hex, const size_t hex_len, + const char * const ignore, size_t * const bin_len, + const char ** const hex_end) + __attribute__ ((nonnull(1))); + +#define sodium_base64_VARIANT_ORIGINAL 1 +#define sodium_base64_VARIANT_ORIGINAL_NO_PADDING 3 +#define sodium_base64_VARIANT_URLSAFE 5 +#define sodium_base64_VARIANT_URLSAFE_NO_PADDING 7 + +/* + * Computes the required length to encode BIN_LEN bytes as a base64 string + * using the given variant. The computed length includes a trailing \0. + */ +#define sodium_base64_ENCODED_LEN(BIN_LEN, VARIANT) \ + (((BIN_LEN) / 3U) * 4U + \ + ((((BIN_LEN) - ((BIN_LEN) / 3U) * 3U) | (((BIN_LEN) - ((BIN_LEN) / 3U) * 3U) >> 1)) & 1U) * \ + (4U - (~((((VARIANT) & 2U) >> 1) - 1U) & (3U - ((BIN_LEN) - ((BIN_LEN) / 3U) * 3U)))) + 1U) + +SODIUM_EXPORT +size_t sodium_base64_encoded_len(const size_t bin_len, const int variant); + +SODIUM_EXPORT +char *sodium_bin2base64(char * const b64, const size_t b64_maxlen, + const unsigned char * const bin, const size_t bin_len, + const int variant) __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int sodium_base642bin(unsigned char * const bin, const size_t bin_maxlen, + const char * const b64, const size_t b64_len, + const char * const ignore, size_t * const bin_len, + const char ** const b64_end, const int variant) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int sodium_mlock(void * const addr, const size_t len) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int sodium_munlock(void * const addr, const size_t len) + __attribute__ ((nonnull)); + +/* WARNING: sodium_malloc() and sodium_allocarray() are not general-purpose + * allocation functions. + * + * They return a pointer to a region filled with 0xd0 bytes, immediately + * followed by a guard page. + * As a result, accessing a single byte after the requested allocation size + * will intentionally trigger a segmentation fault. + * + * A canary and an additional guard page placed before the beginning of the + * region may also kill the process if a buffer underflow is detected. + * + * The memory layout is: + * [unprotected region size (read only)][guard page (no access)][unprotected pages (read/write)][guard page (no access)] + * With the layout of the unprotected pages being: + * [optional padding][16-bytes canary][user region] + * + * However: + * - These functions are significantly slower than standard functions + * - Each allocation requires 3 or 4 additional pages + * - The returned address will not be aligned if the allocation size is not + * a multiple of the required alignment. For this reason, these functions + * are designed to store data, such as secret keys and messages. + * + * sodium_malloc() can be used to allocate any libsodium data structure. + * + * The crypto_generichash_state structure is packed and its length is + * either 357 or 361 bytes. For this reason, when using sodium_malloc() to + * allocate a crypto_generichash_state structure, padding must be added in + * order to ensure proper alignment. crypto_generichash_statebytes() + * returns the rounded up structure size, and should be prefered to sizeof(): + * state = sodium_malloc(crypto_generichash_statebytes()); + */ + +SODIUM_EXPORT +void *sodium_malloc(const size_t size) + __attribute__ ((malloc)); + +SODIUM_EXPORT +void *sodium_allocarray(size_t count, size_t size) + __attribute__ ((malloc)); + +SODIUM_EXPORT +void sodium_free(void *ptr); + +SODIUM_EXPORT +int sodium_mprotect_noaccess(void *ptr) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int sodium_mprotect_readonly(void *ptr) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int sodium_mprotect_readwrite(void *ptr) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int sodium_pad(size_t *padded_buflen_p, unsigned char *buf, + size_t unpadded_buflen, size_t blocksize, size_t max_buflen) + __attribute__ ((nonnull(2))); + +SODIUM_EXPORT +int sodium_unpad(size_t *unpadded_buflen_p, const unsigned char *buf, + size_t padded_buflen, size_t blocksize) + __attribute__ ((nonnull(2))); + +/* -------- */ + +int _sodium_alloc_init(void); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/version.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/version.h new file mode 100644 index 000000000..201a290e7 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/version.h @@ -0,0 +1,33 @@ + +#ifndef sodium_version_H +#define sodium_version_H + +#include "export.h" + +#define SODIUM_VERSION_STRING "1.0.18" + +#define SODIUM_LIBRARY_VERSION_MAJOR 10 +#define SODIUM_LIBRARY_VERSION_MINOR 3 + + +#ifdef __cplusplus +extern "C" { +#endif + +SODIUM_EXPORT +const char *sodium_version_string(void); + +SODIUM_EXPORT +int sodium_library_version_major(void); + +SODIUM_EXPORT +int sodium_library_version_minor(void); + +SODIUM_EXPORT +int sodium_library_minimal(void); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/lib/libsodium.a b/example/android/third_party/libsodium/libsodium-android-i686/lib/libsodium.a new file mode 100644 index 0000000000000000000000000000000000000000..8d5be2e7df7c943785154b88f93fd23b47d11ba4 GIT binary patch literal 567114 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

    }Ldg3TA@n%{ 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‚>7-CpI7`| zwmaK;K{xn6)}gOGVkYQ3No>jelcGVA4<0T&6ZHG}b! zF;1Y?_S_yZ^P=3gfQTWF^H*YR`5%f0n)t7HL-E-oL_+wtwiejYcvHBrsX4wXQn;$+ z55>0zajyxPjbU?TB(bs_Glt(>8cFgk{KU#ut`nG8uYW#y?X&03C6MTym8iKa0GCEo?&_~F*^ds`WcTYeXT@`vKj%|+5v8;Wm5p+S?C0ifRliarZ; zO)1cafwo1eu<6yXq4;z2HWUv|t;R!>9}2Dt;NMyFEY%n zF=QqHmhnR|Q5$QZ4b&Paz`cT*g4mZ10=Dwu{`gS%(n0Q-UD_If6r2>e^+O>Z4Y)q? zN%0fWTTgN-byTLZX7YRVO9wnwj!8^QN-lgdJJA_uy z^%C4TL4kF}6%j5ZBfGa#UknOoaN^*L^CCV>Gmn7u#SguG>cqUN>Eb)5sg0C?opnEw z#K?fsDx)6HCySw4R5a)J%jP_K;rUo6yUt8*J;Y8R`je0@cc|&yn2(|GL-y{0E%_ev zMDnU%qJBp(x$x}3dx417u#gWpS@0b4UxZrT`Lx7&(qKEE`Eceq9?)cXsNgdsQp9gT zOdUV?2{7wW0p=%gUavXtBByoy;9s1aY?AK*C&sU(=y1;`{~F<`;|E)TSzG^0QAjVJ z5a~akyul&$qf)BKt2lljb@+kgemZ$Ixvk>|mr8ErNtMX+$$tQ+rNj9MPaQvad3Lz<}KL*C*2bgP7q-aGb>*TeX_umjIiu{{+KphvMjxj=pn1AqWJ;d4*HHrfz z)jzwmU5xk_qwUp);-3n~>oFV-T!?!`2!{%)U&IhueQ-l@|F1COKV>ZZ#loMW3!dCi z{EKHc6#ooe@|hoF=v;v32S7Ux{FlJHLe)5|6|O$W;S?|8$#%0DZOPtZ&`x)NglTa* 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 z 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

    gLUs6v#1!{~=CdF=rWQTUl1I zY-Csao3MAODS4OGwz4A9d_5lV2&S6NP3=cWc(|;o2Uty{`Ool3MVfEUUR~D?Ewlq| z(DwR3_VO9Ii5%ZWE_|oy?zWW<=pgY}*1jJUs}AEQvV2{3>P#f4A^Gsvnb3Alg=3d= zcD27nE-S}GVr!aU>tDU*;rke7`#uuXf?%&Am;{1v!M6MRbnI7{1?=m@mJq{rwn)YS z_4^us)jV3MIUJEU%}y>0hUVhH1%>eO;+9f59-#7=g^9WlaOP9>MZA7_rcwH}iMj{a3#jtH9Zaden!WXE z*wI^MSK_`}xW&DYjuzdt5}e&tVo#mw{a$t~q~C}nrPd8)dUDT0Hu z?$P@>z`5^>t*B6{uaOhLTAmnPj!S$l@)&fhu@Jjj`Ro+piff+hTD}YA?`>OVY6-HH z{gmZGxQ*X*nU#gU@f8)>E5=#w>rg*mI9`jad$6n!$^BGrjn~M77JfjfUXuIz|591% z)GyL;ir#qA|Ft6I42`tpX@(c?Qt=r5_t>wJKu(E_XBG2q(7Dc%8%1za3n%{5d>K{I zFK?Mz-ceDIxs(ov7z7G!O}R@N6dn(mSN@31isdQk@|1a<{SPl7;4UA3&GIO*~- z&Xr|t`vCdCT#SEJet4cTD2__E?xwQ5Zr!&A>()(|Zz_YIarl?LVqAaB%e!V2;#2xo z;Vde{o5^rsl)rph5MFJ0Yt$2y{jj9uAtO9QJ`Fecp=@iN_HUC3{Fh8EFJrsgq;WOm z1x{JmP-YA0Pehi)GCz_1ICq0T_os+ir7gGO$+Ga9e*t|EelrMz@CMCa_^LVvTEKzy zpAF%^J%s+-z!`sj{%BO)!;|?={2ZM$sY{DAex{zpsrm%$RQMo`UEMFSZo4Clc!z<1#-QJ2;AZ=J-M|@T;r|ugo*7TJd%@2)aC#LyZQxv& z7JRyaoAg&3xS8JX8aThN!e@cTzY6RO17B*;Q@@tbf6t)j`6j_v8T9c!Jp@8gg>mxu$v%%F>!4nAO4H6v_A1>d?y*^yN zljC%MCH&<(Im?I3_w7y}F5jzre7JlEhSCK-f8iqBBj0c>_w9*f+B~hSb+vd3!f%+f zXd$+^HQ=qWrFmIId4|}3Y155RP^#7f6f}Qf)3Rnk7Pl-}Jf|_Tm_Kspxnc458k&|y zWG7PSdqZmy8eJf*7_=5ES3w1p@B2q;7Er7m=hbTDs&~FDW`7>YEzo4+iGk zumbAA=S%#}?R(;+0$ljLhKLS>R=pAu6u;nwhWSkm4H5nzhq0$~$=rs>;yH_uvk@6d8D@uFX?{{{(V(M1vQ%k{57gts~|c#UG>#7QT-Mp4EOt~M$4OkocO_9y1IGePKt{V~u6_fc(j zd0B0CWp%OxJM7%4W$kZ3p44_E+WghFBPA^j`gXMYPXQZ|06`;LFNoGW+;XYa)^$q% zSwh6L786y0s7y$hJ3<19&S=HS+ca1Zj<o*U{N~Qd>vw?k51%-a0&;v$nM!{$Lp{x9hUpL-u_?^~@Q` zUA1l}Jv<3mp9`T$$)Zf8F%ttxiR>HutS<=jw&oJn)V2>t z#%`HJTl-GWIoe3@kF zZd3!sqPzQjMbDWkci}QSnLSUT;_wd8+^ob%l)!`Ro%>z}_#i2zOzg4Uu^)0mimH`~ z;`a7BY#nV*jFgOq>cU~MTW(Rjew*$dmPjl{wA;ErhTIp8!sFe?)BMG39gnTuwgpWs zkndLue8)BC`J!=XzSNpp%$NJT5Zxj8?g9m_5@&qJHRk!w$n$*;?!|oX9GY)Q)6L*H zUu8lBYkKy;lXmv1cse^B7ky(r~SgvnN!MV+vRm7bINC4qHLUB-$dpx z^SwtTg{RE*?qrz0eUl9ErYoWbZ$MojlUzWAt9nlI5~y0I5A) zL(L;_IT4vP!!>2rGF18^T0U`k=OBaT42|m{xf-t#Z@@qIGpam?UGj$e-pEJvRd9Sq zGhE}G@6!m*IWXzJpwI%&J3q+(F+B!Xc?9fV@lTni7zuv@0G5^CWB>%=7lq)gOF{Ji z0G#30=rN@#cVNvS^hj-lYyJ`TMXQ!|Iolq`byod=xowoX5eh|lAkjT+|0K>H*k}FyMd23_?)dL>;7;r zH*k|a4!<-k23-{Dy;c1daOnr`@Zr*4WiBavq+c0I7UmakX=Q`Zb+Tmc;=J&Riuul; zIQ|+a*N4j@D2pkQOU-MTyL4VdJst}ozESQZq}stE_4_Ro#@9D5g#O^IeCdB|^#vyaq{y9O`K~=RA?>Aj;#t*hjpioikA^6T~uJEXhB-t``>7Z}G32 zj4nCvv7MC+=8tvz_TKod7;H#JOjn=0V@lhu@Hyz_kf&pxL@bp@Jj(+45bDUWFJj#x zJ&nj9sFRoBk5_2n=Pz}*7Z)I9llaS%ZHD$5AKjDM|FL8^tF(Wg_sC)`1M=e%uHYT8 z04tK=G>U(p2T8y9|0OJe`KQZowkBl$k)`;T{Cf?U*{(Htq)`(d(&6*Ld6eHjWH{#+ z?=20N;Y=DY_vsz~KGPm!Q6Qxv=-rQJ$Z%HeU5Br_+9-57J|8^t#ocos^AsH#M=1n%(%bqAAz4d zjfI_=>kx_LKD8TEA276XcP4hA9PZza`ii-xhHKqkY)rzjHv|vMj*NRG9lIB2JSX?0 zvr`~;n%s*gaV7h;2Vmkw7Ex?3I2drQB>sRa)#5UH%Iz{tJUkNIQ+B}G3tb6+2Lm=3>lwG}r z!BDVNGtC|Lwmq z&Q)F#{Sf4AgKoiT7qcl4!Ncbi6YlPQ{uP3Z>ZthC$R zdK2Q)JPPMjk+egyb+I3Npir<@ZrB0$c`G{!(h=4N@@+}DJK-r7v13!7K%|>TIv2j( z5_k6;+!cMNKaK=6e=T!^y?qdaO%v~~IMf;HXvAYLwayjnqf{mw1imS+qSSS6*eCC6}+I5sLBF&<#kGOm#uc@vJaS+ zy=Qbgp6-EZ+1o}d9=XxwmixXHeV8X>V|POaw{u$d&e4a+Kl!ND*%hCb-8_1|@_fhW z9(wMvauZLtqPuWn7Cs=9ddEsWV|8w=Mm@wiQ3zU^M@CGJZ+o0-m>rY+-lrob9bjAQ zK5pkKFQka8svCT9eDbAf+0~=j!CFZad`BE1F$KMh#8#Z>t+ApXI91y~j0C)BC*QU^ zJFA2Ec>WQ7Z6cL+w>i0C^lIhv#j4uIL~j7&>Di5=x2x#v%j9nQJks&JN!NwIUT~rx zP6Jt)iW$zyZjD1S@xgRNjai;{`={q_IuD1WjS%drZJF5J?`EP$Gs*XD9X7~badW{`b_k-f@iyG%M?i5Vt2pll-`xNo&1w; z+MV6iPANn*nOtRfSTA^C)LfpcjQe@kx*dpnZzlR%mfg-yFggYGrVy@G)maNEIjW@- z{f(X6&d4JFz^lfe2_CNlndplduO1A|Y?|xUe<#^lXdYH)CpypDRMxl%@@)i?soI7( z9W?ja}orpJ$& zXGcG>cXm&Ay%NkM_u4zR@ceU~mHahPuPz_5b0fZhs*Drw;ND~5L^YzC@~T)I@w9Ry zpctXcYt^WOJ8?YTPX3x@jA~Qldz$OD7AN^Ux(LMWPSsA)wxdrOJ;Tm!9G0Kvdi{oz zJc0`7C3BxswG|QRvvxjYMIWcI+_IAWs<#0(D=@o>5fkza{DA6Bk66iftj>q3-5qfJ zD(bhei9SBf^%{VcWP?PEy!MG^6h-Hty9sc4YZ~&r7XetwXRV#v_{JX5ZrjspuR6l- zaBR&pI4odyceX+VivDKA7!0vgk2zut+6=nG5plNsz@GDt5o6c`C!v$zA+#&JVo2fc zn3kJ(S|++H104hCG41F(j@M(V{t|Hv=rPFwjeiDu%wq58YevKoty+jpa}&Rj?=(?w z4o*X;aTSRpj095PHj3ea~&d=b~~o! z#!bpZ2dun5yXx0yFo*2u{!H>?uggR$Syap&)fM%wpBfaBQ0?Hw8Yk_+@sIr+k^SU| z?sCL>74f@9tVhJrT|%#ezq{;Z74^Ey5$h3e-CZ&n>k(-?HyYn;u1rNc3ekqD2lSPQ zQx#wzWuL?Cyuas+_%~!D?r% z`wpBQK`+U?@;XZNl0_K`7RUkUDtIZAJj$|HaU7Z>dPG(6gStwUEiS@6jEv4eO$L}l zsRDY->8@9@ndCwAPsjxVUX|T#=Vlmv-C-;GYmQsdaUMnwjNa%`w5_O(16k1yr4IvH z8Qozgx3UtT-!1lzzEQPFCwWkJm8u!KV2vJ#OprUB)UttLaGir8(atT?T(1?*YLGDN5@cny*-RKBtcadJrW-t1L?i=ZiRXVtj zRJGnpeysaQ)f@x+NY!WL`$*LX+HIW`u{C?pIeNp*tT$Z6gh{3+9R5IgjhbgzSv^Wk zj_4|kRCnu%2<9MazQL}4g@u_%Bh=JzE@EBy*0NFfe$5)_9_Zp+WB0@FVnuh=7ETfK zOGn@B8Z>>JREAE4>N-B;8J0;ZdO9w#ieX)`3TMlt*wx!(qwuuaI!g3;y;nKNp2Q9b zD@{IMwOb>xirco(Rr&O+hUee1@2_#Daq%jWfxV>bo-`doytj8ZiX5JTUBqP z?s>!N)sY>iL3$LCIWQgZoUO(jdVu>tA=rKppf|+;cXj1@_TFj~ zilO(j`0!P>0`a0d3Ev#c@V6gvz}M&3w$WG5@cL?lsvlI~{**DctpGnKH$w3<2ISq- zvbB}gbmY&1DegP?KAr6EWx)#79=Ux-!#zUF_Rl{8pc8e3TSz$MJ0{h{frZR1k;|%O^BnN+=*EWhv1bQSA%sGiyGtG*9t!E zs=ZU(ClTp4ozi)5OTJ=b6y%f+OJs5vhX-=RV~(-+#Z`WOm?j~*uV*lPM2YR(iphvq zU-JpFs&?19`w-p7(Y@O^PKszE!@w-+Pq@cyYbJUq8G*KH?rHp^v33wX27aC z2v6uMpnK^B?^8s{f%oy-WmRz`gP!Y=X)aollVqz#Y`sR#F71fP2{6pSYe)H&d4Epd5hs=Saeop#3@I?0;bwj#2)_T=a~HF{p6+96is} zUMXRjqz1zGjGhGEXiT9bGAR1dS@o;cFlWs<#9>$2WI%beWV z;Y6kL#QZ9dYc0m7vAf?w2VBOgV+8m%(|EMCtkeQ=%*X$A`<`wjHLnPe}E zk5L?&A;lA{xrNSC<%H@yUuGX<^7o44G4!951hBv|n2qe*f?OcLYNvX;i6On+yWT!U zuPaSM5W{Jz?LN#5Hu}cLk-KQv@7u|@yss(eq+u*6DqxdylyFf=4%pDxvGw~44w<;y zioU>pFb+urzEaaLt!Gg?7!-MLUZusHp!p<}sPR3vs`}tx^={~x(2s6qOLlip%Qb(V zJrNplq0h6c`cV?Uv7_&1k}u?^8AGtlXEXaS#>8tz4n(w&+3}SPmwM`Y^1TJvcd?_R zBtWDEUN#U#s2dtcK4ZNzv^x;D)eM*l*M#(BnBo_<-oUO? z^(WGGdcC9F_7Fz-JJ4-%R8OCJv_A`@U9GVr*%7O##gMvUM3)*IV}xHARlkP8ItS#& zVEq%nK?)U;>*h56yPqszYOMs%Z*p@3&cgciuT3rAQDttDDm|+_XqOa98QvG*pXOh= zAQ!~zK*b6)Q66Oak#A zX-ZV2L3?CmZPt(TTrG_sm-D!Oyc+FH=(+4GdoJdN;Lqr_Rq`?E=df&H{P^F5;O#uD z6+jM@y5VwCbfz%b+SYq394Vd5LXASSlU#y^I_2G z6CSw<-rzv8vlXkeK@_mffie2M%u4vySwD!6rPqOfG6?n7?@frs!z!Sc@bgY7ZQHB! zT^v|mra{l6$}nYuuvhCwd_d!*V>$3iGsb(Uvx^MBM!(Br91r2aNWJym3h~#~HgW+R z#4a>^KBE1b80~)A?|N9#o`N0P|0W*;iNC-zVPT%61klehI{zhI^v66F|B`;TSLTb~ zw0_P*HfRUNo8kEVV^6__Cv-04yb0%fI}VP2Pr-_Sb0Mc7C$IE26Q|NpHR68Q$Cz?+ zIkz9CbJIW82Q7}qZpi`3POi&dHX}FsagtrQBX-F{xrxLh$z2COpzH;rq%x~}IHBwn zj(c@Q_teo4_6)eo$GB4~J9|sqsd4x6M0WB_oH(gWW7&WwQNkR3CHGu09OmH*a(nVPbcMzYLa4WxLYuT>94!Zea8I|E8D|xfIx+- zj%us|Ih5YQ<92#vsvY+$5{7#@-j+g0gXP2J(9OFtER4VBg<8};eTkLbnCMWB`2QmmQ_ZtzwYyZT{BA~DwEVs32Iu)I$dMFi`4IA&mM zrN3KX^jQdOkSKKnoYGi|ry^wR!5L86c2*}^0W+nI{F%+4I{u`rZg065&YB~{2B>=v zyr`<)JXAf$#a0+NJMKNIYGRi|D_*e|U^f0!(gu{? zHG_Q=SF!BBWv$uQ?BtzM(%1jlX7z82`rgHW0kPLhbEeC>f3kgozTRbC1(4_LKj17c=WSg0L( z_CDmlcSGxaEc4y?NAZ5ruVD=xi;qL>Wh~yMlA^}q(3@OaKAWnOaX{hT@;HtHr~?6I z7HAyO!Tgk2Q9RzREngoUG~RBF29LKnKVa$6T+E-^^3-yzA6mZ2NsTYk_;$X-`00BU ziZ2bH;6r-G^N_}$502~9^4`I5{bgWW(;)N4;`}1e$aYMoLC(PorU*iQ>frxG<`U!U>wJK9kYP&+;?L{~!g&HK2tOl) z|CzuUpIK~lFsl6VOyQsSI*qIH2R1>|KkTFbmZm>R52%IyD;hsvb*|=7Vs|pey0zY{z=-M@R9!MF(1A3Pp|oK>7PFG;nF|x zY%PuOmwsio50`#LWFq>cv0MkIU*`>e_r1++UZM4SEL56F>YL^)7hqli2~yndKeD1^ zDuXq$6m+f_hgd+OG_c@&2v4w_vt(&=!#Pu@UwJmPj?BGY2kxm!8R|$%kkS*M6i2Bv zkz7$~UOa~Ld?^%kkiL`u3~7&7uHQyE>aM^8^lzD#oh{VmERMccB@-nUCiD4{ZWrQT zHy?S8%!Q3uDvx-Uc6M$sD|F=8##smXq#5HqB1`aO_%-@n9t}F&W669T)c(bvJWKrv z(hmOg#{l53NaiCtwHkdMB>oZ(bpi&ZzlNO-Opo_a=?;?l%z=OAi{GqJ!Vl!Dc4Rb| zl@h+>-?_=;_@pPqQNP7!N(So!89!mt#1obIROq-cjw$}&SIK;!lhsfMqV6keMSO9V zeAt(&LB<`;OaP|kY8<9dmGI6o2uD5z7u$Udm;I=#wJ>kIDRD9P1$EGC+tJkW`NiC6h;~oQC}_|7DEp z5`-bf&xhc55rpyMzw%&(n{%OE25$0y+rUl!BbYE4KmT(K+~iMvu0n6lwa(T>LOv#L z&SA>nCh3wfBtI8uexrgoIg%^mu%aWxL--F?Z8u1p z-4MQm70+qkXHyqmz@RIfAM@q+HI!B8;m#mdGM3<-T&D58s(Yn~`G+nk?Md3H@L;){ zhINBj$^>C=*M!_{L_<23Kc6%*mIyo3D|3%yjm3TdUj8(Z|FuDx5dY3$z)Qp!6SLV}+4)(qGV6>=odH+66tqY|`QL)ENyQgd}|7i?P^w#p5q;wB_N0 z$71I}7vqVJ#mZPn+N9Le)62%)b&;-icHjE)59qY=ZUNC?E1j&I%8M=~h7k8ioG$IE zUqQOMRDJ1c2YpFbJ2Ohz%evZ`U}cXRo4}#I=y5D?c_TTc5N;reH9$}M5ASotnnd%+ zK6s6EN4S#NKMKmKV#~jvA!?LW5ykRLnek<}uw(9&Uixl%hywYP)gEQfhZtHHZd>+q ztL@{`re9jCjt+bw61n03VAaoxw)_mYfS!sqpE7s9x>^Qz(PZ4-jQjQ#>8r2v?!Q4W z@q;~QboBqkSbc#myTWKgEe>7Xfm>s-<}wvaE>p4MGBt(&8vMucUlALHZOGfLQ+BBM zEy=juh1l5_b}XC4wZgW;rA@Q#RRb!5S9|L^+$it9{vgXq);R3W{ioKt`)hHj0t?Y` zU(Qe^)9wYWc)Q}dxIf;XH}mpS{#-;d3VNR^aBGCRO*gL?Pm$N*h)!{_$o&V+pKd$! zLQ4_jZ+G3t==Bd)0k|NIEq?CPykSBw`(m|-cY31SVr$rAI9Si??E7kL&7b4NTJ>=& z9-m<8-COQerqFA)VUPqN^cug3Yr6wW$)kVmecIVzxYbP`(X4FoYmzbG+e#$BD z#r~>`SM)MEsLz8JC%x63KI|dR>!tdyyw1al$#Ec!e20kDC}c2J8-UH!nC>#wcyCbv zU26b#M*y}#V`ciuxUiq6G2^$xg9c%*1z?9XMj12>`N{arJbZn3{E zpP4S7eM$L(OUfIeM{Id;P<7s3y^HlnlKX8K?-s0~F&}4WT*L(yumu_`XMBp&=wAaY zc|Ry*c;y`G9?gqm+GCk*sDLLjC*pmqLHfm-5GMENU2moXfxijb<1$ASKA+Qgqo!AF4)%}n&${b3^N`*kya$9q_+*_w(nqLv2ihMa+#vdY zLArwQBO&1eR{1G&MAi0yeK90HNuAz#c+yCld^d#uuR`L}8WR8iJA{6w4);d5(@0zW zs`rW-;ni`O!~Uhlhv7K}|APOcfpgoT;P-^!<{s5QGUzE1q#=KP*M!fD2L5>i=ba=p zq&LH5xzPCWu{wW=pNW6rKgqyNK2r=lZqQ$0;3oYK4g8A+{VN83mVt{de#R$Z;9t?@ z;gA1?A^1E4|B}Hc4m%Bl*HKXK6V-14mv+Z*0FBT~|2NBn^SJbXjXqrZztuim`oDEP zyh^`s^x@L~b@*`U|DN{Y(*O1OaOwX(^5JRyUZLxWq*wYs_RlneOaCWxa>1ql^RL@U z|2NymXP(D4((J>f|6A+BC4XP@;nHuV7!eqWkMuWe*CsCg$|4^w-^q3#F8zVrB{1l! zgoRWTH+V5|p}cC5O)-5Vc2O@}5yEe21$|eTCy~RPa$id`7bys zg{%oB(ODDfE?F~#c0vDQZD3qNV#xZkq@iKnGTd>YF2M-&JWtiDL3D#v5jM?PGH>Z( zFD=)!%nu1HpJU4!mMp`?8#m-{#PHS1e7+rvFwb$}lIDh{IdhMP=dnriTo*(4ViWE+ z2}w^rnt8h8UhAIg-QqDg-Qj}P!F2U=7F}Df8%h$I8k?5l5|%mC?U+1=< z`qMRtU7ubL|08|?4WqlkJn|N7#N_)W4k>ME^D+0aQ~NxL3BC3f>D2?F?K(ip>)A!h zc${M&noq$qNye+U!cUhDSH@G~BJr2!dvKt=MhNutaqXWH8PkYAd2&%!>?Ymy{)B2r zKkeTk9AHH<+(zwxyZ$Z+Z%Mzr|26yv<=+N9aFFj4^N(X%@h|!J68!suP^>5E0q_Q$ z4~#cOp??36;Z8b{_4JA7PdH&2?mF4DhwxMQ=P&QpP~XfGkl`{7p)y=%f|At^6Jala z3PZM=`XtD3v5$PSh;aXnBHWUejVB<&z5Nd+!d+Y>!u<|KxVZQFzmo)4M3nOq|G$i~ z@SWg1d=dU>q~9mjN&v>h?(m>N*anSBUqZkC-DH$qOk=V9?s#RCKNw0zc_^5-Uq<;? zzpspv!33Gb>YMX6x5O8j(txkY0(88ltWacLKLH=gyu?Vo`4#Ai%ey@91R-(#Y0JC! zYI>Oy>rYnX0ZlJ+V&OyiHTlS#Sa53OC0?Z?B=`i)N9M#*Z`Bn&h95gg^)+FkEqWUf1Qm-r@ zF711k5101c=)zWaQ*wC|66cv`>zSCx55 zyG-dqmGYJL6g++QgbFt_G%cKeV`1;Neh(Kz3?;6bS6`UAhsmoTW;&+8YF@n-%Y-u# zxeO@sd-~OG_TNQjg{&A_Xr=OM2&t8FKQ6JAnMGkjCo_w}X^tVenpZDb1Qtcx+59rA z;}RelaX*G&$VkC4Df3n4n1UgL>v7QL`R1iVA(gsNA4S~c6C(xt^VK^!FELnDH1Bw2 zO7l#i(!Bp1sS?j}@q6hvJM_S2i_cMirt;)GJ4sBw58{y0mTSz93NU_`O!GEgh^0&r z_Vs$;CTj>`GNpe<{20Dpru2X5aAkZZ>?Qv4WWP^)jS%SPziR)-k|~`II^kuqxXhPt z;^wF2StejbGNn50zfQ+P{L6S&-jkpU%D*0F7>tZ7!emN6f`4BS%HMjuuTUxn9|e5np6 z^T$w^LPgu5l4krwTmI;}sJ=C{|CH-Wj0;5jz0G;uk^FYRZ+GoxGSa*lbG5cbTTW77 zof@L>?8y~sTOIC#fc{xEez~6#Qss;dU*`zOqLs7zz{e^ABQPicN!R025Gtf_+;`Ng z3Ml~k|0r15x@pL8#F~&k^^-5v8O@S}@t=j@e1&rW8tEsANuOh4wTfym-OK=NQ2^Ge zG2L~jdD0yLbQ=P&%>mdBjg{#qJ;uTvsn3}g-RbG(-CLQT=+P(WH zp+kZSBz{s-GF54hxTL%c&@{16G3;L7R;xSX-<1dBwpR0ya$|IY4DZW3k$q&XNOO>E zXdFHa#HCzi9p@~K%bZW*vj^dFZZAg4>SWLp&%bMe19%dbxu&>3j`$Fl&x7DU)AaI< z68v>df2QUu?W9Z7S7}`6dH#|7Wv(eW@8u+ZwvYb1nh#}AG?HHG6Cl0JHHA+LXo#m3 zb)n76KD((t{B}*B(YWMyh0afZKQTe$ep%908lUIme}l&TvZQ-aRE%e%kN(#hzrlwm zG=7uDQ~F7L2&|ue^KS?@2_<;ooE6Uo`N28u!Qlph2H7 z=u33^NzXV5|Cq*!ne<}}+)UTS2L2_3&*cXGWdrB_N*aGWdGeOVAMT9?y&2CRhS0NJ z2p=<^|7PITAdvKKGw`tn&i<2z@njnk`Z(+~#Q87gKT9Sk{q$-bkc2D!^g172rQeTN zCMf;1UnVI1bf1sE^wS^t@U(vS%LJvL_V0s}etMFT&rF;2(~b|9etNbKpQpn;(S2|{ z7fvJjDgE>&AAXZZ77>}X&~MiG0Uv#*#)pv*M(BU*y+$k_F8$eUK3w{zU|FQOZ*H)( z#n@0c*dZ_V3#EWVps=za7%CDk7DPcsPGJ&Bk+Q)<&{jELq_J^mUc>x3EsOlS=fVV# zNW>6wN9LO^M~e|Nr$j~xDs_i$@D{s54i$+X3prHe6ef_A9D)bG*wL3eP1i16GJfIU z1Py+ZZCAw`;s&!q`hK^4b;WG3*~=G)eD;LNHuISjM$p*AO`XLX@ba9)<(qll;Usx3 zA(GELi@dw&q*=JEWm$t?@9*F&k=iskPmV3-9JFQ5$Fkt2B%j_j$^W@GA3uk2AO4Dr z=$onK$JsEtTg)Rb!$wTT_u`P!7M_POjgOrgR}xE^M6fqf!UI#S`%k{oD&so&ex3)< z3}QU~O>>&|$FYKGBs%hZ6OOdkm_)FjtNs5^A1?mnc@!40o1~9x|0YJepZ0$v^MMt~ zLU(BY>wJ79{lfPy_z%jzb$X&CjG2GK@h|=*|6YNAUl5A*0zJVf(*?$OvyA=zAq$;& zBC^or1t+erW`&LeBbMS1ekltT3EFN#>Zd&pTbK7cx25TZhVeL)ec>lvigr9QG|6|) zt)#BX9FSNo{%K51#$3`i8IE6uraXoG^Z-8*S;==nA0#Vj2F^L87)i_R8kcv8`~L#Y zH2Do>D&#X#I|x0;tU>fsG`(L|@)eCs8<6~wevmPxUFHUCJ2b3@q!nCmK~^}^Ab1>h z8uBTm8gf5{7H~`pH=y8Bv;a}MTO?`psA9`o{UgW>j66guevvt#xEbA_g6Nl6O1%|+Zr7Df>J#fNA*p9lPtE`X^6-B%WiBQ% zHsMTK8hKJCNqY@J!z|SHV|_E{flhcC-Xp_?+8ohQoxz&kY#CM8YS31S5aB`{-y5!c%(;T-GH$CMp z{%ZQxVHei)ltrz!t#NCh6Ph1-!MEi#d*C6v?Z_8ecHMf(7ZNKi&u4Pr)-!6l%I>_F zOs#=#tF1F`wG9k!=}UGbACBF-c^DlAo;>9+FSKksG`yu>=?sb8|8iOEmfMkI$&On` zoSa@e;$)8?-f|$_`sG9ETQB`W;+rE<>9v=B!OGpK;*2FdTpi!XL^|2CtnBy8tn6fH zk)YP_>|{?j{C!8^N@WsIJcfYV@eghIS3uvy9f>$z?x%0QP;QZbsWD&Js(A&-{cW#Cd7ZrlDqP5X@CE1-ad5q>d&EiN-uverT?B{d+}je3utNDfFA{}r{Wqz3C2rwz*Q!0dAPJ0TE7~JW`~q5`TAexK zxVVPS!9_*MN9?M%tg8L+kx3qKkb^VfY$cCcxc>mGa91YCGD+Mfa8II6F?*92xQ%ge zbu;huwcSn|8tAcjoU)VK9H?w(R%TpW;5P$G=#x+LS^{RZ?S9PEShzTf*BY=Wph=Li zs6o0c=!j?8S?*JEqk@%u6mi3qj&{{Pn=!=A#hp&_ZN?~tTf=dip~GvRaaR|vfpSm^ z7OrTtvNt7aoFsI=<7p!+5Y{FZR`Nv)N${))W3|dgR+$5I#XGZ#?}zle$_Ttih$DTd zPOB4T`lXsL73yWRDh0lGXrIh!zHis>%s0O8Q143L{pv)IenDME>*Nc{vlUMVWwlm4 z?@Zi|r-dS4r=H%u01iq9YJ8yX#DNa|*}QLa0qbBRb@FXuP|#%9K@U*%SJ!tG11Y5o zP`jw);y%dS9f?*D^}R@UltRiXz0J!Lq;-;2sxt(oXj!Fqc+~>ctH#1r_Hh>KCI(S@ z6K}h^&C5h2L}eZlpfU~lt?~;AU{*P$_o%FLO7HS2W9de(N`c83s}z?wvXU`Uyb8g~ zf{iK*SnItkxHGYy?$GjxEI7zcLZ#S!(RTM*xXR#{l3Gw%?oqT2E4MMx%Cy7v@9D}8 z<*mM%=>MUp#&O^1%fLE6wsdu(6`o-6v^>s_Jq>L)_;nJqsf7=vMl&3UsM6LIWRChVpn}+MLVswXA6YuK!|-8R_v}P zM&g=E+jLtGxA|6V$;15FX2`eLOytUHI&U8FBJswZNa6>cj@N5Ip2(Tz^DH3=;lk^Q}ouWTvn^DmG7O|?%$d?pcco)nVMX^zRQ+BVy)i&%~ErJK1bC74ui23Q*(sKS>Rbgi@jU(^xRLO)#r>7O6lzZ=i@@O+1zaxY_+>||AWXnw4*qZaj}5B~?Os-2*D9Q;<6!}2UGSK%f> zd>N*L_kM6%xl!}q4|Xe2isZ$Xi6_FyAjwl04fI&}eGZ;}!%nG@;l-Zs@j`eMUNa=$ zK0o$SrUDL7J2gMn50aHr7@p;3z+^wXubhPpblK$k5CZB3w3kBZ)tBId{4O!NXD3uY*+pT9Ex^=P|udJPn;mT%R(B9QX>|Rw# zBEx$Sfp=p|PsacB9@Osbuw2@QpR16Br*~M{OAlG4m&Vzt&Gzz8<)7^mhLL7!xKYZ zF~pItY?05SzXD4&W@F=aaFr#ftkP+5yQ;&kLb*O-ckY>BRdrhT^FCfE2u75i%8c!D zO3!36%jU;E1hc1A_mR2&p?%O{=8WBrWRAH!S3BmnR_Rr7YwRPAJN(_)%FD~30t_R$ zt4&397{IdOIN5S5I~`-bCHPJ*N^G#Qe+o*}cqe;v+{u2?$~M7wbE3n^UV_g@ZKBo5 z{t2#Mnvq!NWSipbfNr-i*uj`#J#LhI*vVB+!*_8XDxY&Da?MG!Te;EC^mRj*SzBXPhv-ANpxt%tTg+Q!f}$&Nmk8MWJS zAGJFBC*Ui+b7ZFK6$b;PG7HXe+UjUqKwGbM`iKNA)r71}^a*R!Z!FI*0)88Q-*7M# zs<2MSFpIX?w5_0R6K(CZrD&UJp!79IMp^>vSd>wso|vr)@25 zx3eCNdW4_eZq?c`BzS0~e9IkN3X4mw*&9Sr1s}1{z@6wj4)UN1a}8)vWIMeYT~?us zK;uQjUA2WR)#y8oX=wHwCwnQH@1+$igKkWk zf`aiaj@x4&d?ogbbLKU~8Z`o**s1H4=N#eTp zj!g7@<}Up9q0z$|Dw1jq@P^v|3@+4iqVGDRUO;Ysfd5OCPmkM+_9)C;5Icm0D#VIS z7KryQ+eIrtEWqLk9HgFr(tLQNrIa0dgR0+Hr4FKvB0pqd%#M2M4dbeCmHJ!O>5CHR zIQBvZBH{N(T2(JP(f2c>ew%S$#aIqwMpR3bt1}AOafnr*$BFhLAuRo^K~-S8g|3S| zJFY25N5oD)`ZjM`uR`Kc1+GRFxV*Ru7-f%|P%zSv!k+T&kY^a3;04adXTwKuNYmT@ zy_+sdxBvVzSG{`V?SI&E-E*hp`tKb7i;sVJ%}JlBx7#E2cmCDpf2zAJ@rxb5xbn`n z{off@J8R3#${+u*=Zn){*zpgeuHNfKEbMpXzAzULU-{NC+&|%}(nIebvykhRI_EE= zpsn~U^3?K|aWQ<5mmr!*nJ4h|l754oYKRw7lk$ z@@mB0i)C8HQb#7>!MVwatkJAcal!o3XI25HUPLjfOz`5#dMO3SYP8=CWvLcSZZJya@A2qhsE}Lo3l{{e}-xYhGiPcB7qgHZEn*3EuRNTzwkH=OHlr$bpEZ- zgv>v7!Qx-a|7+my&pUcKbUJ?{c|FvO2ERLg|K}zr)SQ0;Yn$W8UohSyKmN0kaoMne z@KgBb@28M!SKy)mOd>zrR-1@HTBts<0~Kzkl2WaCxTT5$y3#Ty5fcgBf!MvE9oXL4 zSJu`WJxE>f72oO7Uaf4ZY@oM24*q&e5d^M^spYCiAA`o}L&%>@IN9;-F1i%VC;XaV z?hB&vpW);9T*l}Y2{3l8#o?}!5?C-WW!t%!IE)hG;YqBH0E`q9v3Uw9V61Oa7r#n3 zuv~DAvF=r8dvFt{Z;%kkNgI~M&f=D@65L#dcoL!*$2oN=`z@9{CI;0M;H(G z1wy|_<9_--(>QsXW44<#PCo2cgio8s{d_dceoloe?{RG*J^#g|v_)_!hZ#Ox%3*;I zmvWGJ3Lhy4x%8;1Wl8hG#SOe(vVP7DL+)cYMni>tM#tDkWe|pKwK7PSL6zx^<5&2H zYV|{oV;UFEy}tgMhGoruZ$tVD9216YQ4dad&`2+kGGOPHx7kY#?}mz{F4N!V!LvyI zaS8d!{?dPDg*1%sRh|1HChc5EQ`(XhKtI_|Ov65pSjq(Xt|PTU<7|tpqhMYHH$ZPk z^@DM-t-#ToWpl>YG%j6qBL;aGD1X9-HB3XO{E^9)v5jOIu^M`UF|k??8idUZz~sAW z`fb&8QkNLU9Rb(|jj4eo?4;WqfbGy2>*!EsxvJ~OuLE%>n3-cGJza`ez|Ap{r0wrC zF7NVe)i}oiG=g6PJNd{oNbvvAxU@0BNk{rK@uZRb6CHeC_TW6uHb?q%G%oqb#eC+a z-}C?=y_|;>`nP}w(X;O&{Upsu^8f20{KslKb`9)aWlSWx+Sm`7W2K3jp13Lh`-Xut zUcx7?aq{QC7~vzhvy&WB6+Z1mw$J{>+>%He4r zF8Q68-!#l^YG}S@Y5o>~WdcB-+OlPHu5D0bE2YDKh;xVqU)ML>ICwOc=Z8Re7kP;5 z5Kc>$E}82^qbSyh*IbXG-cK(>o_wfF8*%S>5$f-Jp259prm|FvakEv;Xwn+agxWr$c--HA0HA0}Df2p6x z8jGC`&%(=OkqiPs;D;A`{)@(9G6w23nZhpV7kB~u2jyRd&gcW0kogz12mdeNpZV%H zV>GxO#vU(he!#_n-) zPNE{+&H_?*t`|60s6nR=h}(U*2^ZVV5Rmh22 z_tipR7a_3Nn)kp^-Cw!FNS))pZKEKuO{$Cq^QcmQcE}owT`BL{?vqVkZQ-t(u?Lz? zXKg80yC5ZV-(u}ZtLovPdSt-kV#dD?y9seCsH4l*Mh#&Mz1o4SbKJvTiK!jaLe^gi zKcTc!lCLqe*ew-EvlGQ>h!3!7#Tnag)D16k!hQD}*a)J+G0U%F*~v=A+r?5ue&e*s z0X2pBWKU5>qx@+6a#sgfrE<}_y^8k?OfBD3I%wa(+-T7LgEYuIUC)a&ziK|gZw{4m zVL-{S)@rw(vMm;eRa?Gk&|ZgT82caLsjDsOP=Wl|4#lTJaKQ?fF%7vbCBpUJ=fq%ih zy(u1U@@X~b&Aki%VBqE)af5-IdpmX;IK!53hwCOmjN?YZWh_LT^E$zKmn02wGoF8A z;AVMs7`RzpzcFyLyxuf$ll~-KZy2sge}RFU<&rjVGvDSLIP0mTD-JsigV#||?~UrW zfJ?i%&4)|-_^l6@`d&OOYnZd_#$uFnvwGzO4I^_K^At;$G;n=kPD}HGdXb{ZwRl6! zRRg^(T(U5)ItTNrhB=F=yPNX4`V~u?WJLqvbDmnP_gYWd0$I;rxMWW8J`k{4y!3|r z>Fq$DEsYT4H{=5!N{dQi?m4fadCuGg4f8_svB+V>L50U*yv#1((T!ME1qM`fdfgx=BU^Cn6q7(W)@zErA!d^3N}8N zwYrh8PoNFA!wL?(cwxzE>4mhdG3RQ*oB5q%O6qg=%?jg5d0O*F~xtM z$rN^pzrg3ib5Q!%>HMFq3F(h{EdC|^zl49YAJOEI8g`B_y>O@DgIVJDe{OPO^1Ks~ z_fIu!qm2<4EmCd+r+S~qPj5mz(gmWet@$S#s0gvXv=mVQ=8;5dBrsCO*Lu3 z`2ZXpSFEkv4=}@Q!F=Hggy_xl)^xO-#p9Xk_#-Ai8TXJG4MgSAiYdu`g@_*#;k`&u^+gAB4{XJ^6@#mEZ7OA41P0 z1@XBjB;4ykPySq=ppi0o8+PLFDYSrZ)%Xz~{?{5;ofhoE=S&@c?wO$xJOMlTOBqPH zWHtS0O)q8h4Bms%^%=$0>yOzd%b4wK12@N;93B zH)+i=b6nG-*pTXiaeTOx^Ew|c0hD8 zz&)Cf{+P$&U($aDGKKl#H*sC4n{@bmgp8rjn{)zW=<_E|(&Wd#PSYbFC&VG8BI@m# zDU25fUlH;k6UQU>q|IL_qE}|RC&vkIn;ehY*{Rr$JUL-?Paa1s+2LJF!T~wN;?x-6 zt>z5!!*j5v9~qCs7Y5>!;Hxkw##p>2RxvzQaXHTEzmblOonC>Tldat4aVtADLHz*t zS0iLkxq8PGO1}fcG@?-m0^{zQmNG9FCrq?LkJqMp_dnKmti~)_J zRTG`D$bhkzGP5p?^QY$4)d`B-(rZt?KOgW1R(4#%a(8=+R2e;U(eC+(q;EYL3odI* zt=#odE>>`D3JOOsuS&Nwz2eV{BUOhkVYJSUaeCxC31fmNIj2= zz|KugS#B{tE!TWeR1&Dx#N@?^e%PJ>lUtqA7t%E&hIu>R$F=N#kgXc^Lh=2;OMOYp zs6jB6p^%g}y}04DbA<(DxZT!`1;$B*GRA5f%edtXwc5rC;h&!=4uh%WzyuXV zm7Q5pa9eZfw&;MK%YHm6cFS1gD0MiX8K91^CRMZA)mXXA{z8=^l(H`DjJ2IfdQ^)( z1c%9~lUs>dDD zh$=F#5nYyRo*2EK1AU}J1&x~V8MTc3AW;RWa_hg5`nJ#=F|JsigD#pemirrN8+y?Y zm8;H9PEDxlCoEI9E=t5wA8eIsDY#cHb@vOO)vT7Kj$4EJ2VE95yyd$zwRS8j*N87w zGmaPCrYcvPmKWZHjhnD(Tu(+66Md`GjwX z9IfN)UvFfARcbex$1&Sv%rc#B{=0o@Ad^@kGKmOzuGVz77U*~{ zG-MYg-xI=gd7WC9+@xtQU^iMUyO>(Oe()OTsFGmm#d-`Z)cg%4PqRLZU+-Xk-wWZ_ z3x3SAI?YeUmc%FrpfNG-Kk#F>1z_y|Xt>ryLw=M8&~R)-Lu`8h_S*pLfDcm)0)D=R zPr-@EOy+^!+$+jBi3vJa!!aaf2x6p;QGRXu7583{l3wUk{e$Cm2senHy1q$2Q!`L? z5cVYgiT_yRs?NdA_0J$ai@_%d|0d!|KC*tO>Ld7kFC_l=!7YeScSyKlckfX5b`YPR zhs1M3NVpta1@XBrB>tD^{Jb3QH0$wBb6*G_%ITRu`}Lea>i!~)zwg6O(fEfxoM+m} zC#o3;AL^ARK3oIRKAzR(a+=0M6L~pGtbO z-1ivtX1RZC;AXj>N(L}|nDPI-ft&fvyX?`I9%%%8CaKE}w0iw)eQpKsu1KHOyBW<9yXz|DHH-oVXz z@`iz%^`zgx&3Y0?oM~8&x=O0|iR!n2%Xf9Q50~%fS|2Xo&wG5hd=H1|{zSr+@5T%t zF5ia*K3u*JH~Db+KHToZ<@<1#50~#lyAPM|!(%>Nz7M@Ve2nh+-}B+}eaK5Ym7rJe zzF0AL0k$z1=cDSI=UfXt7m(#1C;f@g9+x0q-)6IL364xCH6lap`WUpKWaxwii|<48 zVL`(jXgLWuMiJ^`8T66_9iRyHFlR7#PYNvsQopdFdA@H~%-qF|`E4qCkBsEjvU;^; zW{@yHG+-^MKR#k+aeZUUqD9A9ArxuRBEa#5#meVxrcZV4&{1Z)gTZre%i;7`M`?SWMp5KKVg!7;oA-WLHTz;Cse+#%s)m+{7e4L zfMz|`oS#UK2tbIgp4zVqJ7 zsezDpue=gF?k3@~g^keQuwXofJ)dxa93so{Ai@ysIAOgy{qk zx=7gfS_tZodC*iS13ryKsVOvc{nexfxj)be)2EQnx*OCv?mcE|aHOwO_r0omO-#yJ zn54AjECKY>=S1PGDVc*E3@IoHr3tp9Nu6~#HAkGqhd9ohTULyqh zxmZ7s^^I%*o$xYQd@2YGpuN|_iocQCf2+w9cD7B^`~ojQ`PZxSZ-pif`$j$wcTH-t zjmTWIOvi%{h9lw2Hx}Q>3Hqa_zLYgZ-%AfUUuy(OCPg*K@$Xw$VMH*cVwplbu=kgd z(cj4b0-wO&`x~f|9`Mr)>_om{6G0#Jt>X70=vx&BPQzj_ilXSAzkDBXPIJQwL#t-FlQ>R~fHfGIpuh-v!h6VNWo8~OWSq$k=>+>E1x>l8p-}~oQ za0u!%dvsg*TVDto&ZB(ie?GsoOG-cG+o)evyAwN~9P84*zt3{$2y?7H>q^l0<3xXZ z_!D6KwAXJPkcu1ciF#F7)K5K&xNYcf0a{MFyrO){bVE+$yZv$9Wb)^m8 zgb2YRHz?KEQoY#Q7Ocfw5-_RS-bjFR^#Z91+}=0~w(6&h4dV}SYUsNcNK z3^T*b(2g_XyyI)pacn}AAGI3LDpsphtp-s+Z3VR@@AK@l*1bDB=K|68`<&UyxqI(t zueJ8?*=PT6yBxx5REh9wokuJ4$>m3#b=Hv1CrV5na=U(=Hr(KU5)XfQcB5HgmF`G* z9p5U%4IC#{`a3JzUm7uM;*;K{mb%t!7hoTdm)MosRNGwFP?NK}-Pcyv(p0ysv1L}`?Nr6PtvB%0|Mpi8CZ0>>;c}Ahavv4b0drx7i;)S-(wEu$F z{Ze^l|09*{9}K@{Ub^#hjOzsp$Neas_gw$W(R;5L?sdOh;*IQU zU@Q)d`7jm*#yl7cjd7|s@|}TU^b);C4(33X-1OTdB~pnU4$I2@{fJ9$&X1aajyFe} zLD_&X8=1qBlf0;4Gjg(<_x|vnx~Q(eV_qCaee%1FIlq}_AX>VXqk)xyvu+`sNyP_ImwV0lRZ29b4<_MZec^%&jsJQCK6RK)n4E_IsLVT$wo zWh(tvC_YYbe#@y8=ebT)+P_kKwBTB|Dn3H+nBmIG5o;v0ALjO(+;!T6ztKD(JLEeZ zFv<{N?&d=#FdyA88?0g9@(_e(-)Iy3&{Rer@U2Ii(cpvWfie>p8s z40l-iotc=L7)o2DbV{ilJAL&1r)phDf-ofU@Yjqn_QKe+DQSLV)~`WuR^rdF9x&vr zL^Jw$6hC!~{##s2pQ#i77-N%K53v57hlk3>>H}y1wn8v1Tjaep1luT>HZ4i_KnTWc zrLyT>37`Sk!4ORMSJ}KVdFgDdECll$jNh8e9Zb9o)wbhB8p^jg3fcBptfn91AJ)I+ zIVoZN+t&owZ>i?j{}EiKi!yn}{vG9L9ia5*3VsT7Dh4N4B!mTZ#(fxf@}It z1J1m4)rmr1Dh^7|wU}Y_D}=t>q35|3Vf0+9$?z~9R4V_ka>(a78l*ojAkWa>l|%j| zLO;`?Z^=R506NM~JM=fe9v1#$k^c>c{>wS!KQHlR9Zse3{audu0yg2%bGDWKGr+^b zGm%1};QfHMALk0F_&s2m(>5X7qEy63<59eVAQW->qxjbdLJ?;fReTyjDB^qv754~2 z5kC=+;+#XEBF-|c_=N~e5@|DJMieb4$FT;HePJNS8GFJi%h z((vp15qEHX56T@}%X`|vwOr44a4o-?iT$NlHUx_(^pqBDa??S+;!PN7TkgKU}K|M}_cTYB@Q^?X91J~6p8n}jrXy~L69U!`?c4_l~ zgld6^PzOnDjRyIK#Zf%8#&&SCHiSf0l!SAM zqtnf^X@ectHG>Yfv14^On!_@NIfis5?eIv9|0GAXMxMb79M)|~N<-jS$5CF(;N{0} z4IW}z52`~_4D%Hbo%O7(E`^0y(gtB(FCQwM%i&xQ>lz7GrXBMkK>9x!kFC~=Md{T| z!>@WB9B3|40?{{${?`t!e5&6IgPLv98DSs@TzFOx{y}{~ZI?DV3~qcp@Q0<}M#+#n zgrDg*0*~_R_vS_Lfn8$Jq8TwDC0V4pk5YNA=pGvM^6>UIyp*{*8XIS=&5$^% z)m-2m+}C|y5**n5X3p|_X_mjg@;;`Ok!Wpl!=}f!QP`>LaeEuD^)>`%WF0$)vE>-I zP!IG3e&amSLx%2t+Y{_v4fnxoI~G1v2OF6U-zR&9k?lOHPhuaIYw)SqcHL-9L3@=( zhWi1*IL5;LZyxSPBCWQsw4KfNRge|fBSl*K{?n?_O_}RYFC2LNY31l9GgqnYsrgx6 zoF_!a;MUYMFH$WwLUCwl6RC2lZ{S@XN?-M9NMc_`mDcebmnE)t)ei{0wtW@<55cwV ztN1#>wJuUTF1WUR3t^|4jG)lpF9ue#KZeF{NqEi@T>ber?4(Z#Zt@D|<#?D^uKKaa zxkwx|57`$EqrXY$=Lx;ZUzn3Q=*J@bVRFvQK@Zr3f3wJ+FZ#Y5^cRRb>uKhJ_GRW; zxZOuvY2gf)(*Ko(^F2`fK?`RZEB>m5+j2M)MaA&&ol$x{*Mqn%Ck8teOB^3nWnxfV z%ZcaUTJHY8?sI9m>vF=Q)GmOWUu*^nA2OaF`xY*5e#~A(g@Y%HTecx&|(}R_ELC7_bb# zWk5u(s%dSkX~LonXAwt8(>&A94C#zyqcpHvVuvEUPm;M#%np{@@dzaf>ttj)WGyCQ zOhBy0&34p6Iw4x@KB_(+1=#667*Qo`h(fuIUMcp0BYtP&A*S!UIwZw#n!~{Q#8!O& zh$U?h=4z?fy9DR=h3}evXNm=9y-6=h#ID)`@%Ko5gR4R31Thdn&q9<-%e~q7cateo zInHw!H2f-hH{8SGUnB_{6Mpg$Qhtp;_jrZ{Ro7V_6n<*VXO|y+gR>HY*470;&?+?zO8Q_#<#A!bh+D4f}KufGP{(z%fIGk)Qs=!&F!SONw ziTNdM ztp^uJ>$?|68;@gn7Du0>`B}?-7tOt-1>qwgc+|V9>rHRsHt)XYj2F00HjhkZH8}KN zE{=Y<3(pR(^Uipe3EHRLjoxrsA$~3@PW3;G&YI@1*D);JaZzEq<1(Coayd>&>bMFA zpqPVxE{l0UaC!?4NV%YMRDY^-)SR@xD8BrH&atn|>Wt6jsVSbHsMNf>9!|-@**JZv1Fx8~SszZ*4OciknfC9A z7bDCmUMSM*9e5R&V5IZ9(qp!#^Y*95Jd5P>@H@=#hClxZ?~Z&)?6JV~R|mpHA_Ll>Nr{TjLxUrmTaYo#p=`jrh(-02vfW+9s0jHm>h8 zb(fgX&W$fm9e4@BN0OO<8ISi1d9Tr#Mij!=j9#n`P=*w72g6*RJ;X~?5cxvmqd9|U zRlE>^!X+%mhg;*jgntwCw7-o>@=PQ~u7B-%Z;Ra#Z7<60iHsQU<&!9o_KkaVc{g4_}vA<9pJ> zHkkZMpKy=KEZSEvsIW69XzvpHZs@7J$5Lb7!cj?H_ny*O(G9O2H*5Su>0uAVnaCcP znCP@KOK4{n(QeWY_Ko6hQW^IBu+Pdn;Ej3Q3xpz!hahyTH|)+h6U{r}fgllKXVQ8n zT!->J>~f?$OywjqNd_{Lgn93JW1jH*_r2(b7ms5o(|Oy{V|J!dm`^}Tu{amg6r(9g zQxVJUm`C{T_XL$ebi?N3yv~B1c+N}b?edVGMiAbpN4)OWA@YOt_^$N$Zm$zDFc~-8 z^Jk-|UR)GZG0&OLK5Bs($fyU*YsOGU63^l7Tlo;HPV4NU;7B*mJ<<(BKd+jPh#t>X zx#EilD}Ok{d_yW%&p4F_xZwkl>M&=;6;*c3DE6lnS4Mw2W87kY+BlG&vU=JnP+nBW)hkfZi0Ys0k)Q0EE_dvw98nx6(OgO0 z9xs_Wx;HN~U~<*K0TYmx;F(7rsHObLtgquSM!|T=HwTQDRGV{{Zy_zzB`hFeXBqVt z*atBWJNuZhvy5=Z2iSK}5Y(UZ2mWJlrfT$jbB5B&>={b)=^Cn%D7ix!qj?d zxQ7KV8VE-?PiK$mm^23Vzd`TPlJy{-Fr0nzFnkGc%2&B2AAs>q3!~qZ1K*khzX9Q- z{MX@5W%3OADm-EGS=WW(cjlny7(y6*JO_TMgr`#4)F$6S`*}Q6Xh)g0wT^ux2|^KP zH%M`N?55Dde*!ZV={bI-^h`G@;w-j`KTHscIG0c<{whHz;*6u>#~}Pv#O<*m?OPGI z&o4R4qGvj(9F`v{RH6gc4ZLgNl%@2!&Y{tBA6z+KlJunvd(5cL!f90b|7PKKIy`RS zb~?nsOGSVAsB*`WR*J(q(Uo4y`l3o^0sAuH;32cMM z6Ih%{BE?$CB1tjrbR78p*owTwk~Ro)7b_d6yT$*JFte<)ZlWpv@+SV=NUz+3!EOV(4QmO$@xKq|rm} z%AAK-Oy_kYKj$&QDgU2@)dmhYqBnj3AJHdU z`4D}u8t8h8E<|k4n%n-12c2RRM+Z3C?(#bCimyQW;Q-(&ollKHsJXo`I6qZ}g>Y_g zzy_zZ|Ekw9*7Rc#><8k>K!Oe&>BtRFrrk(kI3Ss0M`jv0I3||<#+2*TJ`mYndKJH_ ze2{JSs_69n;y=bE0{{Jot498A&py3RaeAU_57~pEp1BusNU8n(WHWlZxS14pz4UaY zI~OE9{~3mw_r`RC#rTNS`NFIl`&)4bX@BB9y{FTp{j3|`YyDzstEnLNevY#sY;ZtLeS2y5zBjy7B6 zSclc)p(+eCa|ihfF|VR-`%yW%q<#1;$E+z>JM5B8Fj zNXtU$0@yAeupwEYYXSaaQ?wuN<((A0J3V3{Df zJ0?P1I$3h{qiejAG_0?1x3pEer2MH5j@8r^#GEccBqdQ#iEe5XlLg2z@<S36)Yji6{F@vB z8h(Yp3Fff)FOl^3gphnpW98TQ{}cGbg1SyJ^~m$7XC-7K-O;VJ{0Q@@+V5jjlKjCh z_uYN-qH6zlXwvr)!oB04k-IVOKMi)ysPSgPZ<|(XV6^WjT=_=OJHSmOm??TxE+hE` zr^t%Ye$6)eF{u-D6YhzxKw_b*P~|^vyyOgJ5|E6&OLH1S{qwV6FyRTN;O0W%yVJ}; z7&K_?PJ=B83*i>*nJ`W3g>F0-v|046=>-r;VdEp zH*?@$%Hi*l9Q4=Zz>j6T@Kt&NI+e+P=qm-^E4ayj;Qx*%Ec~-`;5u}~@21^X(f0xM zlKG};Tlq_{Q<2{8t6XQ$0B3VU>2mEH~~#}O5`!`W`(b{}b-h1-23?weIPHvUTs zXZ~yYzii=!7GA`Rg<`zyKGNwHZqr|3;Vc^}KL#@uorT2M=bGOvuJ7dr2iJ1_fP-tf z{%C!wkj_q6U(1@f$#$y_d+EE~#|b|G`sh1FR&U5mxj0+ij;5!RSxBnH%i8K|7X=GP zLwY=!1CqnKjaHv@Qq`PUldCVBJ|i_RtcR(Xl^BwHA6+{aa{0`df&m|E^jQmZ%_dY4-=%puSgz-(k@BtABf82unY6o+8}l3n9~w^`-J_`b~#? zH|@x>LNdzkd$E3Y`Oi$8ReDyiboHqEUS&8~IUqm!eQxXY;|u?jc=*fn*EYpq>kdQqZO0v}_x~GtP{(|qc_7$Ys zFm16CiJOg838v+kyz@fn>O-&+qNY3 zii7bzJt$b5I{F%yk1oUts-O-WEA@l+k-lTOm5AHv!nZ)&=#QQ+z_t<D30^%{jHUHZXU*caDT>W_;K_ssGpR^p5LlAK-gIX49DIa~P zOGJ*+{~P51U*zDtKbmsBE4V2aF#kWmnUAh|TIl~m9JEbXEaA~Mz9}c5`Lxh$8(+)A z;vDkJh5kd4uk;sDKEi(tbShJZps#{GES%p)dd5iTsF!lkSLLAp*BtaL4^#-Q`DSWc zTIZQu{Cq<_nEuin_?0>ERXK3Gk2VH08Xld0a>LUjatff^^uNj>|IHlq2P~Z90P3&Z zce8Q!@u^roSRW}p*AP;<;rz7V3@6WeSNfPGhwqr;c30%e#C_C4u@XrkGmXP>yIu6uM+!H z4zBe_pMx(F`|ln6yJBZOK&9!R^#td$ZCvY#Y6pKiAj{k%s&ceGSnkkkeW3lB(938B zZO+ublXH*GAiAJCXHKoo!D8-K3O&`@k!=VE9ZBO59m(AY!TjDr=XNMZ%#kTFS3>28 z*7C;Y?7W;Ky$MI_)GVlLX{}khtf}7ItX12J@!?!qfKKUAQZ8z&Ur<-uR@2hbQdc@e zp4zLIW6SJO1xT~v%DS9kMn=%poh@}&Ugk(WdXTwZYiUbc%b=x}hheNiY2s~Nyguo0 zWQQjaSLbyI9Z#sMubs50wzXD6+}zf{)uA;Q8VGVC%z??BBY5%#e>`m>zQ_0z(FztW#s-f><5v~#j+5zR_N?0v=N#Ao|z5a$Q! zAJ9Jfipk`p+3bpgdj|TQ@(*PF_WYNl6Nka;=)`HpXXvr5)5KqYS{c0cr@`|=e;WMO zowjCfmwu=H_xoOkcgAm>Umf5#c4OYSv-R?ea9R(d{XrVr6ubAuB;hGGq8QWfy#T5@M!Z`UZM>x5-Du;Sv0lf__~JD7>vlArQPpunNma+3 zvW}W^Y>pkvU9U?zZa4>8(c-G;S5KT9Pv?oj%ZK6mx$!DawJ*p1-53o`*r!@eiqn3c zKRtR$mk=k1EskEFj-Rs_GScz#yg)C@5A>2@n7B6kEBz;`pwIQ%_aP5%iLXXrJ^z9D z3g|80tcp$ywy+w*-N1}ty&BfR;N7^r^@K#%562B(eP;oI{w}Yg`4Ihj z%I?istT2O(n4b4WRbn@;NXYB1O#HmE`{7ZF6e3JVcPwWapAXp(VhNS=w^mY+k!SQZYVi)7KwK8#t zK~SVn5d`7s#Jh-E-m{g7M}kB$K%oL7+L2rN(Hs8>OQ;uDMjKwi&sR@-nFZ^#SM!bK zrD1e<)0q46jP@1_+-dtz7#rTEsTI3h1HB;NIWUYFJQoRybm?Zo&a2AXhK;XdhaqdZ z|9e8|XuLJo^VPXxZ0U@$(kseK8_t34;<$$#j`_#Jr$(?M=Z&9R;oG4tFdlkoadhAB zVc7%yS9p4{RrPxibi<`%@pEC^Kd;QcwA}yBIhE~O^D5hSV3b$(@V56SuP*l5Hz&RJ zE!dbGyb#!LyXQ%CB^j#Xma$mWU4()^Du4B;;T}u<*0y)dj^rwTc}bP;m1U~|tQYCU ztI>8m7TvRguoh#OIvG$#)h%zTZCDg5o%|K<;)z`~RC`8HF2jG*vDy;EXPm_8I_fh= z7h$QlIlF7V>_uH{?M3Z*{0Y+@svaUw4D_pn$BfIQMi+6nYkvO4X0b>Q+(@%gXckh> z&|H|INdtaNXwGBfX7E}MtSQO27kdmFUl6w11B>Is8aE=F1!yQ^r)QhC6azF+{VlBd zRx8S+F)*e%@y&)0TX2On7-K0IG#=L}^vbXLMDaHUcUwIT3*{daP{+bzLeG4+)qlc5 zdNypRO!`CT=edZ0qe@{9!|QY4=K&v+Z`xl*Qq25DA}5K?tQdwz$CS8EgNn&A3XkHH zPeq(fKgEAU5Q=ixUs3!Kf>5p;tsq=ET)R(2IfZys4#!TZT>55SD4UAn=(j3{fl6`BcTIc6HJ^(E@(jJ^XH0O)w&l-taFxH>!BzfU4zBWh9bC(G z=(+`2>aCX%*VN&5@oSq}<*Z<52||wkd&r2$ptaua(1Y~k&DaG;2p}UO7>(}2gJ8_Y zrq(fqER!OcxIob1M+gS)-ZWb^OKVE9TQv=mP^1KgKZfEMGv6;)ZIj89Dk;b6?pRH+ zC6;R}pullp`L-2#i6w0i<~~{1z~ecn7#x;QE%#cU`CgLbcs#bM7JrjA2(!K)s&l;) z`Q0>FC;TyoU;S5j1en9Zzn?EX)O_k=%sPzzySaI{_-{Iog^~HkELDEZzkXnLy(8oi9gA2Y0j9>Z za`~~Yp`v^UV+oT>bP4*=k0s2{ex9V925ZV?T?3=iqw5+5+#BsI0a)HrTi;SU8Cm_w zZWQW#iM#)h@60$nRQg&I)3R%0RfZ~?U!ixY|``870ngN~LA>IhcuSx+?xJf@_*;8YCcy>ENoX z08q|&aZq~J0b%ra2>lm@UeoT;9Q3)`T%QwuzUNFEZOfcy;e5XpKf}W9Hcm`%rf4=* z|8)0PYr3v-{MGbh`cP?jG@YEW_ruLxWwx;mY>niYYqI8!CZ&0ywBr+Jh6W1KDuc}l z$4RD92G9?2QYCwJfz!kpAT+eu(#Tm2y%T!?d5wlSNZgO{%Wu2;U8cBV7DOly?zVEQ zkuSiJn7*G%n-oKd0-}r93>t%pSQ3w|iX>3;1>`%yGNkV{KL}K(!E^er>o^REpC&PA zJ)^jWU-d7;fo3n$83|o>v z_|3KEQ5W_NT-=Doivv~?V&oBv8;`hf@JP!9KiN%;%(w7Q)yB|oFu#l1#^ASzir5Mo zpmc2)F}IDua;RnWbP{7sX~|*M)sdtFg>fitj}t&|w>`8BQ&!m8x^sZD4WLTvHqOZs zSG($bH;8L`sQf43KwR4->fRuDOgzvuyH4bMMQ}|w)^U`R6kOXFbAU5VU3D7(t~EPf z989{xyai7f{ZAn$CbYJ;KL@?thGCtcZIaImGgHpSOLO2e1Sc)iM&;=E6T@wf(|l9t zUHQ5OjdJY$D0Mfx8o*py2fT5FEH&_+3qauLnp+I2N5Yv6hoK|@=8hg;4PvT8*{N!EWX?M~DK zVQs-B(h2$v+->DpBP^f9^gU48q!?Ni5S{OzapMf*%W=@0`}N+Lrlu zcuxP_IBXI=r59_4U+vtl8Rq{w38?x*{|Tu)#aYkM{}Md5>JrP5+LB+F@Y}pJUqPWE z%7u9*4*mzVCFcuamm@>NuQ11x!{WbD;;;OSKY5j3B} za>`KFtW2IV^mEE~TVr-f6Tl?;+j-V~PMFDmGT6lvJn zmh%6Q{4YTmhHuS*a}I$1s(&Wk zLHmUq@^63}>A82EO4IgSn2GDUeEn8^TW~#JN^!E2e!R%hbpEm6!5naKb`_wUXBa2w z2*s+DkG4f;5QHMeI#F?L>k?;J6kiTA6>(N&it9cJ;(Qd}0W%dbjsYmX8)hovw*27| zPvW-xF&54=P&sE>xZU=Sfrg4DC0kl>Z?-|RxaQ|Z2iJUiz`-@&dL3Nz?G*>td^_mi znr}|qSjW{qO5-@go1=A{anIR2&QP#@eAubj45hSDk2wA6uKYf1qctO4TCF)7@m%9A z^Rdbk(xx5Au7sNM3mcoUR$H5~18EhN%=;MHT$EF{T}W}|@}mEvlw zP6b0~{}5n<+Lpz_uXD&MLc_0izJFoyH-}`xP2Yd=F^!d9<9|8g85Y!-WaKn*=F|<;mGF1-2ki@EU=Dm;2K6axd&Rm_Yq$f;TuJOoDn?S&5V@ zz;bF6%ruiOupKs-UVB%O*M2bB_TWcJ&;JgMUbX?L{utxFTHmn<&offxj#8M3=~&v| zh#RpLV&=Ms!>Lv{4rLsdve_0>rD6M;;A&U>OM>h8o8p~<>w1>&h(O&_t!)yG6YEy` zt8EO8S4{XAqHL%>{#>hutI3hC;acV38m`DBv(wL=FO|b36H{f4mwaLco>~?PmrmB( zQl3<@ql4~B$P7J~UHL}voSo6m6eSU&e)U&T@SjJ;e-7X%%istafS zPx;1bQRDYm>x3evC&r6rVUBYgj2`V!W{wOv&Q!$jA~OR@z9q&rIOD+PTOs&ose|KU zbDl|XL_GakPaMjOBfvd-UgWp+j7S_T-=Jm_zNZ2fb2d50!<1)Dex0E^kABD*lQ5g_ zzqb41ra=blvMzn2*LklI2qCA%7@si61~v*qrc{ki)h3 z8cv9Ll2_ z6KLjK5z4tj?52Fc{O5Rx>$(;lU)m=4<3exp0_Gn`cnY9Xnf!&$Iy@{qzs-Sv5jg#w zAab-!U6=WGp$ul!l73@ zsQL%Xzc>f|l{xU6a^Uyoz<-kiKUva?@#S||!)f1_&iqk4F7*7avy3R7u;ke3se20C z^o)U*iZ~xte2=LV*YcYV;0&($%koU6^jdyb1#kw}^1H#owft&ZLgi@r3dkwioQPa}8wAmpWbRNY3`fFPPt2^0k z6SXxgUEJ8bY=GRreTa(|Gdn6mPJ*yKTv*>Y_-qK9VBmokH4U}6waa#2(6+b+2T0a6 zFT>fGNRx%wHiFYZ2GH=-%$lW(arsx>B3wv*Sa#brq*J1YPX=Y=BSYBw@2^Yd0yukr*+=HpWOSp_Z9j*$-)oYO76~^b>o}SRU9muzN$ZZ<83hLU1RJQ zElBlmfw$?iTjNE||7-6>+-qIpRbbzEOYQh)#%~*W5NxfVJ=WX}jZN{~0zP4N!LeR{ zx48siZ(-N&0&}!M<$KShI%nj0n7uEG{@{G1KSbZ1xA#k4$GA8m#1u$l(|FPNy0ZH<(1J4$-%WG6UG8xtH8V&UC;B8%S`gClVnTI0-hG85lvo_Y20 zv+}TB<-mh%Uz@DmixTv1s`H$2Ugt%5Ud1oG=*(Yu6Mva_&$y;}SwygG#$K!9b(;3M z3{!ZW$3a@;!B0@+ztFUwC%<=mV zJUza*^Y+aFb?4gOgL?dq@o!g+@5VU~TNg*0x~ef-V7{#*0bRX)ar6V|&Ao+-qc0j5 zhm&ls8uzNR& z&HmXG^6PNrI%>{XqU*ixg6OT7d}_dB(xQ3)snH20xfe&v#~MR)BJM~D>eV7#)PW?# zaVVzUB9$$Q#4P{7dC>>U&hA|EH%#k2g$H(Q`W`4J?nhO7pttk3`5%x@xPymo?7-0*%{!3?jh_P_Xg|QzPxF(^6u7_mOXOKqyacdh(SZDF z+V;(0^6L8S%+s%q-30+(9sA3Ik=sUY_IDh3)&$SrKjlFLgY#*H4A!=hy;T)`ZSh$* zz7kaWy3mVteN(D`YpP;j^am%Qa^AZDm1jZsuZR0v@*ZbJTI6+BqPjU)h%_x|KGSRO zKE%qt&^w#oFXTZ{w4E=vzyHZT(ig8T7~}PC=I5<&?=k!Y6wT_qCNEX-R`dt|fiEyT zOZ3n35AFS2%Kug3y-aGe>JL6^g?r z`foq^k~k&#DdVesVCQ%oJQKaK1LlrZ@zu~a=A%mIh~&AbR8#&w1gNETTJ*uzDUtR= z=e8Z=^*_4zr2pbq1&P#JV<*sssP9m@rTss&ZBKN;IqmOly$k|0Y%Skr`6#t{J_Vk1 z#qZi)P5EyzF8FBgJqLVy&-yQZ*G&E3PvC(~e^4oKHSySslZn8fFcOhgUS3(4&cpEN zse3;Qzgtg4+>IFAy<>mZkOvsr+}=9O^Ao6kJnQ3T$b%1S@~3%wu10nk2my+8e?1cE zx`C!ZeFa*LTA&+u(5T`bq%+k5y%%mzS?=p$-f7u?hTJmmmGE2&y~5%r>DMefbJteE zK9XEr!P17wyb54y*@OUJh?{d-&xjc<*0S__bu}4VTSLpz zD;w$-#g0gch1U}!3ozHz)YuX`=iC^L^*EsLzr#>(X8(pepUUxDK2$gG2ji?bRAspt z!iCkta}IH+jd-u=Zm#l-oyTiEc?VC`=q7ue;IOr!SMY$9P4U%us4n79{%jt5ZTwhI zJJgx%P=xt0U@hXXcS8NB96g`%-k>0;>jNzq>tooV6idU*{twkPY_f&Bz<5F@A-oNSY8^%`QF)Mx{N;+$B>AteMtaEt`dB? z*mdmjFH9WlH!>htAh^mAw#Y4l#}p9#TY{H3c)Q?92M_k<6=d#tQsBf~bSK%SO(wTPw824<3(J#z_vx!SN zUlOm)djRY-1ca{ ze_6Oa_WTc){Lff&KCtKuEqsimFa5RGq%OB`j+`o3zhx^3m;|S z*IW2#3;zoXx7V=VW8wDLdAEhL9I3y@%h(U2ZI_2qMjpz=ugrn3wQ##UJe>nShKVTh zZF;@8hW^_59wRXn(~Xa+q!<*}_m%G*mE!vTZ3y5DuJ7M|2iJO6$Ko?`Bwvf=y--}= zKV1ULCdrbz<)K6Ga-5ND^~YM&g-e=ELxV@n)wDL&uxT;?Xlup+A&ct*hnkwY=H`Y* z^$EUAhHq*O+ChU69-4&4(<0M^8FbK52g{qJ}aUYHDyB(%iY5$GNK@2M_D4Ax>3NhBHXmHIQ5HaP5XM%H z)x2ZG@c*@i(Wrc?|D%Q3q!U@mhA8Dz zr|mER(;;((BPGH=-(isID?|4XOkwG-3A#}z86EN}zmB250!*?chy zk6eC?p--JMgfaB8#AI1EeDvoU%`@W_42_mE8AI6CwVfc0ZKJZXzSR>x z1a}SmF(FgWP8{Uf9wvb4rT0|lrpiVSA;_G^V3r&88n=t|!ePJL2)l86+v%QfhJ#e< zX9oFgIFXKBm-R3dP?Kd0+_z*H%!-+Zso+Frt=4GSdoO^pxr!|7}OU6&9tSLh}raa zK}p%y36`X8;rH3=N5wcwo{N}q2&=x5W`v(KT*`PNe<=sfeHLMI?$1HbK2R9_z8v)bnS-8ZdW6Yg-zW_KVGcY2 zoatuXaD+k2=rrO;=i}fHl_{stnQvk8*8?YgO6ZfYQ$dVTEI;Jcwm;kZRCMR}O4l2m zLJ&%EraP7DipK*u(-u%%;K*5GpucusN6Q6qyH9hzMQ`_M=2$r6t>M>qnsV&E&bKUj zenXZ13JbUU77Hz$V^&J9^#kSGeWPU-z1??d5nR*ZpbTJs-@!Ew;^#X?Wgsa1GBP2N!E37!wNGXLkA&$@}2Sx7Vey{Hy%9L$C66|0Tn3%h&Z+#O?R1 z!jW@^2%0W9=~$!rgi29CLuxJE3s^=RJI7|1MYQ(W)V zxw5XcW?@rX&EmS+*0$!l7IYBVakQ6R1xwow+h5JLskEov0=Yqt8Q1nSEUK@|o)3e2 zjOv<~q8s0`q-H^V?NxP?7u4iDBqnpH%);9G+GgBDjNrC4UtKqO%9KRKk=Ys>>Uecf zZCmRS%v980nwvZ*J&1o4`{HcEUm4_w9q1H8ArIGH)QRdJs=T2 z*dRstV`&_N8Wtj9BP%7SyX=<_c6nWm8-G|Q6Qgdcq*#21f%T59=u9kWgD@XFCIHHX zfx%%=Sf^954yXDm9%61Bdd1&z5?M<575Xa(C8;~6p!`#nP;`xs>iovjT;kC2ep0F< zjVX*5{{!mm?*`$|B7sT$Rb1|E8Z@S`QTXprLebs$e*<)3>96~KmJ1)#pS;Si>Hh=p zhXpk$8DihN#9{<;vZ=!TmGFv2x`>n%jm49RB_teVGXOSXpv% z#@7ATDOhRdPXRTOs|WwVuBdP=dans|xZ^;^PyR?i?y&&&1GHZ|SzbtDS_f!dM63!A z6?2Y?*gRtzh-o{;rdtt0cdKCf9#P)L5V{9Ku-*{tl@RQpgNb#J_BN2Aj6FP$vN8^xmkF+MRrd=7XFHWj@v{YInoz-N)RzTk|B6cKxeu7((Yj3WPYJGhtoVtj z=tv(kQnGT65j^hTw1$mgB!IKetxC(#g#b=NZK`%HM-L%9#HT=~(lWA2@N*peD#52Y zILAUL=X?jJmH0OV*YxJREb(BTJ?rnk2>pCV&UXaoo-is6C(A75G&uM(g10&NL^4A$ zh3q~-nL)F-SR>~-xaL>2gKNAlc5wYXEYE@Kyq<(<>d~p z?`4yN>wCG%!S%ho!@>2vyvxD$z3g&ueJ`JKaD6ZP99-Ya-#fUzm)fJzPAxBr#mSm> zS2@#3KDu78^qy^j4RyFtI0SE6SdVV$p#4}Ol(ls&4NJpBAgogolLz0K6HGkYfoNXD z-BJ;O!a8MkXMR!z4rR4E_mj#U`&o{Cs$-wx*vrB~Z!Sj;cc{a(^?(4BhS8ZrP(#uS z)7_ID{>fqdpesu_go!~wi4>lXp?wHm{pQ(XmW&K+x{gBK8a~QOq zQUR<#h$R&eeV1v~W+!eL9KQQnpJ}~whG1?S9uR*gh&?!qU$Z!kBo-^kdsV`8EAGh8h;sC6b^T zFpA;Wy~}?lF4B?C;ZgM^%S)yV`OKs|3+>=Wnq>j!DVgRXM#!j`WQ~U9oKBeD(Wa4J*898lke01U5cr?-7za2XP zV(Iv3ENpN4h4Bi6@n~K*&7(W33j4DjLU6yi0eK8>(qtg}O(3_ly-n(V4J1zH+V6FD zeGU5ohF>#Qwyt;!3s!o0+i)aD|A?OZSS}J>(R;^^@bVs6jbDU{vT!a(#g?|$dOUXc z-}lCh7&E7kmm`thLw7oFga-sq5j^S5cyiJpPdbK!7MQV4)kMXQxbK6Te_GEa+>_QM5pTI_2$Hhe%uP!O-xrlckFZJ3#NVX+GuO#V?8O7<2 z*|BuT#n@tU1@61OqTHJ}!aEruJo%EM^vN@e(TW z4kCDuB19v+iO(WL2vGa4u`>|&l5TGM^<_QPKl>6QEP2><{YWnu&Dc9aPbX>MU!;778!# zKw_r}Ha1qBB5r~NXTW4*9@v9820~JKzr%}<5T(cO#cql8#1GS*SM8VErlVt~?dN{C z!jxYShgbKr@Ci5j4%mx^jd#1!9()cYdc*eK;|$|g z)8R-w=b3Yf@%~<3Y4&;rxfQ<7>or;b--j~ zu!B%MK^b686XX+ETTu$ILl03h`Gwt}sRJ*h#=n4!!yc&vsfkZqec7yzGt-^%VH#Wg#_!wBI|O|KncwTjfIMQ_Wc>CUPXQ5!!pJ+U*<1rJc)7f(lcxhv>k z|KnBTU#J}U?8kDmkR6Ng5V4(~Ak^Wfdifv&zqiajom3SYt!1xok?w zS>D@P5dY(Ce~4NB#+9lXvUkzlVya8|gvr@2J#X@&*IB^if8 z%IFe$TZZ;uo9GrIqt=n3<03(d1Yy&)(sd%Aew`tnTqPLWpGm>KOU$gj%5UW2E4p1S zZb@;wR@Qbg9hZyS7wI-29WTwKBk9%)U1AVj=By~wp4=vMS5pt-j5DOL|EY3xN!93N z`|w+i=`;te4?8=LJEE{J3a*lnm7|j^2YP;(>qb#bKM=Fp#l zbRhk9!J9;Hmhk907k%ev!JYIvW~lGICvvt*K=j?eL-5Jasm%Kio$IyCdP2dIuv0w^ z{;>FN$$>NJ!{~o3;eT1=oB9Lti*nH4okRX#iky+sM>h2fTq;dx1LQ#ZlA2Tz#4#X01EEeHKd;PiL3 zX{Tn-n&taS`~ksDy#uTd@gn}NgU^?6o<1BzP^K<|ev#n+CAg`FfODT26{E$LsE(oY zTR=seEmy@aB?v`)6duJ}2tpBO9ijL-f>6YnPKv)u5Q_NmcogURLWSU(F*e1Yad6hD zRC#%vr~J?0Q8_PKxV=8@T?^+ppVA*A<(P6# zvGB1LZl`D5!fiQIEj(t)IbU#kZ^!pW!#dZdnn0f=kHMWQ2w12 z9=^*Op1Z8@e8IvWxA5^6{*;BsE!^IVY3KVysTas*r%#FCZhD?;(T}m@r!D+c3!iV{ z6D+*Z!tHds!NU0s)O1*7;ip^pj|A6nD*b<0^me>9S-9=5E)#xW&P>9i;06Rlc@^9&+fl9kkoQwH@?(2iJB`WMOSXZS%D{pSVnhUTV1Dwy~i; z<6uT=YMYyDueGO>bFI8y*j%>^d&?p^&|@vXmW|Eo(IAf-8fzCWti!pZ!3=d{TWd|@ z;+h4GZ4HYutFmR16rvU`YlKnt7~pNDq0K=HPzy}AIi-Jj_hh}X{}v&l?^OysWDdFsXgeXBb6iToz)t; zxY;>7G}3Zy3kKB|N1AG{tgGSKHW~~~c9Xx?U<+W@CD_-!taj1WOL6vTb1i?xQ;DAB zeBBZZ$??Ebab4V8moa0sOJR)7)n+U-hA*Ah91F$*BRWthvRm2~U@N)1rJPrZ2K%`O zYzP0-t-i+h2=C9Z;8h>+TP+=km*o9YN2xBz*d~DV-w9@O#eye`u~@L zxoLQ}_#cD2t@L}X*pm`|?T;$1{0$0-uIaCO6>ysMyQbu)NI?Hu0nwFDb)IXgW}EZ@ zji?R6?9%dk1Wc#KGt^zeU*sf=EA}fn(tpB9fhhgnF#XvMR({R@e+EDP2dQ3mZlP94 zhBMrRTz<^imk#Az*2I*d?}1wFm9hfx&0q8 z=CA3^a<64n>k48lzf?9hFMvYpC2=y^-{E&CW2t==>a>c3~Gv-Il!x0=ZxV zn0$xomo8{VGpR-L`iFR$9ktoi-AV z43g%%;tv3$4EI}c2{0-x&w(u)evJp~P@45URJtp~aHMa=GT~P~)qk%BM^}Fpz5@ne zgT56eP;gtKgraNw73P>{So$R;|K!{XuO__4mkk@yu&b+)@PLepyAP;L!UQV^Yd}?ZC52KKt_s|DHHE5~ckI;$6@^&}}pNUGZM%DIbSJn*YXgoGbfC+7CQPVR@8>5d%*8Vghp%2<*>T}0tcQw$ zb{uF6fz1ceA`&gZQ}1ovT(`Wb*4x_MuqalV+S)bwD+{hg0<_k}t^#orh+9d#9M5&B zmG85JMt{(T7sy<0*n|Uac^GX|?@#cvtDooH!sUir;wz9^Fx(nn7Z{L7fninrZeze5 zkx6osv6qZI#I~sm!ob}X(B2yF4Gee2cL#=5@%_dCZk%h}w2h3t3_us;fRW)d-WCOh zRq>cHfPOyd>4ynx7dSy*qV!3nucl#A^wd@G2c~si$E_x9xp)mJ>E9Zk4+{U5coQ_Q zeKVF>sKcVbfu|!4bl`gh4o*=Ibf^y;I96dh%#BwwmppjJY)ylAH%Yc`=1YN;Ulm^w z7;cgDZM-$UK0xk_2T^I<5I0eYHr^%4*?5m6XX67wDppZY1cDdCbW6NQOt%JU2JB7~ zNxE(bat)@tf~|ZyqD=17P#JCfIerd3hLGcQ?muG`$1-37n9OQ<5$BXEW}DW>7pdkfJL~!Ep7!YWZ>; zeCab3C*XJA8=!cI6kQo1q}ZRO_$`dan};(Lj6E|-V$TwRvK&NCiw&}xWdV_6+M=*9 z7c%MbdkW=w+K*=_D0D|w=u>pqph+fa2PTvKRvDDsKN;MwBOH{ODI6xjSXP7bwUeGQ zSed*x1W05dKw<`k;}IB48E0CUvcbZ`qG4WvOc6Jw&%6Sr^u0q5z?*$X7%3xvGz=84 z$#a7w7#Nsehfow6dszxhab$VW;s}Z!h=i1YfGN43?u_y~KqYNVX$?x4VXzAp%5{+E zC$rqV0VarppIY=xIvg~KZ%WqhLBZmED4XYoB*=6_!YtTAlC2pjCN*{$DJRgM=V5Go zm^9rMO?01<6Hq6Yx*l_+)3jr6{RPZ z&Mv4bol#g-I(w9Vl0T=Q%AZ+S<hzB8Q|B|FXrwUTgB$$&Pf|T3% z{U}|-k6cyhO{{>{e4UrU!T>7}>z!liW0Q}~6PT}E5;JT(7y zy7+62i+{6m@z>IY=_(&$nB>zPJ)|uJq&Ye1+Xwu4mg%~UKW{T#gM#`T6Lvd)-b1>^ zN@vHBA`_4zXZV-I{5fcS&YXZ0Ib$eN=9kW11Sv}(rQW|}zCQ=8&zVagrG5xfZd;GA zm#*1>U!=!Iqpi6Mnt%Ix{;oAH{>{e4UrU!T>7}>rhD+(1SMUoteMVdJ1~mWn-TYl^ zT>P7ji@%mGOxH}K2gzAvzE()!WMGh%7n1aKdbyoRx{E(Mn65!7HA!j`cPG-dq;z%} zQluOya*lsVi9e?dDN>FUIfnv{R!URp>{duw4k_39mo)iv&`_Vb98#_uf|T3tMhr{W z+=E}F$0nn#c>tP!J6-&>#>KzcxcF=75+=R$w*7D^UGrP~Le4>>t@%AP|8~0gYmJM4 zvvKjwH6>|uT6QA|Q!DpGpm{5|1lm?=+SO?P{%>(zgz1_+ju8u(k}YFB{{ye{94y}7 z{_X}Eu;BofKpMU+RdIAn8qr_EFIv+0y_}8z#$ThCGZul#w(g^+CL{Pf;G5alhv&EW zHvSeL$>yg|#s?A&uYE7TbuV0A#`8Nk{B9&&Pl5~DY)#Mo2!^LY!p}RK5Jmt#{LN4E zqmS=g)6Us2pw)T^4b7|+e5ab9=6C&JdENH0Jr^DfNXZEJb!afQA3hj}M-U8+Oh(Fp zV6b!^CK&(oQp0QCQy|%Er^r5Z46~UNq)PPWr~iQFK=hC)T8B*0I%JC0Ar>wDN}1Yp z2d%iwCHP307vFsTpQ|Vxjn}mVuWPJyMv))I+ggIRHRjJOI%)~#JBKF3?6T4s@!&g$ zHpHAVe`fsXWuQJc-^xN%LH-=n=jK~kh$<*d2I?r#p8-F|mChK2Ituh>z|V31%u)IZ z>-YmMhRI9$+fvic(+CH_0GU5!V8rjIY|epjXe^%U+`)N|AFAg9WR8U z{aA1}{Fei_&#+Lg%W~i)g0E0Q(YfxJa$GzzsivWEVPg}P1>kTloWh1<(rS4cTLZRm zOqx0Sn_n?A-@vh)pbnGn0}lyXzHHgln&pknHA@!`n&%Cpg&ZD$-cs9&GrU?_Cr`nd z;scPWI9ogb7Sy#~Q&-oJzaq>TwWi_T^{JJvfaD~HXh(l;E0)_$9L2AD6vui^| zEo{CKW5DGVX7o4s8NA;&K&F7Py*iVdv+-m4+#nm6jdPCtjdL)a4b&auBn+XJPZTO;}qK z_DT=DA9qk~5XK_4KuayIF_>IZ!s%@=}gb1+%`_av+cm1-7Rsn^U3w@I_v|}7>>U1yJ1KQqnpQtf~&R)2IgB*0ns_mOjQzSX6}c6C_n2A zD$WU!ROyIORR`J;&&vBM=)^1G2(-5b*s>Ov_BuFOuXcuTznGSbPCnAP;XiY7A|aKD zsZx$q_e?G?8*<$%@*aS`zXZPt(@vuvk{2b{p-)9hOJo-W2$4uyp;c1%8$Zr zQ`YTny7_Yofo{v9T|_%>+hvfKAj1qAfUYRzUs4QOdMMI&lNOCluX{HLXH=&<7sV%V z2Q<7~BH;W~$L!?+{p_ZcZ?;I|YQI#686OIWZdzdk;mTLQcfc(0I)P(myYL~2>T78q zcV&KHY-YdttHy}7+scQSdfZ2RMP*H}qxqwxX>gPS!aYyIU5)r)XLpcr?KQTMiW|Rv>2~nii3{QY0 zfsd9_2&t<+;om;?xT)Ozu;swU8J9@JoI{n_2Z_CuGe_^wZ$IXiV1MP;^0?_TySXwr zQ@CO`Z2SKhOMQ_Y}*p+{Uh1>F%TDUDAB8{Rq*<8zhTNKxPiv{F{)~08F zi;5T@rH^Q1X<^s_&MoMqTswKdNnJ-nkK?MRByg%VmItB7=My;1zIxM{I;ybM z)MITgj;}tda5>GtqvA1f2|GgU=((G)#`@?2$WsB1jxvaLjbR8HpPBW~)(PB_froFf zvRr&zwFd>!Z5LAJJZWqe*o6_eyfztczbsg;w(0c_Ki?}`eGwL7NgISY#>xO{SD=|b zAw}`sqbd%x$RPxXVRGZpCH`tXBjg!=wZ9MMF#ivV|0P1mI)Zer{|kW8f2D)bs9y2^ zNNc--GfI^!t2ek25-0j)t49Fff6&@4UHiJuCWcwVukgcQ4vYT;$xw}#_Q{oB)BkPo zOH@^4pi?MR4DM9an4~U0+SXG_gO2*qwXG*t40&zWCaZ8J5eAmFkqD7>_4mp**qKS; z1RMWQx^sh>Y#Df3kNP-DdEB_jRT6{I~9Bx*0n|wjLH9S%lM8{0tQuzV|bS05eLmWzvfFqz&M{3Ym%cWD4bCE=a&)gC z>23UGi{6&cwl0-R|1SYN$lo3dx8*-+;kNu&E!?Jm&%$kbJ*UPE&sY?0D&jW%mn__t zf0l*Y^ygc+O@FC{+w^>?sEFD0%PridzsbUF`r9nrrq{iXuKXB1h2nQ(z_%l451DcQ zqi>{r#O5j*x*xA`*wFIbHtf-Jm)2WN=#bW%iTB6-VR;N|9`rI(pk5BN%&%lm#?H?n zG3&Ev+>+)Ob43mV^UqdvCYH28nAb_5bX|QRFy=3HDs3~I3o~VC+k$RXABew4YBO;> z)d`~E=b0{H%BB5J5CI$1W>Wqojt~vM!uP@u7JuC{ukj=w(^&Zxe-2n^P$m7=!JUfX zCgk#?%~YNkLYpb^5!S;`urfV~Ffg|{7m{r=rTq7!KOK$(F=ynbx_1|)M&cyOhGCvx zA3s?6GtP{r$NvGY7Y_%;2pFy|Om)9{9LA)Mf#r%(_*r}$ei}wce|m9I^xoOWV^pii z8@VIx@5BL~!@QB3!59Vo@u}|L9Gf2bPTGIY>)tzjc4yh&llg>M<6oOK@-4_3n;N+V zw4Vko=wBX@+OaP+@6BKMTiE zfw2I_;a>Nf`JQn(2G-HWc>T!A_LoMax?egmJrd`d&OVkWIv#A_Jq#4Z>5-TlhLr~p zcK02V?kvFRpff%Nr%xeG5YmfJtZaYz>#6RSPnb1w7o1Ll(=qL@o$7VJ_Gxb<=BBOq za+vS9AnN1VUuJAT@=HYJa}t7+W{v#7^SiM&d^pZr{D0wc3W$#NMm~!aKDGVT8@%pU zkM~Bt-M;(l5H&VEvdO+!I86uRlgn!UCW}EQO z&$1em*6|8o2t(L6X0@cBeoGine)g4L@fEA1MqyK3_Ztd5i3fm%#Vb#a$d$Hg&)J-~&jysp$3z{9-*<1I5B{LLx< zN#j7~hf@A80!uLuy7iw4EbtlUMZ;xAp%Jh-H3mGiQ1nBoG2#Rfd0SFrz-8Quy}TZe zZWkAt&>X0Zspm6_j38l!g@S~YHk=~C_v$RokI#_f% zSafiDEsoe`(dl5(0an7bUHEQeZC7@g<~rST*WQyny7JdCI*mNW>D@)h>te6tYRt9; zq44}`P+XqQ3g;S7ul+4-#8mki~q~syTC_To%!RF zfDjZjL8*eZI<#X;S}z%Hl4{o(3^G$En$~-3O=1X_nvj@_LYJ<=V9N+;*u9@8!ZiAmd#*l5=% zAOV#s0F4|?ant6LKi@I7K%=2}`}=|59ZTNFNzAEW5*s3hl}W7ZG0(~$Av=G>SDwPd z+>sTK)h<)nz#NmE?5KDnv2i`iS*AbIIFa6qeEn!LZ&xDqYi&uF=k=AN%z;Z{QdfE2 zu5#^?n3PWDy^=^B)MOjVZ+huuejM$4@^1aF#Kvxx;K|Z$<-z2O@zQj8aQ2Id(k}f_ zHk^U4Z0|gqoYYr7>4jwRws>(mQQVa%PRENk;JZ4Dt@Rc7dT<8*?gDL_gB(h0k+J4$ z>jYy(JD;v0V;!ljlZ_P@74Z8+!Mq8L&=F@H0{?hq%ZfRpu;UaC$1Qt71$hm^r2Ry( z7ijxO#E!G->HaaXAFu6ai5<&3>3&XaxY);O`=?i2bCQ0Wf;FY_t-F@(dS8M(IjMvhEndcJdr<5j(e_it zeu}oADfUyf{ZnE`5yr@!7st-w^sbT1cI}stCZfQC%SfR-P20zc9T!p1eZ1ID*Y?xJ zj+5o-9v1r1`(EE!*D0PeT`z!wwAWygQ|E^K$me2Dccs;xz9M4C}$>6j&C-v$ULf?xs@Zw zIb@s*a?lc&ENaLm)w%R4@)MTeZ{K{ze#l>Tv9@`yT z(zq=@$J<&^x#eDP&0~4V;F@$^d2r39yu{Z2_|#M4Q&BKt9eQ#q3dW8H!XcD}*!LZU z!dRYSNBrX``^r;K#J9c{-`bzpx*Pt`<;_Fa8GkR~@8!J2JHJc3vorC|vx#?pUzR$h zEcI^z1Yef=ceZrPQvbn*ES6@EjJNO3YyAyG8^e78HjaNjea+_$egR=w|igH`W)zB@K%-#f?vXCs)~T9n7SF!B?; zH+ILa%Xq(T->b&^7c$S4k-*zV!y+Oq@Vz{hWx>1*$$KXCs;{IwR(!Y@s_K0fKlLx*r*2!% zlHMIX1HEcEvS;9M8tSZn96xpIk$JY`uODA5Hkcylo&&v`dnO*-pZSClc<&oM-#M68 zBwfsf{k@OlPk)pBhoA20uiw$rU$?pE{)1Z)%ABCgeIR)_ z93@G*cQ6w|g(CR^G_dR7$Bf5&!c___g;GnkQjuVX(>`oUS96%bb3U`uiETR(N>F#u__uZUO*J_qZPu=N>2X`n> zT|_5A$piYk!IHh6>TFin+MTZM-GMKl{xQ7O{jR6_Ah!KN4kSO4incaoTiClz*>oD+ z-20faZBZ$9UGEFZRzv~QiQYGrEud^)=zUGuDrk$98lF+*X2*abH7c4(y}v`eu=fMD zo^icnAkLeBh5A4q$7V4W1+3YIr$y0})}m-iYf&_%wJ4gR*jY^l zRM@Vj7y*97I=!OGHqL08qU+SlXi*fWv?#h#S`=L=EsCy`7DZPSXNays1VvXACX-NY zv`N`OKun@!8=e+LQ(B9nDW%0sp3+)$HAV5Wno`jy zMCqgRIYsYIGxaiB6vZhmimsFvMOR9TZoX356kSoAjINXxMOPJ~t4v;$98OVG4$o>a z(TfrjT4bG&MBzRxEoL;OwdiU}Yg6)+(q=|e6gyiYC@p3*MZvYE_zi0wLD~G9i7Jzi+o`LIT?Cj5wq}4Wrzr^s zcB*QXet1Cdd3W@rck0?< zSM%1>RQwL?R3#Vr4iVRl(WE-Gizd}S0d_j1;=`yvQ115>qe?2SgQfW3@6a;n-G(1l z9Ca`B4Aei0C@Ol?$%lJ;CieE>rM??Kb-id5pzRRp?Z?kSHnVzn0ov3v?%`d=f0My=N!ex+wj?*Y`u^-tob?iJK@W5aMqd4QfmQO^NW7Sk3&?f2`Rgxd@&-BD}U5`5a;GnMK$KhpH z@AJ?tUM8Wn^7jXqLJqby&<0SpBFMK-y-{L~fnD!2h%!7)?0pq##Y+Uz_M;T*Kln%G zqyM1ZCrSQLiLo$@{(~2W6{~&(R-yvxKZuR1V7jem2i~e6%J1;j3%5s+?Rw$mULBc< zy)X4FJ2;o=h9(%_N|3w<5x`t{+tvFl$|t(+5DyWM(Xj};y470=!s%6BE5I8azuvvd z)(DxpmG=^bXIL;Ka@FJ+n8Eggb2KMd+R@6*h(WO^G#P-e5|c9ZA4I>F5gx#H@Q}9d zLab?x!g?jBC!&EvdzG?RAj*%yewWq+Ng5&iYd!t^6sfUYy5vA=Hve{_avCE=$HL~P zCn|nYy7V{y<}^h3Q7Jm;srNLb;$uA%b&&+VTUff_dz8XtVe?j&9gp=yq!?Jp;)T(W z;-#M@#Tc~3G9|@A7C1Ya-y8`&{SHju%!7JgP)aM-MbJ=zLFUG(x}ME59+(rnF^{JUd^^18Z&6#qE9h!+x6ih3h*py_$7^-1MqsUI-QD*{+H0W zgHWb{`jT>^i1=ENU+A`0xzR>{6qJ(uQMr{UH`?g7g>LLKDYpu`DH|)b{cy|FMU8OM z0^VHzoDwhuHEmXEdM?m&Ga8ct#rZmvm({SfWo&c{DH|(yx@p;Iqg$tuZ$PIwQ&vMbvG*eE+h+6o1(QtDQgt@WEAUJ`kGpz#Sb*l;i#3SfPZ8q)4Xl!xfY zKpbVEOMn(urgUi&3td9Aux6u6r&#DhnejoO^8pJ*Ru)P{iIpG&2bb%t(cim;MJO^k zO3x^hwM(h(F-QmBUGzY~$Tvz>B4r<4C>UL;=ps@EXrW+qX%h>%g=nE*N=mU%mQHem zEO1$_MW$uoHkLZ9RjTm26yN(2bmF?`aR9?m`_)SWP6(p!0n~#7yw|31 zLN0uFj1f!rlvr4K&_$_%MK&!;u5qX#`XNe`ekjU=u&ky9B^pED!lD(~2rm#DFG#yg zAi91*2|*7m`j-h`)h=^o?Xx=vv{>$QR}tRn@Rg$*pSWWGWU`Bf28Aszy{S%xF0k zA@huBL#v8#BGb{T2+=~O9Hu!;5>tDcmN*gAd(3I3YDCbeJyo^G*k-CdmCV`t6jfuc zyx?L*32oV@dk)lbR0>5ZKi&Rb(>pkf(JeHi`|DUO-eo>=P${(^Xg-jq{1j1HnL#2o zfUv6$g>wDoo~`xI_iU|u6=Wv0clGLC#n!`nLGW_VuDajD@gALaq>7T+j^=}8ZSq2< zUCZNa!0tt`-PxUv)Z;6N)V&G92XrcL?bSVr^x^kG@(xHjwq;5dQniu!=H|D_9OI3& zrDbdi1F4NY>AFAkr0ZYrPEV>wi+oaDw`$^ck}%e*dnK{R;Z5DKSUrXkV|4>y^sxSl zR9hH?_%fUK=P7?%=ugIB25?xUDpezBM*j@0>~W~4{=N=nsWhUqT^Ljsk@`o`+o*dC zj8=vF$cS|N)eHI4#!+T8x<7(~7|tkbRbgFRx2fm;`mUb)o41{&JFn6UyB}RSJ^Uhl zx%<)BVvFL1Z2m4rYm1GAcQehc`_X7)p9;-o(`vgP-8uG!GPxCjJq<=2%gB5M#mKEF z#_@4VcD*0H&F=IUSm^3DBfM>aw@GNYA$PNsEk@Ig4Upf_j$CItlwOj%v0GTb70O~8 zpCht6R8x-a+8xNfo9mg)u15-QMuvN^Ugt2Qv_R0L{EUekkmWVso&Y7t(jyhG?_E!TOO4IH{t@oB)TbOCy^ zDUq}q6R@ewc{8fUMnzqW=qF%Xt9k3*;qjB{fY^~BznLA^%jl$+5w-J)Ps zWx}>!Q$uV8v$MAuu!@9qPT6)*Icl>SfkBgvp4hy)x$a#Q5|5$uH)Q~eGFk$pC`Ag> zQbG&!1T9foSX9x{NDGS~TH0t~;YiC`T38Iy(nSlK^?Bx-B-lrAvjVYu1r}zYeQ3fM zQ5ZTcMWkcsw3N`o&}pflg`v~ZNDD)!Wi>4fotCw#j;NL>R~<@B zQAZmoL>+5s(dsaY;viN=Q95CaqC_`JQKF6_G7xnrNnCYQkV4ear~}uTX|)bqt79!K zk``NNk$l=miw@imBpiriKSmW&<1nB#phquvOLcQ^?SZyBw52jCM(8NPxH6)vf6zZ-g zP;2#|TB+a8Hiv2)sHP9P18k?HC)FK9?+9a$v2k@9;_dHZRnZT24G#9ad)v1=*)(|f zwmB8}`JU>TzI)p>Rj~ZDOS{Z(gymPNC;jeizi1=)wcEbkr=Qj%{GgTJmHVAjiBKhVisIo$OFYe~EdEd*IV&;@`^;_Ui?EhHK4`hh+Y+v^ARD}KXW zKM+uj-OTg?K3M>4?q}Bzgh*nqA1F~I?)rhKLXWt9pn{xa{XmssD}6NdwHgTwSwGN5 zw*Kn}R%@1LA<__A)(>iB`%n+lJX8%jN)TE(ORKG|K7Bjl2pgh(Obb>P~8NGg>ix!S0{tV4Sm0#FWqJ`q9 zmJ%%ia%1C&77BxO%w0cFMUa{z1w~PTM^G_$!h(v9wfTp%et<&jo+RU~wJ4fWTFhvw zPf@y>(%NJLm;OVPFEiJxw5YnI9NunYL@?y8VznB~GP>%dMRe6g3tN?p{1#e7R}^Q6 zt^(vLx>DMdgsP&;fYGzkA_LEA@#YV4{Q!l|uC!Q7+mJj(@pYb}ruvkP?OocG7L}$l zT14ri*AHkdGM{I(D4A?Em}GR-NsH*JixxLuZ6PSSqBxmMt+Xh*Qd*RRQd*Q8uC&O& zvsz5BRr(>XAE5AAO|4Zn(G>Vo6H+5$MX{sPng7-~)ep{&ual==ob#DBUrczwM(F=WkVQvIGOstkr<5(d|OD z6kOGFAIki#s=(Nm+icn-YOszg2|u6NG9{Q6|~6wts;~8+tqYo==}&iO3RP{6-q5|PF4j-F&arL^S7F%pfZ1}M97FN z^S4Tm)D~xIi^zpTjS4-0_9amjB2mS6D^i@O3Xy0?%dBZv3x^86FyH*&Hh-%=UBCI; zt^l;cSzfJRnZM;1p6P53_|D&|)b^XdEuzBJEH7U&^S33m4QKvVrLy1rtx8Qb%S(2d z`P)X?hBJTLM#3Y^->#cz>zYS>^GaGox z&fivOSO#t)D5w%BiK;Yg7XD$yv7WzOtzlhAvJ?3%sP*bS1c^Ck#arfYRZijj?OFxP z{OuOaM6V#wi*-4Ft0Iw|uQc;AoL}G^Qh=V^`CH{h=5PBDUG&iP{B04*8JT5Lta4_G zmI}JCG^IsFlk-5dtfmWVVOlzA;T)Mgf2$(IIkG&ijRZw@{#J>?&^c$Q3L%D0ixNf8 zic)!q91Hl+bBeEum-if#D;944o886jmSyIHN=tnZJ$F;?CbH@$@tyCReE` zCMhQni%8C{I4vPsCYt%%3R>7Nr%M$rW1RV0B_=!Gr066CJKnT((IWG=TWAs8C`m*e zN>QQ?C5fn`gnpP98AUNMY;`n}Le#OE7Of7WD4D-ilIXyVqGbNIjegwuTP2>TLn%ts zp~Mq)gy`2*M}?M1tD{Owq}8Fsllj|Dx^O5dqbQv)n0Tg(=tfB*>QIUjbtp+(b(HA9 zb?&IpfottG(jw|uO^c+(T3RHZcG02(H;R(^+s*)72Aug@C7#UR_K|{9sL~PO^lK3r z^82MlDNN>XE9fHgw@Ohmf2+ik`CFwZPNAyFT>6pu+by(EH=JBmk}&X0R{@|>m?}I( z5}Cg(k-+I!Nh0&NjdYRu+tswl{Owv=Wd2quO6G6-=kR)Y2iNKv8EACy(T2Xw!RH!$wS!+^@JEI`raHGZWXqn@E@c#r( zL-G0gYg%AlQt34mf5OP^(*MTDA-J4(`+Enc+%)axur8rbYB=zHA3W`Y_xa#&JGh*u zH`?SIH{6doxX_>L;38+4gA4st4leXJIk?a-b#S5ozJp(H^mG3S`bFelWAM#B_^D%a z=^r-q^L_9i`QT4Ec+&7GP-~mB`9$zD99+UpIJnUNoe%zPAN&Ca7yeOmH=yW8_&?%< zzw6+_=c~b7y$PS!eDG*dF1_%%%fW@uDdtW^SI%!ZxbS(z!G+H(bN8IfXS0K^GU>I` z!S6BnULX8@2Nym;Q*leUf`=Sj_)qb{FLrR@Gv5ba?BK%xP9OZc4lewE;^1qH9)9oO zqW{o%@AUn=gC`B2zjbiobB}`y{aOdFGkgXdT=<-(7P$@m?xs7q@cGE8x$=wNKIP!6 zOt_^!_~#v5_+0OU*E_iIzs(2#dj}W(-}k{cIJofN?t}L`xbVOIqq+JKy`6YQE-v(E zI=F;e;)Bm}aN%=>4_@ow!v7W@e1(Gx|9|ztf9c@D|0y55&%uTNfP=3w`RAN7bM>~= z;8!~M!vc?~AmDJY2l23T!@A%-U zus8iEwG?k?xp%h@{t?rG6g`VPKlH)FpYjg(M-DFWeb~W8Z%_E(&pWvA+3$nrPtKJ` z_>cF&Kk4AYf2I$9y@Lz?MLzg#4lexbi*x0a_J6B`kJV&>uRHkJ2Jh!(OfZsOYqT{m z#t^vpH4gr;q5q)|{+bUSJV$#J{z=0p?t|ap;1X`i!G+HwKKN5UxLz`w)r0VFJJ(yz z_kHlso|j86e17EMBIl<|a_I$cb8z9)>)=9vb;O&`1_u{D?>o5gxqXT^pD|N&@m1Oy z_^5;5WAL+m@V{|z;d8kUUghAzzsU!0cW~kVLmzydgA4!1eDIwPF8p72@HIvcADfn| zH_?BU4}PbECk>zfc5vbItb+^veh05Jd`hQ#%kw1%7e1{HE_|*!KbMc_ZN7uAGT|=q z!S8f%;d74<{u2im{=f3Uw>r4+f58VIH8VF}!heDfUhLq)KkDEY8a>?LgD>^L@AknT z^ucH8fxJw4F6s5e1-bDOIiGiMiSK?NJl{k_%5C9uvJZZigA4x|K6u>0?=gD&k`MlM z2N(X|_Q5+H{2s&qK?h%B@YfxDslmsq4eUefi@1Xe{ml;ku;KH+9bD+2ba0^`^*7q1 z=wIkd99-zq0ug=b;m-sGq zaM4?b5B@y|7d~r!@JAh7`1ktYuQ<5yKjed-t|ufi<(}|A*9X7I!G*uMnoHd$RynK- z#mt?w=TJHoC z(c4$k4$p@YFmn-Fb4yc8^^JjZo0rt9=iKU+>fv3AdrN6$=`blHrInH4(oUUOId$f6 z`A&(MocEzRBhsl`Y zmJCyd(#qjdMutsU0?H4;G~{{TRkY$p&HUvNxq*N@$BcrF7@xL@8p{?_K8agMUd)qz zIW-tHc6sdnyngFERX@o;AAbefnz>K!HZUL$N6bLc98I|0(95GpUd;0`Jn7#xyN!Pr zcWG}0K)GC#@oxm9zfMdOVJ2$>^>{%SCiKmj`cp~-cLm^mjeQ!LqVK?3a zvEby<_`AF)IBrC6+@(d2M76teOsbn})oYf~1z^;Ae7wE8;>)ocVwLMPo2#!tpbYVm z5E$S_V2c503qacshXBRHRT}%_sl!>8kPVj~y^6bK;;BcK$5eV9mu1|sxpjQJL-q9H zsTaUCvU#X9lUqk2gpx07NmMA=i~SHBE{4N>M^EvhlGGm%ZhYmH;VJ|^(kKQ;0wC~Y z>Pf}=mnz(@*5X8Jm%7-P*BmEP1Ldjx$<*UoxSpIyW?5YTR;}YwyCKeG>-IV2shn5i zY~qzb?eFey4)W59)cf)FjYUe}3Pn?an{6zj30b0KYHS#n>nN)0{&FH()I3V1Bd(Zw z6PFnj#oN>SRebG;W{8l3GE}({UdK$e-s5+I!dV8a#~}*)kap|w?rUO;<~B7foEw@v zb6ROhZ%vb58YDR)VvUQWZJnU=gtUCUeMCg z*!Tan&r?IKwtF<*P zp=mWUN~YG%yRoFErn=<(X|<(Orp~OMH}l46k&+oTQ%kDn&YdM7VSa1j%-E0%3S)&;ivJ%CFUlRLEG%Nm7O{|pQA4BPKab)-7|L_DakJ%#8tlW6 zXO-b~mXbiHO{c-skm=QhMb|=qlx3a4rOqVwYY(i?13Tz}6_^Uh=6AXWR${OMBctDA zGb-d`x#zJ0eDka|Z;X!^ueET`Ar2>5wWi9W@DM`c*nWja4E(+D-=c2y!vDnwKM8yo zu7s!ZIRaVdL(jE#r2l~tq}n`3_{cfc2S3m78EMiEWXjY-&tCF>2ROqWW9U`>gpWsz z{P!4K<$d6reB|d4IQeuLdNXAZc+>EC-H~Usk32JtJa0Pk++q0eNpqHdATQ`}e`Iho zWf1r}94OBYgG+wxGxX0p_>TP7khW~p8m+wO4MYL7B zR_3IVu+tD9jX%M!AqYd9JOsamAPn&__!GQ?APjLXzY_d=1Yul08#Ju&6Y(ze(zd1e z^dtDo7Co0K39b^x(Ax4G2mR2H2lJ!QM=gA;h1XcPP2XhUwtnuma68EE#E+4h!r$vvo~x8s#G`GB}h|78oeJKeo5iKvTI%3ZK6N^{ls6AJxRfiBA0%8USH>H?3EpMwB@Qm-N1205 zIl%XyKab-kjK2mIK;tgl_vGTd;RYipWnTW+ddqPPv$S7Ymqbqi~b)z^)+^BS6J z7u6qAP>UKC)##`WSGeZd+PTLRM16J5G0`)CN<_Y~dSTOWg%a}ShPew{>nrPP>%Ugp z)G%D%qPcUA#Zx8^R#wkzscl+RKitrm7mwAC3T$p|3%&y==NJS0p#DTHfy&BegnUzF z&4QaM=T$GP3%Iv|H=#4upfg_Ojji(nk_-!*TbpY|FU>X8b=6Jvt#vKdw_VA8pZUTv zw~5QBy83un7Wk9^5-|y3SjC3xNq?f=p}4e13m`*(6vA_BFrMvgkcpux<@L{mKPWQ0mh7PygM63L8z}A!acfOE3v(aBHhnd&U+Bd>3!5GNe5! z4pH-RoWq>$1Ka#FEX1NVi1%yRD1d1+^$4wem3AiktTcz=nc*8Uh4H7tgzNSZT>Jk5 zE&Z3!lVz%m|9`VEzLJ(kp7()H-nEPVecy?!?Z42__z7!>r)?#~5ts&~aCLJT`X>cFN2ddN4LL z{4v=55-7rt;*Y;$p!J-g#|81!|rzN*qZF9 z3x_ZuJDVf3QM$ zU4|)RsqUO{N@Yo=_Nfpbp|0b`l9dc2m{qMOm8JSHgt@>S!n`V;dYMDau`4l(`%+hY z+1@Us0Irhfea>pES%y@XhgZNQo_g^?9nABQwg$Lq|?8OZyk_ds4JzsJe=t0Nzn@9+mBcHhXq_{33PY#+7ixNnX8 z_K5tij~!hQ8#}5-*r4RfKywk8A zAg$o6TWN^feeWMAbSS>o2Y<%G3-B)dKWgM7f4dL=84Ew&qNjdnNN?jDd!iw3kLfg8 zxE-#H_mbWo)7j@k9|9c>b5J%Hp>3hiEH3%#9tW3n>vM2PA8E85rAhb!`?Tja)z(#? zs}`fUebf21i)xz|qDhFx;=)A>kDC^c0}eaTvS~* zT$PgbkiLos)7C~by@&KdWU7=x^`iqMRn{X6UU;TWvVLO9nA^u2G zLW^Zejoe3TYq!C(BckH+j1zBR?b32TKmHGCYi~FH_lrmK6!``I5j=ave}PeGmF16+ z_?P&96ybP@$~g#{1x8>#7>?`zyeU(sO&zkv!N09NqjZXCnh(FNy+VXV_)+}vm+Kv_ zx&m#``(VYa{%*pN*YD_R`JAjixTC8z!e(|sJoTJ%1`tw!v9+9(wb5%d_)k5Uyw)hcffYfbBE0D%hZz#xGp%Hn#zZq@WzeJh! z>W4_zb?dWldL>I-uM?4eMOiqSNWJn%6v{x%wNg^gd-N4R*jj+5dK^ij8|hboQ%-lN zt>(-#Md?VU7jqnuQ?`A1J^Z|-0?BcEXZx4e>x{7ia=0CzHekVPy5b$zhoiyb5y9e% zi-MEYxJ9t|(opsli(vYK#nBM{N`ghBf<>1V1&ag0;&{Hyg_29p25i@f|D;T ziUr4A#-CByj?M+k!)@@>dIGX8Wy(bQn8e&LA}=f6pR1%7Ltz&~VTHk>tD&$Hg2h)9 z;p+(&Ujm0q;E*3I`aB#)1&c2$dME^CNE%z8$}lz8z85Q|xP;2eev(v0SBHW{Hy{yT z3>JU61X3XQOA+n}3C>L|m1)H>%M%@LH>XM$TZ%Tbj!T4Cu8IXL?u|LKP^RUDIOcf4^EAZceI45C8a40FPMd2mafnNR{Wr=q#2s9MAad; z2Bm=1eQ;|vl3Ab=h1O-Uj`bc0y#Dkbu0O5jq-%eB&pY3LZs0lTl7d{BqCfL4wD0mGDdF>;+?}y4=Yy7ZZLz&``fcPd4oN?$gcmNroUgjcKd(eN~p=X?XjjVs0rI$G0lqIhUTu66RzBK>EpUhYV1|{YcZpmvuZj~OV z_*afygpj6+0tu+5JB#2YYW$m~sp@B6X)tO3l5T+qw$uY#?O;sXdmRjrulX_BEXOhy zG64-hdtFe-aORdEdn}~N;MYPH#>X|+K<8fgi9Yx?A3j{`?8WCF5iiP9WdeS{JmbK< z=)dWMpN9B)(eD61FMPiVcf83{5-!hB@}hqPbd+k9x;G>^B zL;tLyuP}Oe)Q5hK5B@y-Gu*S`PNTkgJnMbv|J6tSvGAkP#qd$(12Aq`_R`NQpdjryBY%vm*qf$_zYL`o#Ak zL;qVtugVS3b1fgkU132F7!;}%Kt?Rx8<+4a9jR* z3%BW)TevO%_biN+p`_K$_N{GaH%I3JGj() z_c^%Kd)pmc>bH?59Fa%ru`&mjdW`Ko8lji^s?NcszG`!Dsju#GaH+5Eb8xAz?4@#M zoLwzUshz79@>S|3K$wldrjC|CbB#ug)yu=e=E_^D>lV(fY;0JFRd?m1*Kr#e=%` z6fx`Su4EJcTE%Kw$CHDJ$)ei%9y3W^Ia~CmwuEQmqO)cuVO4fRl)38fNWo(Bk|a1^ zMQFZzg{^Qd7&G4`rlh>cjEKlm!kn+dobR5#fV+#^k{Mr(k;Vu!!6E656lIo-qW_B^F?e!vj~=Uz0gI?%YT^qOK^vs@=HwUg|5>y z;QNdRwy{}+vMos?(<j08UHT}3R{^8{68zbQXNJ>AyItF|@i)~@ z;C2Wl??S`pf4B-UjxOzqP(H9Bb7*Uge|2H9$>iNhK6$U)%A}#wDXT;&+xSKryKI&&!JUFq9Ob!{`kxFYMB`{Om1PS zY&TsZoA2lf-j&97RXr6pyos>ZujI~jUH0M5ZspFh4Qra~|5u6r=ccaunI^;dSr-D` z`gKw3S0RBv@0Do~7seEo0e9~!aT!}bi-dCu*XDhtuz+RFG}>YQfj=JO==rx>1L+{4 zp9Q3a8Ll6Oe~4k{!UD=>wdO?SEnR^oxl z*t+faS`WH953J2#Qsh#;yF4)ILkJ!9Bl~;=Gtu&V9P60#Rp7!gE-@+(z;ZEUql~Wk z7Rqwc3!O@55PcfB7ya!%IO}XLdafh$!V5vqaDQP0l5q2V_*{)Bkv?H`EMvbn0{7zo zGU!Nug`ux7;Vki?pYDUpnDY+|AIU5C!0r_;$7UI>q`S~_Ou~!)$0lAsarmcv&gPKdTP@s{^JO3Wj}~srbE=6ydDvs2Tt7=g+?Hp$h1>F6YT@=6>8%zX z1TT^Qb_=)Z{l;KrUXt>hWbxr#4-IjarNWf69WNndU|Cvy8pY!KGa6bZ{yE);YM8b1yl#lv{@!T*@bz zmlk=X9159u2`=T$GzXV*CGOx-eq8V1QclRaVBs(2fsEA)F5ms#4j=jM*EqO*_gxMy z-~F+Tec3(driIuGR@>6jfZ;G_h|HG^;}IXyz?fI)K4WM(q(>h}%OTf;33@y$$H5v> z%fUG&Gjw1qhs1mAEQe$$2WKqOV{|HqfsE6r9gaBz9yw&gWOLM!E_eLOHv{+&S=nBk z$eQ6Pn<6I`CbA!N6zgbw|Af)4qp?2HuvbnLGh<&idh`LXqlJH@kuf_Y4$ux69+M$8 zYjDgIs(-@cGpMl8BpPbiV1&7h6`EyCv6ewtw-b|gkvK%n%ZrW&hn@0EOz4fbKoJ`O zFfvC$E6Zd9XU4+54vayR;LkR)j{Rt3S(kvRBcfuHW?&x1rRBPDU_-{THW~kFF_Fbb zETIAT*gWqk&H7ReDKlqjN@6|LMN? z;QH8@?)LX4H2rqZaUhTEoSph)JheTu*D-f%X?g0&Bz8Dr^((fRVhbjYwi~j=v?V+? z-f<-sz;`6WBW3X^Be?wM2tSePj;HFvlau%iDIld-}p!v-ZHWmBvKp7i(lDuf-D<_{nC!)-<%WaigUB%tyd>Y4>Wy2(PKgN znB>ZjFxq=Yo0pYk;ewTQ;gLzMm5#4mibDWbwuDP~J|866g%kJ6Q~h5J#jd!jA~v{< z8!w@-vm#wslA7I;Srxov8JIfzRm=03JLG42I(?uMba% z=k3AD{CM&ENvw>GJ{STY63!sMls@E7mYE|;cf8(mN4)g+@s-JNQLz11B<+UTB;3@0 z6W$g3E7a+Ihh|5%B|B6eEiZkv`Lf91?8wft)Q(u{@T}m^FFfh#R}+JemW_G7tmC?Z z_JQE7$APK|M;pf5-^gn^BXzj_#fxU$dHM+}Cd3E3()&iWr$?2Q?r7SDbZh-7GMmX{ z-0xZuOKtmn$H*Rj@bQO!{3C7R@4OICzm^~AN|rtvynQ6T)FhM}jkiA`fG{jRQ!~C?0pNXl@B+>;XB}<=gx#seY@EK*P-?YCBEnI(M09?k$(yxt*;Y&&2 z6X6H)Onl{q;bh+PEt8YQ&tVsD5=SGpLG*Yk&4k+Aa#DHTJIT_4=Ht-}M~Hi%4CD}; zLV11cD|+K_&c`%icIwIU)W$^W*NN0`u;?G3l5Eq+oxr4>_Il!&;X4m}xaV5s1z;*2@uW_O zFU!}2N`H7&V`upWgkAhSgm)Pa(?0a?XYk-%s?Qrxr8V9^fj=+$t9|gxAWsNxu6Z4R z7oR~N9Be%4=lJ05KKOLtjMuA16)Fz_qy9LCcs5IF7?mIJybFI`a{kZXyX1PuAGZ7TfdTev-Dx75PfycPO?v2c4#P}2F+pk;SN z=znbJiL=@k{0yT<%44sOyvD-qF~P4}IQ1%gzGZMeY`s;}0^{NpCY|`O&%dj(a64W% z8QhImi-p_q`geBMR;!nA$}( z4RdQ}OcOOUwJvH|SdUYixT>qUc1mDwttO~!#acHkiID{|h(Y9BIo`pf^ap!z%-v-5 z90o;ZOyCZa{^ICZ)i+6uWrA&@#_}tZpT*6wsy-?)p%=PN7A7!#CO}%5H&GQU!@8R0 z7PymSin3*Y22DV*ETrBHJLQJ}zhPn}v{)v3oVFZoOkpF)gs0^_@SO2)V|;gMxlR@T zhm0xo8ULFc4-$Xj8-%-;{@Pdw!K~H~b>0TcfAKH+`yBjJudca|#4v|U_AHj zM6e8fh*62uB?aiL#e-$r6R8`Dup1Z0h0JcALPp0o&N0XbVDabPA%F^4|IoPWJ|+W`K0%xWx=+CK%hfi!zmxrSaAH1F zG4i?p8V;Fw(X-7(di45~k+_u`e5JvKPuSR*&G{#7lj|(pZgbt^gNF>xm}O&!AqEGR zcr0*mk$0(si@ctdeSPbq`s&6&J%3a!+f+Lrhw}$;Yf(cD?l)2vsaB6%GrKb#PNiy^ z5sh`#EnHIVQJ)&Q|J29dgMn9_xYmIG%L%{~kr|X}CFNxX#7opzerbbvXPVoFeu+hG z5bs~5`va_&%7V4POAc)8z*}Gt{3P*+p4i4by}zKznaV} zBk~K>h!?N;%NdPThLHZe>ZI=gxAVUt50n^iy8$Q;RVv|&{!pi#Km8cS$#Ip_G1qA` zDY!9F^&E0W;j+C25IBh&Sc*8BTo7NmCL9Hl-S(ea9%e-2>vmzR?@Vxsm-YnPIkcch z)XgO&IGdyd7zUX!6pg!9b~8NK^x=fscE{_%pUK#N{zZ=U~aH0&ZGK*oA5jG zp)J}U&p#nUqYf*DUR7@6g)j|dD-#u*C1$;ohqI{hG6oWvM%JJz!1H(eR~6_Z1W z!FyaZvyedAzjD>DkuESB846xgHZlrkBXKHV7cMP16l%qg?Z)HgUhAUiYihSw~2no<{sV#@FT)c8#EUFJq1{zF=nFt6N(ZR4%|-;$}#IjSJ~X%W>aB_6_;?)rZKr z4G(a7Irc_=Lk6|<;6X_5B!s5y_4|15q zO+WID9CT>?&M_z^omDL04H664Q;a+{|hpd`bFdy_-AUN zsAKUj_;z4kqDq@j<|Qb%cbjE;$+5IqrhkBaDuC;N$YUt+9^zQul z)4SuJLjqj%Ab*0hHl;R2w#D8lNsYD@EyrBpfGTxPHtz)-dDdhl#qw|`o@yXuPDOCs zoGAWE@E5`#&c){7$PFM+$76@p(b;jFpM5$aoJ?&{_xANCQoDEW!PIaP?a4NfJ`%!@ z%<9K5jl8lI8n`MD-#9YNK6Mhw5{;=AUD6x@&2<`|=kBPxw|!xK!PlW{ z=1HC*7OmhQ5eq?3nVs1Gioo;F;{1k^BD4YYKM{)Ye8gLNckOaw;*-UBz}lW zQVVGGd5BnKVG!jfoAPJ{Gajucsa;=;Ec18v#BW|B8RCc7muX(-cXAisw_uq__gO9nH;)G8i_Jm_S;%9c;s5;iuCWh0DW zjBDIr8|ZNKIrc9W&YV?P@ppySUS3!=t8f8sYD{=fvooHuXMp_y8up*0?K^|v4h?Tk zVPDSrgb^R{=|AG^79v7=jt|oaAFkIWeuaiJIL|~QF5|;O|4V~cI`o}}Pp!c> zm?zVNdD%7Z`QTlMmlyp%8+|^BCymPgc-{(myy!{ih4U^jFTC4_{&*k$Je$mm55=S2 zM#3MB^o9AodC|Y&gP&vc%zcG4>bt^|YX-ddd`3~}_C14^zVb?glMUw*1pl6evyCeF zfBN7P7%>>~ITe3G{{`rQhWJGM34W`EpJw6Tuy8h)h5i8x=eH!d8o+~{{6A*lk6ZM% z{L(=s{TUX$oT)_I4tI@7C*pRvzp!vS+^rTKviSE|_#_KIo{V8!c`mnbTmD-u{1fme zdI*sT45MwLuI$s)Zx)yDH16P1p0PZk5k69$HEKA6Qx`PL^&^9S+}Q7Sa4FB$ICzP% zcR9F}XT1)7p|S6F@L9(GM+cYktjOd~iIA8QB*m z{H1(y?zjuoFxLX*?8-V) z?4Y`1p$(YDNHPO?JPr0%4f{%UhEG*5cZK|$0=Fn_^?&z`q$~TX(`CFNed^ykkF#yrcb9g7mVd~Y^=jkab&&py zaIArUiW(KbJfoZpfax; zGo~H$JiA&;;~lYRJa1$3)ZGXeBj023yXORBVS6_A2tpk!!)_nBlOnVArabj17aUBE zm;Nor*jmCftv64+4=JPq?rSW9T!D-Z<7;lEhCz%ReSp zHWws1MxMge1dWM2jC+p{>(TT$?=z?iUyJJ#)u`}Rx!rH&a-ABfG>5#?FB})ge0@F!;=#jcEo0*G7ROXUmm@#4e`a;;c*yk|LK8b9wrH} z^(T>jX*9Rj#S?jZ6M5aq;7@mz=N*h}<{mo?U0xZ+2E|ojdX03&R*wBfEH(C-S zyRN_tO=oCJL7QmbkguW{&+AF#^&~H72~TeNhuM+Wq2DgZru30mSvI;W{s|S`zR~d! zW#Kqt+QXL+wymukzbO$J{}g8mN*|~2gGtJTYgv?N@l^lrCoNW^j>_uS!YW5>^7#h% zB-(rOlNVs%J$U;K$YK~(hXNKb$i>j(H=)OGh#uomOB;h8OeaUQU>0S$`q<*7>EIoI z$Ngde_>IL=BPFLmQ8TI5Ysodl&3?#UtHN7ArE)jYqW_cc@tz&Ibh1L-4fHmqhxl=% zp`ebknO*qaR!-XzPfdFoJKwNKq@Z;lx0mJpy5;Nmjz*Suoc*oH>n2qrW7kvS_Cp|I z=AVzi7_G7E6REKqGESsUZj8n)a%?(#e)mj^+~g0kdIL9v<|o?swIPk8P+Bxu`f^jp zk+#824i=3L7F}KxEV>3cbZK~hu&5Guo0Nsyg2mT|*K%deYThK$3H`KT1Lg8EsAp{% zzLE!^w$*svRff-_6M6RDG9dTC`EC{$Tgm{fgKY(EeP!_ba2c4afsR-4Ti71oSQg%m z6d43^4-phI2g>rEOm7$+d7s}?LC1xK>5XH`BCp0#LP59*dGDk*o>&%nik47W$M{oY z=|@lMxNt;zGX-Q$d1_^;c>Ba_ertHV@%;K zvpU9?rXL+$7I|$}$Au^i$A=Nr)TQCRjg=1A*Al;|RQ@aoq#$;)DOWrf| z`c%irQ`24W@mrD~n%&WY&63d9?8t^W9pQ7!Q?DV4W6Gw^4NthZUz&F&aE5mA5_l!0?P&MrWNp{*z8bX3(;6_AvFT-CQ{%AJxXDB~sKVkmQyx38$ z2k0MWD;r}&`S8vZORN#=^1T=-4*owZ_l{*Q;Jcvbn7`5$-c=m&{IS7*z=kJ`k{QoS z@Mo{{5`P>QEyAB`IPT|#7yID<<%3rNr=d9Phsc=T%LHLu{7nrH!R@Rw%f^<4tsV( z)bKm7dIyz9H}*y>7{950A@0lMRv*W9BX5hnKECtT;TZRnR+)CTb$=i)e+`}9NQ8Ky1s4$TDpP>p)>C^2?;L%Rxsx6ea^@sSXi$x@Sdw$GmU zcK_w<7HsYh;PDW%$R4wcYuVmT*b?ZMqz)^IN39q;LN_Ert^2Xs>G-x!9J=#jE$+n> z_u@0vM970m$V){?)%m8RP2-G|`p!z8{(x>Vh0&YCBHQ}E z1Yy;xBeRo%79N#2@c^qHbKnGR+IG_QBbf@}l=^ zGhOCG&-pnoK3p@bnPw7%Ax_?c&mjmyya0cK&m#y!+-_r0pEShnHR?ZCsK(hm5I%NWaIA%Y z(Zq**>@x_cHyYwLpSvyG<`W_@40BL67iG`Z7F_hXR8d>>hVN4ODv`eEi4`Ya;1P?)1H^?aXrv`&W%=13G zOygUd>5{$D6D8|YMxTlzH6K(!%f<#e@8;J57m9mefjDh;zqgn7fz&&lLqEG{s=9W z#`4bMOD$TqZ(2wLBjpCM6$;5>#yaFN4k>snZN(Vq?Y5ta3%K5dKZffXzcw4!N_o-$ z&s@S(rm(DR%w8qp1POFq9>XcnJn>?}X{Cv73hNkfdEp5QkSgdtAe zf>RGP#98bMzJ?$Sal38y3xy8l({154pOC>>PVrAn(!2;RdXm12;G&OJ4!!8(gSTyR z&;G5cuB$c+nsOYhR!$Cnq^3>|p>FRuO%8V)Pa05G^FXy8hPGvLd9wxL-@?eD^=oDv zIS5Iv5B!Ya`}1mJtYF51se-$09IMK!#N>Mr+NgPXQ2_HaY%?hR5{qUK{nBQHy3gPR zcrwrNNh5XaSiF-*2|>$z!U+0r7RFZtXP)e{2xgO}y+99I_7U)ZNE<`y_PcGSco+Ev z&WC5O_)ix78$$Y{j>W&kpA+EJi)*S37=k+uA5^L9|GX(PW**a7$5Tplqa!r@@x94~ zlt7!PdgwMrcK#Vddy64qIZyM&QNTFA6z4AtX7^Iz0Eb4nvk`(b9_=Q*LW1~ z<{E{9Td*N;d((-@)b3>Qp<7OYr5Ohu4`RK9Y(rY}_+Kw#eBGr;H0bvb=*_xO7ord(e z!1}tgN0`8}NiVB6>_Ma6TCuwegLPD~HO;8FRFtRE>croznBd>ve6l$TqkW@ZniJ`| zZoQ(j(yD#$V(cl6r=CDUsqKzfmyrz;^PP>DU>%ZDn8Ak{=Rz4FC`0YFdsFQnRqWM< zP)w4)CYp^sjKRb~jLV*{SY$D}z|LJ4*5h^MfBa6pnrZE@AvV9)9B<4cQ^vKduc&#H8n4B6%{SxFcf38lzaPp8m}V~vjrC?1^2V-x2yFeI`xq^y=XfQJ zJ5I|sinM{3BX8%7$;w>w+7UUEx-~v~$=D~Odg|~;Gnqe_Bd#tiz^~r7wt^VUcf7+Y z!x6f6SowE*%^$}=1s-gxZYMLCv-Cq@d(FGlr>ad$4=^@1-UFL#umVl)`^&xl$I?c> z3iNgxUFjO!p8&4pb3%F+a(LlagU$ppct#2FMhCyx z;I}w+z-A>RlwyALC6E#j0#=pVs54RO2g@wh@Y&M<|(&%$j! z`z+k<^Gu+EV94JdkN%W}+w`BcaC>}tj)ji}FOla;3%B{SS@?+-y?uWcRVsY$v*_*d z?tTkr9E6_viiQ~XJ_$a-!cVgBh=tp7{)>g%>D6W7ww`xbxSd{d)-C0+>5nt{hPX|C zzJ=TA60>kyZ}Tji-+{z8gm)T>Wkgf)`S|?RRkbo<^E zr4AL6zUmP~zo~YK?r{%;7WZV;XptnAM~p&sO)h8L3|3u_(~GsHD;GBmIY!y<)FaOr zdLMm+RH$#rZlCe=Ih=ElhM^9XMdsGFr?3~$#+0Z z@}yvlxtF;G;IZ@>ri0$@GYEf%NnGsm3<0NMGFVBGxgT3_p%0wvSvNH=XlQEDr{OPb z>40~qSW*nPn{W01ao9VbuqrQzW%Om} zqvpx>t!><*ghdk5(`r=Nlwwqorsj4m&JI{qMboiDi&4TE@OM`B%dQ!Os6TvAsa z*&kom-Y|DjbyLIKcw~Fx!PeU5#@hOZ=JLpaMCn^CxAB~=_E!!?b|&)DacmJuuDtM! zWMoq!oem`<1BpCr8cG)>Bk4rmX1skQk=F&PaY=0VNq2!_vv|{9j!s`58NkJL1&Pw< zT04@s-z@#Y%-G;#G3?Q}_1a{|#~9a3Yfk^iWZurf7lS{)VHCEtmBh#V4zI`Ib+UdP ziPw;R9f8*g`ZXV~Mfx=luLbILMtsbhxiZEhTaPYgt`~p$%|;UmGSvz+npn1@n56#ER5*mZ<4;AL-fo-dJiARfGT!-+br;r1l+MLhDDN3{0G(;JX4 zHe~Vzj`G`ZqVe)SMxSNO+{w`LlpyicsmTQ3odhmV+|w0xzC=4Z4?^8Ii5x%`V?H&0ZN@A z_-I2PQogc$j5Xldx&8nx4;%|I&!hFB+bk%_t6Qow9W#%HOGcaz`f@ouGF@ELXWI2E z90#M849d0%F~2s7<-n{8H^NXa)MZf^LM zaPSI0WWvACcx3pbbHiu;WBAe*!K*U&nedO+#^PES`ghGGuAqj%rTsK;U_;tiapOPk zFc$d*J_|2i@!#a3fBF^wqJOp#UEPy6&&!}$tRE_lgk1mUO_^CT^BCG#(>}zxYkjAV z-i@JG$f+qxS$6hN2=c1EA$ob5-jor(Xl!)Iehf9EtoLK6S=vtc)YXqQ=elg~A!sU@ z!ftBpe!=`WPx-_q)S~QMDCWrblcr-$IHYLxiLLRD<`B2-7ATSAqF_8R#fgIwb|WjDkW^;BxwjV+`F{&}aKf;T zU@SO!6#g#5Sq$HY%k9`ueJ+PRv9v(Z=?sndwy>-5wyyDOd=877ms zB6>hEQz2lJeIFNW_MzNSyMwT~$gEz#)_nMe_ch@vMB6Oq%2y~txjbfh;qm7uG6rf0B0MF z4=1qIU9I!bF~+$MS=}SysQcEBl&M2_nJ{k3{h1HyNSni*`(~XX_0wD?QKk)N?GO55 z?*5=8$SOz+^J659_k8&%dk%ZVoqqG>$j#){i9Z^(mtp9hYMkX-ki+jgKK%L$G#|g; zw;}Jbv^8tM$Zk_A9Rd3s_!M~r!m~)daKE`}#@&m4BKR|02~X)6w3B`4ukw*+zYjh4 zN_mC5(+B^d51(=$`saPD z!fiQI7H-cS|Fea2xuL}CM;30+xu0P2G4;TFA@uVs+@4$iI}1PAqL+Jd$;YPufe-yA z3uoCb;l5zuc7A)!!fid|qjscWxcqj656?=YA$|(}1TV4hQ!V^r3un7r=)Yv)c7ABE za63PI&BD3%UHJTyh1>e?v2a`eA^4?Xv`y5N{Yv$l#pfFPy$&wrlV=}$=rV5UAL}WD z1=Z6dQ!3R|wve_o=!pTbTkFkb%68#=%-qktwYq6;^OWh+Bc-^@25fGuZmC(osfWhu zg-rqR?(V0PyK!pkzgF9nIXtuZNGv%G9PpdDw&USFVLc3~1MZ2E&Lp=Th?(1#__+(@ z1etLdWE5@at_?Q2vEpZP*9U*_ULKRxbC~p*x$C%{ z$w6U?s|+o_Jz{*?CTc939p?P*Z9~7rqBe;40@L1FZT!Ca&()Euqim6kNVT@wRlqttN57cO7jwobcYRkR9v8!V0D>1tjAKFX5TaNQr3)5|-U~BCFwR z-7oZ(o4VgeTfUTD$XA+6DM?3`AMyhu+vB$l@>{lyCELOejHUbkuf6xo(b33{OVVG` za(=&=v(MVEwbx#I?X}l_^#MyBP;u!Veq(Pjdp%eOHXpFCXao*?czLs$5 z9-NJZ41F@d?+`4KhsDq$AK3z7A^7~-Ys7w1k6@WWUarOK*;rhwjvIokg?kYva}`aw zRpi0XcGAM@rp1TB_!C?X?&Fm`K>wgvLtvITs>^|0i;+BE`NWa=nFBh4xPj=BWLkx7 zlr1>xZZ&?rcYW_=-aIp&w@rc!14uOi8RXr(IPWWV-^y_5@mdw^a;O!n9R+IjUotN= z{S6-vlLrPH6Nlhu#>A96dQ5zGq3`a(adJin7HAJ&GOS6Ro^iDQ867x7L$A$_AnI)V z_{f^Rf#X{DTJNESgN$osvA0TUz<&&oD;d-N7~!2`S}7x7ui{4?%Kel8kP99h1WrAY z>6>)TdPZsf@S_~%&**kPgPV^V-lo6;cj~g7E9ArQPWUj^6&}JV%1ruCJK)ZIxxSo_ zJKtUh+?l>p*LT95>t&t!`Xu$NuBksgh7Rlx_%n3MscRZNORb30XLLckyqsl-mzoQ5 zrmXb=pHmLn_pGI*IXew_CY5ZR@UNOCWe=y+DDSLR<=SLT~_K$xRD6ThJRdpxw! zI3L!(^I=@Vf=(dZi*>+m4KKi(N%76c^!0=3I<-3AOX)ha0l3S=^smW9lpJB_Dwt6z z7*(EYb^O;1K)((C20RmvT;(_CH55DIk;W#zDgTcEbCFnLwCem*@}-;fMtK4WFqWyiY3v`le4a z?Se2H6Xp6bn(+1Bg>5J|}cxPW^@Tk;q^KIU27Yxrf#>eo^0=Nk` zeY(MueGBn-KfH&B5Bc0_fAA5Ahy3g0;Yk9`!VNyQ3vTdw&;>Vm8L5do8MvxEBR4Cr zWaa#T$OBd;x>L`w1l}D4X*>#xfV~cfZ_WS0Mmk1NsD$=wq$~4E_e(3`ef=2X*HnrO5dduAS=cXM_1cb~d37LPtLXI71G z(yZHxZ<#aqk>XjiW)|N*X-?_HTLLrZ1|FGIQheL2TZ&=XoHVH%okyi?~eX8auJLc3hMPX!jDP{%==^U&Yur@M{_R zzKikB^bj0`vBp7Wuqm`fI3?zoqB6Xsv+Ocd^i_4iL) zaD%^j{}1>Zw=?MFj(eA@_yhU^lc>=}OxmW+o9|!1k*oYcP5&w#knz|?O?)%%Jp`Bz zsza*R6^wgtFS&xg0LQQeRPf8Ug$51MKrJZf_3H~*l#DG@uKL1EaKo{2nY+IFO@#Vn zQWq<@x7wN0)i4uTq?XoVxwSc&3$aFiaU9aNzlsZ&YDb#Oi@0H`gIGA$LL)ahDhy}3 zZNrTX;pBz>d1BsF)(3CMp6I6XV%Q;~uk@4h`)U;d~kE<<2#>K8F=Kt!p zW-8I9uYHo0rPd>3?zOydT&S?3Vb~Hi>-sHD#bQGCS_yzD*9tkCb}8fF`9A-0&A0Zu zn`ua8?xVG;q#d*~4LtMtm%&5L0rQfl>=f{WIi`TC#1`$>!pro>Olq))=Lubj?rBp*zy91wOfS2j1h53r<;?3w}Z4Ngaic)D7O;CzmVy0{F39M#c;M z0b^f5cn#w5F*JP_?p*0imQYH5J8k@b;DA%~nR((raloBxQF-nMANB*zbkYJ6~@Io#{-}c)Qc#8frd-JJX3d;LddZ*a3I0QS~tqJnV1yGY|VhpjLZt88E#?$0$>dg$E^)yE25TpMSB`_O#kU5ZSfI-#3Y!FVW_aE?Q{j`oa zV8!GWPM8dqJhJ8?I{m%Pxi~a;$PqhAZ_OZ;L*?wBKqjO~_&@Tz9rAT9-Sq{{fd7x? z56wPCB{QF%OU>Cl>x$3z<9r62vynw32-vLyQwESn`Q~%2dU*z$v-zdY_fop+2BhOc zQBr=;**JAxe7VDNP7AOBx@(n=f2s3!I5r?ng7`U~?qTZdWesGxbLp?&gPclV!a4aRMLTS`u*qeZw;7h3NBxFE#e}2{RHJ5#2qkR>@br;wop^WF1`o- zBY#O!VDDGQ8^E`5D0Hu)KWuU6n9m&}Jsj%YLjN)V>c56R+$*!_UPSAlGn`x%Y7B58 zUC}Su?R5M(h=dJt3x5|ORw>%rO%km{?ImkC+gCFyxl;C}CG%HLl>^~~i{7N2R8n1( zdU^u!EGTar-f;Hnnh_0W^Q=X^NFO*42s?jA!&$Gj=skGrJ&oAPHrH;t5df53GUu|w zqVivm%^i6Bw`5Clwb@LGNQKy?I4(4{<7*xtPVAqkH|li`FK@UruO<&$`f#c8_i;ye zU+tUatB136tEGq;#5Hy$DJe!ns}}%r4HRMpO8y?cJe~Q9G~UU{JGCoIYwWLEhA_3i zi_?W!3mK*Op%z`d&IOWuw!SJv9q-lEQ#-7q1Si?5FK;alY{rJs-VXM}IQ#d}&YDo; z7vc7lH+h~T^V*0X9Z9-+-&0cj z#CwtP{#K(@<-ZZBhQ7XzuyT6$Q0tDSzTEuwDsox>-A;k;pEEl#>pu9)iuLV{@UNWNR;@NQ0e~K zk<+|~r;R^U`+t|DI)}+2!Wn|J`C8&U>NfKf#wXj~uBB=#H=XzV)r} zA55;CR{p@{lIk~n#gZ9wxaS}#Sj`+{fi5e*i?#cDzA?TF75W;6Jit3k3Oo^jDzv|> zmmN6%!#>h}XDbi=(?QnTwxem-NNbr+4?;B8c+!1m@Q-tkCxfC>9MfriRj1W3%;D-jx3)9q*rk z0O|8L`g@{&a~~Pu8}+wQSB7i&0S)J#KRyp59hP@B{P_s4;QcCoOea7f9_prizNXW8 zN_~2`XU;si&d8zPP)9wQunNx6?Z9WKgKoxm0USlC2nD8oeU*7@+7P!-9kkoLd^Sk(&bpFW!ryMo#9fQE%cfhH? znegnb`4AuSnt}Hbh=*{tAp;);y76)2bAto^dH9>~&U?L``I@^NnLhWUj>C`7Tt_;T zJtiGvYhb=U2b}xK`MBXt8g9~`pn`e+(gA0E8Ty;Exf$MBk33_Q57T$zPdUto@Ui$A zJh?BOk2{^SF1X3}8V1ziNe6@HT^i2xZ@|x_A928)e6`2{chYT%hVx}P()kMqobAA* z|KA<(Q4aV^8cuw^;DG<5BfK;H|K9<3rvI-FxN~20%OL5mb%b})$9WdHvtD?HJ|DiE zeD%Hq?yO%P+QNq~CqGQmh7Ok3kDsB>-43{u{*OA~&hS6haHj91&rck1>P#m6zjMGT zGY$MzNBUoIz~PjK?4^q$-=_aIaPw_so`IWw+b6NuC#iHyKX2Nlft!9z2bb{NH*We{ zlMllaZu)H>++J2%r)p138%eCO96SH7DV@DRL8xpMyk7)L^5xT4v3o*XX(ld%7zt z=fvalqJucXQ}c??Oc!9u>N?W7I&LD z5zB^~RUI98?^*7k{fl2YZzi{d=cGYq6qY;F92V7VRp@%V>2~9|%{Xo~j!B@;%tT^N zyk;U?a@6`n<2TWxEZ#R|ASDJ;f(n;|_Q)3{H)Y_(iW@)ve<%1_i-dlOJ+B-1)6PbQ z5V{#;!qPrS7~jq(s6YPMl{n>~^I=@Vf=(dZDXmDqpd%ClMpR6@ri_&bK&Ii!#&cE! zj9k#6Gx5#$c|^{Y{{s}Vc;>5@hxs#{JO7zFf1}sy;GPK@@6!gL-^7)Vc~ci-nr{64 z!x&2KV^l8nuanJyYT?RN{$d?JLnj@>$ZeBA431poZ`0*BjK=a4Pj~r80>=DJI5_38 zb^e#Kg?|Z=4J}Muz7Og6P8i+puyrc_09$y6j&Hjn82nAToHNT+exuYsuLH9DEUSrc z=z0qA$(Qb@SPz-ZdOD)Pe%>Ab=39yGV$E1L*D8B&r+2Ou+tr6JYy5pa zYsM~X)y~m#t-$W(){MTs7o0(L!GH9cLO{_Qgm=;0 zM+BtogO{6ORJl>ZiEC$R@ zM*PKD>pe~;tS9u1y%?oXo`g$NR>S`Xb$wcLgIvLQA=3Dke>=l8F7&tIeQL55eU-^K z+671qa|}o{&yO=AM9|DFx1#xTt*$&jT!GzFi`2`fUd8GaRIdv4s#33*ynay6Vle6t zSXs)oEaM`n6)cr;2@w!u&kx!Gi!{FEPXRqll-Lc2QfM|fx)JcNH;p-n7vMPC@#{@@ ztmMbskQMOUC@$c=5-FF3Rx*R=+v0wk=tsARd&?*k3k(_EG1p3*2Um4%hhqmFYXNPU zYsK5HhXV~Lz6p-rUHCD4JA&;ViN6oQ-JS66OylD$KM*O}itr~G5y{0*eICi}09w&* zWEwwx9h_aKh{OhFhB(Nq+)DJ0qzA)9S21HRU0azmT4YxnzPdKxFTORO;ZE}JgbJK3 zA_J6#R1vp|dke%v*G7iZekgJjf+Jhpoh&YjkS#9C9^Yt+3we?)?m3na-ks~6#cf0Q zll_Xj6WB%1BG>pCDeie9unlo`vbaPi(I>@anCR+Eao=IiEN&~{UEA;%-zLR9$Krmd z0%wc+4gjXO3|tn<7FYZI#}zk4Y`dknEkqPlaTNEg6qjM5U|?OloZ!2z10^Ze!WY>TP9fU~ z!}(t`yoj&Ra35ch;l)Tb;8`#KE9AdN{*NJrV{oCRfUFy(0rk>(7Sc)81nRRaw3VNv zJ*pd@7c#yo-YELKOP}qiiLRaeJj~BS{M^q^&u%+SWQA1st@kckJX_{^#k1Y2<6|hW2_Ma1)4>9%2gB z{tCWo{4u_8;E&Z12XEo()rS3d0XdPGcGJ9~Na;bj8poR2(r~sYUO-04yRGxvKqV!z zmt6%WazhdC>Ev=AK1%?6aF|U8a)(nThBrXS4X-M`RNhfyVnr9~XaNtHx(nO`IiQ=i z70tA4ij95^8$1SHiK2QF=P0?*h7uyez>d*o5}1+*5-z?O4od6Zej@BVMHsw0cO#-m zY(&aRY>{P@*kB5>GzA#>oha!l1y@me8Jwjti*(CYDdiXhmqhG3*U-|QaeJ|lwjQ7Ccd6aljWzy&$bf$sre(mrphZRoKq#yd0J;nC z2P+=lvDE^DOa-i+Fp^p^PptJ`-~@`*Mf^eBia<7rG~)VRRt~!NkX81X=Anpy{1A~n zX{zadZ*sby(knWWAp)M(ru&Bo$cm2kLsjv#HQhf{0}w=o$kTu^0@&Vk|1b^k3!uH} z{^1%hK>!_1_vdTCBms0cG*cNF385Cfi;`|N|Hv02Zj|diejesu7yr)uYZ37#zgk3f zHzitk=#F^lQH*5{5_1nhw+t*@%J$P z9>(9(P4(%HJYsiNL~C9VacL&FI?so6x{eY)J+BzV-$?N6ydc5*=?>+wS$3^pklA@v z2y&3l>bw}7#}T6LnPHUQb)jKJ{Hh*C$z3;n7*dPUxQ_}Bcs3GU&k;J=cLY4=h(jNo z(Fj@_5{LrwDyr@eVNU#b;Tlk4bd( zGNg#4}E zJ*S3td#I8JqmZ?LOHsGO2JgXRfFX=5LQd%zrWm#xF>Bdepx*30Ep*DVtR;YT?75rwtAoVDDrALvWH{ws~ z5$>Jh?h!b6B({eYwFi#%bWnqcwM%uj(|Jss)F8@22a$SNs9M$Dv25*?h2CMl+YtzQ zjOwo6M!7&+RcWG$8}GsU>x>poF`n4LN@ML^R2_E+_w&dyBiz}qT#<0M8#?NxzkcIG z^w(E8WGdxuy|mA2CFe5|K2o~MYM_xWf;;Z3rZv^vitBcILdlg42kX!5v73IvX#Xy< z4DH~H_|WaP!p6pl((UZ;V`1y=?cPpQmXgb5pIOsiazjjKBsZimSqx%$P|2MU)JAe= z1htXe89{9%w-(e{$*rZoLvrVni(2_7)!4?W78jYMtAl^t{A+bf?p7kaTSPV5v39l7 zMWMU9n}4krk=zo0kBDl<0XGkIbQK| z&Knh}u0nugi9ZI&o2)UrX=Kr~EQ0w zPOWSj+D%FrD~0IL%I?T$Wdy({qm>y}QjC?+&8BN@OoDSTumVY*MVnCS7?o@^54PjA zMQ|#0j1ox%NLlDZi1pt}b?kj>!QVq2d!rt73VT^LkC)cGAkv?ioWD$3ScNtJBV@^J`{!^7b%w(=O$8aw>W9nlg_U!w2zcS zmy!6eK&Xi>fet99q^Ihj&=17Z?4Zy&v6G6Tk5BA@h)aBg?xPdlod@w@2Ii_Oq6U2N z4vKvbGfJqQ%H#;#qU>}&Sohu$r|iTw>mEbQItmTIj%s@n}p4WZk$L<}-CC@ljm zV6K7@X`vdPfG6|q)neMsTB)$cv>tq3d!3x_Ni$YvWuo5mB_oOQ@5tshUgwp>C}$&9 zPg+GGzil^7x*k`1__2{~q`zcSIJrHXY?c^YOPSAIU*Y8ExC|33LImj9sq zgKYq>lK&Y07ireny-3t|LP$XIQaU>zDFbPPBhvV~Hiki|3hY_b4p_!2#*eQzjs5^H zj1MEw?wkB?^Wzk__7{{a6ssOFO@kYC6JJf$Nw@KLis)92d>i=lKhQkJ-XQ*g7*INi z1XKYthK9Z9f*4R321Y#@bHN48(G0rKiO|3o-y#N-qbO(B5fzwiQ58{H096r{1#p{@ zW7<0S4x6M=8qrhfvE@cUTbL_bmT8+tXZ$}jkFno#S_7fBI_yO`t$|RI9QGm___Q_f z1dB@@96DjPxEsW+imR-F+2U%y|G46&i0!Y>JceNdIDn&GZ614D3}J6W^@wd1=T;wP=O^Yd zZS}qk^BApOiy`CC2DBN369V&X3%6N9!3taJBc-S5`Idi~4pt*3517P)Rs%OyhLRsN z9J~u{TN}Y1h7s(PHiE6ps#~{rJ^+cB5_OBh6kXfYh_|<&5e%nCyNzG~A$wTA#Lj|D z`K6I@+rip_1nsaQvWzByCTui`Obadx9cJU@c%{D`3_bO)+71S!lxY*XLDsZMJJ=PO zHXByL4)!i6Yc2RIC|+~J);#E%+O#P~uqtW471X(K6WR&8VQ;;)@C*h@poqh;#U>8G z%6svz&0$ppIL%?~D}n72Wf!wz&G(|}nkBmwyp(ZV*-ua#FNqK#$=iGg=n=r})V{)$2oEDN>s6Ry}% z_;wwIV>2Dl-D2<30b_jZEFEI3su@Pi%0jz6^7@dOo`=B##f7fILAy`+Y^D!%Pf-N7 zD7sYPlU7$`lDGiPRoP*6AeKU@u+$;N7W=+ZV-v;%OJ!BrSlHu=3X4ct6&4C;yoa_} zvK_+4PtwLh{sus6uEZoF=9JxeC_=z<0zqJ&U?<+yqk^Jm)HamO)N6^4*xNb%5b&&# z|7P?KDl+Fkpa7xpN~}W(fOux{5iv?*DG7Fn0GYp#i4K_tp{^f&kHL2+BT9;|E+`H# zd8=rsEU;_`z*2GW1yN#qSsy5^v4WA6r9Y!ZN92YTJI*i!mW5!g;p-?-=wNmbFbcGe zpnc2&goI5--ch8S_=xo*_7vl-W+SN3khC)YaR3#xhNQ*lfF_h2_7pT&LI+H5{tD+m zXisTX!!2YM;#dm?6r~NLcdxKZPehWh`0LS3spH11hAoiA)0$>~%9HHIq{o@(Uqm{gt%Y7J%CeIu^#;`=C(-dv zhUtl3hu}67Q_~jhvKDdyiRwg$Ax-HpF&o4gq>V#GmSR>&*&k(^h>{i%V}69Skq{Up z&CC(Zjf7xg$QU4DZzKdWL&gFLgCil`*~z0j6y$8y28j_k!=xNW$g6-4NDZkdf9$Qr zOfCaNSwzt#(nHQ>_a!&X9;M^=qhqoBc-E_|O2H{jw zL|(LvuH%H(c&p$%L+3Nz7@TJ@;IA8rWoC5|jA$@jgaM6J_h5c8{%7Y0@n4-^f&ZHP zD*Qi_AEOyNQo7w*a0{AU7%Eyr4=VWUO?lUUqiH0^0}- zy5_f-nt#X(3pH4u9;}VFriX@TNT%i=8mb|gntv!yLozl0&@c_j)cixkH6&B>59Mn} zrsh``z~CwqhnHRRs*?cuMt=DUYJMf=4KJ{|Yga_R`k?<>nB=>!oCT0!#;gX1HbTE> zjLrS-Lcb;V@k$>=BQ)lUYi>kp&u%H7IAK(9@r2LfdLM7i=iY>$=Z7zj z=8$FLm{E(z6xn^t?b4I+&WJY^@ivR#Wt}hh0xCai8Z$<^&xMlR*b9C!D_w=$aC=(z z7>7Av8fQ1%(;aCFU5Dw_V+A;U%1$=-VLsdZWQ>F@+CCcWuvfdKyJXFxlx>A@suYi6 z!q#n<*)D)N@d)~A96q%=oLo=ST=JBiykNs1witd{ykXKSW?1j#IUnH#l;>bDkR7@9yH&pU%BYJOzcvk0k1KdN$wK3tnD$ZKyEVF!axce82EoNnh=C ze_4lnn45|(Bj3O^gXhcr6K8dLzt6YI7e}ly--ipweZ8a788lS+DeUq5 zPyXe?qdU)8{vl1d(ddRMDCu#UhR<^TT}FC;dx`Ygbb5a|SbFXK@vF(5UOVxt!q2Dc ze#2ntrTV957q;fzSJ;*}wQxIr?RnwCR9;=~JW|Yqdkz-rJh-QlG-w!dpPUuIk>xV& zXZGR{_PU0Fh2$ZuHAlGJIbhv6V0k(r?k(oS^sdz~v-e#*a{OI|a948Xz${6ZCGY>- zui?zw`KUW(^E^H$5N=zCFLuH2((s@Qehz%$JU`F0>A%)+^DXTfamhw*T$toDpkFTd z#6jTq>GW^>9mWRU>g8Fh;k6nr?HYb{_~lBUW@O^Od7Mf>+AW-KAz#8Lj8|}JmvENh zNBB++U#`48UqCv!(&ye-hJW$PDxkC~ zw+4a#DMB&dq6sRv;qz4*{uvFIY6a|&hF|9jKU~x2dKdifboej2-~}4~6%9AM&vW~T z&utoR_`e$X=c3zOjTpRTzn9sQ`$xJUZuoy^#(3QD_cWX>gL#^C4i6Ik?=@mfhjC2! zdq?5}k30RM!rbs%bfMhgs~m7=`nBx$@VN1OR>R%ttkZ{JxZ!@y_e_VhH~5ctz*!Un z|3e3Sgaf{a8@cf?eOd}k_~)-9bRhh1xH&He{D6kL%XMs!@PEdQ*XB>+*vOL zTD~wmSHz2i%#?JO|vF&dUzClRob_;7&ZxJK)ary%SIvJj924=S{f^9B}Fq27ZSF z?sLHD=EL^FpLxulS_2Pi&xJaGft!Bp6&Kv}V>B@GG2u;rH3@Rn2{--KLKochS7{gA z^h}hj!=S&llVIsNXvcOj!sZq1E| zCQ9YZxixd*^PU={xSBYZ2xZcmJ*P&ln7>4Dljvmze`L87sNkr1kM}zaVc_`;u1o)NQ}Xdd<;?HSe7t(*Bh_;TA)}i> zg9LLE#^b6`K{@A14eAVqS&5nw9?fu1MfjFV9=0G3oUuShNu_q&Qdw*u#Yzx;%>S`y z$GR!^OX+N>`mA<&YH^kcOLa{HxdbR%9T`q1C~R4*Xq!8Q)FKHXZ*buK1?>=6w&4GHz$k zc`}dcgebQ=?2lA@nhX0qF&%%Li~gqkCh!jtF&F)+0xHA{Iz!Tr`jLrm=ru*pZb|C*ou{Iz3mst0{ZTyv*^AcHJo$!?uJNsr z((bS|brp_(t+^rG^p}ePEjeBO!!fsG@_zA{Lc4EOxUs38VN1Jf58K}6a8i9Xob$zN z!`{{5@vFj3|H620`tS$4Z^yrYHNvYG)#H;-xS`hCWCM?PJH1~zaHrvge*V_MTLDl3)!ydcixqXN*G&y4& zZpN^ikA5z>viabrM;v`_-%tThu$wyyzSx&Skg1r1Sc@PxH1EG^#7@M!s~hnq*~wOf zDN0Ta*o{+)?BvwP@CH9jjoD38QNob_tet$u-+`|?_|+Z!7jHQY??Z#9S9)tc&G~B> z-JkKdk4k*zh!6Eo$XS6@Sqm%zn(~@}E#8yrvEVy=rX9!MhLc;r(KLDlw!PSA_Jxz1 z!^!1g@6KtXF!2M(-Y}<|7kq?+N5GZS3CA*rUnM8uG4cKJ@7kCkdL7N7~{@=j7A^Acc<` zl53myT{WUjU?VexEh3?QK>}EdS}_fWisv@o4r^3!eukMI!V%if9jg-ZO`ZR8Ud;$= zoJ_xW=4*#FKIE@|xuB+ij3aKGOuZ1PVtw5d%mhFCC9I}t=f}19dl;*Ns<9A3@7Kjl z?lH_C?s^}8vRxsu`E&fn3e`k<5`kP~kvPev*f{Y3Q`g+0wu{TE6PqL?7DFXAkHbQQ z2mSSS!z!QMu)N*IG1TCc`JG?EsV6-7l`>SO+&h#^M1eUu+k9FS9@OLn!kKhqY zf1Az&KZSDz7Lv?+Gy)el!eR64^POdYoIr%=9dJyAS2cIhhWt$a10;_uo**q^y_jT= zZ50F$(zz1&bz$i}*PxXZ9$F9AM=10etSn2*qC703(s1}CP7uyO?HTYffIlD@j_7RW zsKX=A#A$l;KnMh_1+PK(V40AutZGI z&zn%~5(>-0bSSuhA&@}PWX)S4LU2v11hCS|pH+>WNks@e-A@dv{cZTK@xO-uh<_RW zF~M&|vA?B9BL`fL0usXJRja2%lMgHXdSuFdpLikL9;B8&gfDFC>p9C3V6_Fp$O3+~ zbEjuH!B}$BgY`OTERsocnK+iog{&T~j*DWwU=M!jGyGtt)3Jcl>VYe5HXtAkD@~5X zv@n_@17e+@q|74X2MCt$APY&F3w~cyH10XfjJU;u`xoG_(k%N@ncnZ$Oiij-*3P_8 z1Bk=zic3{3Sv@=w18irdFECB!m1dK~uC#7shQ#KvncvH1&Q=;lYthB9>RwSR3=|sC zg{n%e9^jG&PQa&v1w*4xGi^u-R6F$$esMh`^6EsbLNLhkrbPEhw0l*(AU9BGXL+r} zM#_VTzaFeS#fQJS#fWegZ47un!SD<9ng{M}k}c&x5!s#q!ilXuqK*1Q%~**ZACO~f zXUGuQ1e^f+a{n?gMEFxaIMWbVItWUmf^he;@I&H^1i@;31VJ_-@LV|qAs_CNAOR95 znGtFSRA^JRhJDmU^j(AedIYu8k`A~lDyC1y2S4q?4`oj=mISxbOB9PBFHJz;nHF&= z+{R6^$evt?AWIe5C{YXXy=xQG1?Pd}C@#WqK`7|EOAA0Q0tSDwoa9gVQ``h@#XdBV zI|~&mRunlPjdpySNOQZQ|rFS3-BIAz@Zr3LC*g^Ez zDRe(~SwHwbHZ%haIS%Ym60$o8UxW{l*-??%;KtVg5t$vu@|1=Teb$0fD9$MNdB)&L zMNyKNo9%lb#(IFV$asK&c@J3{+$sY50>bs6cqoYCL$pCq!Rq14XD(#!0b{0R`8>t# zDtydFyFet+L%I(H`+(o9XXzOz?0dMEwdXy6WRnzEjrP35iaH16($Am-c=Z7qgdL>sA^wpmqy`|Lga=Ru z2ta0-j=mphb0=C_IA$YB#bbYJz6m)w9KU->?Ka5Djc9qGUEo$wOqyYuA3%~4G;tE` zF>wa1B+*S4W@BQFB6G!9X()wA2<6JKHM>?yA>`c-FBz4Cm7x1T-2)ni6;TAp6Y0On zxVz9IcCmC&ys+4_u;Uh%ZzXdU20YGe-CVdC;rnwTxQ)^dnkHgr_;EKuTUh=8;IWmI z$+2}{h3aOy*2woJeuE0J%^g^}$R&>Vfk<0t_>OQ2R^pLa(meVrwoaU^oY+QjvTeln zi4&qO*2#)xD|@y%lw8w%TOLn0~Q*K2Jq}w?}p?F`2yEHyWhL6 zJh`(RW2w+saN@H^LSF1nZ3#E;|D24@Wau@m>3N{^(X_EUr;Wg%s^imk^PvKJ#Hu6* zRvcY4@4LYsaT3F|tJFB)bIGF~-Bl!}hjC#=uWU8*n?M+g>ovUbM+t_}4&Bk4}oL@p=C8)2oYWhuO*Y z&LSL+$i-Ly2QgY)RRphsnnJs=&`!dNunNCa0bqGGBO40^!nMwMfDEZAwEkD&T!9S% zYzSc9n!FztE-nZ+^cB?%yL(mM9o~`@Kde88g(GhfjZ5~3d*<88Lt++y0i)w5Ct=8F zyl4K)-kPt38&-FftU-is>n||W+l#DlPRxi_J9*E169FrwpHxvm2L_s8UwyUR_^l#T z*l5)5wf2bRNDqVM1U8g6+oNy?FTL+<(1@Ne>Vk3Y-%(a<5aBl8Q&M-DHNv+Zpi_8WYgHDJYDi}fdF z@l|GHc^O;1@mi4&oeB9x0(j;I_l9nd??GE_W z4tT-=|C9s%MU5iUan9BMYy<#!2zQ46(p3T;06)OY@VLX*Fwq?F-*K#|83liX|0D<8 zNgqiBf2=mYVaYP)C$=9^YhzoAorI~?@&YQ!@)S0z4k5%Hh`=?88DZaH5=eSR- z{O+9i<8z;Op8ucme|+BKHI;Mb*YJRR6=NNrGw|dWU@&-QXQT3WWr4H zViNw3=iv1JODEF*0)PS6lwL9cpgyyDzzP1Bj8+@NB?UNaAGZ|DylKv3m2=}fdp|=E zk}&5?ErauVgUrGAYSLEcr-)u@W^r$;yycPjQY0nGb z&mgXBJoOq7grD;<^1-~H(ed3hNa^_FoRQ%+`5W-}5I-0GX7bs{1>#SUYvLRH{{S%J z@2<-Zo&TlgmTBB!eE0LGTxgZ!afh9z;t!ZxUaaHKcSSJxo204F7+>#{_^LRADfWHE-20*%7VG& z%vF>ar#*(=j{k0-)5ta!{Z!NzG!ANPb8L`uJp zv}6w%23v_+BREY2Q=V#*lSIbVpZ^X3FE>Scn6<`~9m8YZZd?S1yIoteEYdiw;2TX7 zygXCPXL~y%*lkw+1{uTVt*Ep8!3gKjPhvFA&20fmD4aa1D<*=e&B;yE`glq!hL}hr z;@w}eM$Qf7-ZDFcNTccTfQ@ZeKo7@#f+l+-LucdU-(*_}=00J1*p~;xLCO2cu7<;w zJz`sV;~j4$@5Ftw!!WAG!1h8#?Ey?-W8fUb(RH=!%Nx!OiC2~Xf_O%fn?p(LdwR7R zB*CQZwGrzZ3x@JmPv?{9Zw->dDBB)gu}JDn1lsgc-TksWXCt@)v$6%=&RNK z(eZyqVnUnF0+W2C5lN#4-;a2)r;jN&z9j6@B(yqW9TcXl3j>7 zdTa+W#SShe1LQh5vy2*C6+vA*00cr{Xocpvj@KcfO!%)iO~QQm85eh{OB=B(KwQ-5%ODnx7n91g7FA%D zm)rZ;r0gtP0Q+LHQILpXx*b~)xpVt9gc9Z`*>z;<1+KS%b*4QZrn%c;HN%`L|EKz3 z9jpnY;O>e9+V~0u+UYZ+m><&vViJY*tQXT>vJJi)NyIl^2NM`iN8yj>JBT-Ij`5Qt z=>1uG!wiWH)MBpdrTG$O-1v!4;cxRb^rm4FpxBO5M8^lMwecR9BfDU-jc+W31BS#{ z$6w%Y`MvPRJWemdV0sDJ01IxIkEgGL1C}{Ldv$K{Q$T`;am6=%Rt2Lexfh1dD1oPd z0}mpNw_O7VjB&B;L;*oK=Mn#aD8P0bZzBq@RL0gK_t*j8A(^09oL`B5KonqVj&C9g zv^&EtDFr3)1ERoGHWLNp#^Osc3H*R49D`#cQGh`^wwEX%2&bVG3dBXIK<}f-J=Q`h zAfs$KiNbD#6BIUU6n5YZV{N>LD8N>$P(U!wI7%@I>>&yusiFdC6Kf|52r>v2){zQ3 zNd;uo+m8w?Nrnojj9z4bl>rVaq)7$j#?yfMQ-Q?FP(gSBK`usx6;3K3vv?1wzyb>j z-~*|MUlSE}kqVng1vUzBzCx8Ku)t^->I@ZBV=rouOsgt_2yP)25Dd0$t2cunD}v=f zvyj@1ZDvJ~Wf+GoBEGp0xt>F=vGjjcD#mBpe!fH6S5Cxt#6Wc=^z~)3Xeu_A3;q+o`-@W`l0#wL&Wb9td zM%8^D7JHNkGszDZ(McInH<$MgAQ3p{!NS`X?rXIco-Tm&YTgICZDe9GcP6Kh%!4z6 z2-Q_RBL>O9N#|a$g`ypb72m=G1rVr$asveyP68bz6lNger%^mo7old)sA8xdgn|#J zFnTf17sceGw7U2<5kANQXCPUz3oPbw_zM}>@>`e^$PF@JO$bST2qYH)f-ty~1G$mZ zXW(cfsbSqGv{&aAKSNR@%lKB-HiB_BT3Q5wXGrP~;YgFzhnWXaKoCwx#yO+db%EYQ zf!@cFdn^S!Boh>iMT(yx3QT4zQD7!GK2BlF zDxmbe6eLn%h8NIGgsY{G0GXp1USMr!cmeW2s)<111u~TMg{wj2v*ZN?QJl_(&weoW zw&4M3S>Sidy===N3W&{?DlLcYsTce(2robY^|C_9Akq=B@85I{;&SasY&mg27*zn` zAZr_V9RYl|02Lf4FZ|z&Df+r+MzvAUw7|12G^(9$&W6`TMs?G@h3?U#5aF#E_0Wp& z*|l^A^&<+KwaDrnWMyP1MK}U1oWUUoB}obq;VD`U14683v>XInGGmzz2#+h$cTOOo z(`;;LRjQ}o07AEu(4y~v%X<-qJe}2dq_Le;(5xOnkwev{pT0x#6Da!5Za4<&JJM2# z0_iXM4iy2>cMbuMjJ|^mmDD>0hjg<*Dx>cZNC}LiakR4WE_{u?BgJHUM|o6F&thiu zoeUMgQ&}pUBo##8VT<0VGK-%go3SKN|oeQIPs%dq+vAy!WR9%bB49Dns-g0#B0{NJ`Onz$r@KVSR}=*iq>_ zR5D@*?nP)+ket!?Hj-gxrmgnZcK{WU1HmB;6tV=>$?k{Z4A3ke5rsYQ6_K+U?LD^B zh@71Oi@u{oPJ3400jgc_?ZvW?x(7cKq-fzH9Jnj!=5oNg*`KMRTXdf4&&04eCWy&# zYtgl5a7q$~Uw1=~$q&w*0%a#(lpP96=p0H==F{WB{0bs2Lo8G?S(?i!Boy?z_zCbi z%Y~q`^F`T#4rmSylTi*kJq|I*>yTjY!<*WSbn{1$8bojWBq%x7h;<_<5EoH)z}hkC=C`8W1qCozwwnju*=`<8 zAc`-6nQk7V&aCcz9C0(!Wv)<$+j zkj#)*DLbc4={Z*a+EPj@@!-#M)I_3W+hM*Uv}uy1)yof zHWCE{;j&}tg`^WyErB)%j$+uc_MU?5sH+(sM2qg-O!xHR91o$v!yOt#W?&Sg6nqWvyWBB0?gD+mNG&M$Ylo~M1h^;)@$J4`rO!7G6M_1 zh9c_HRxuAb)Fq(G!=puA;)-NwUr>;~nKchRBIY69NL2R(%tNhW9tvar3{y43BTbP} z#kg`VNh$K+)F5Tf^r;nm&7NAtSM}5wy{0IyDavb#@|u!MwL8A z@MSF+Bt)y0THx>volEawyn$0zZx+iD#uizdiFi{qlE*}uqPHkheZb=ro5?4ZBglmq z)f!5iUz6pil`?@tE#YO#C9xc_XB6vUre&cu^lIK$a)|;;TEtnzh9;36-(2AQIi2aM7j7AMGf zq28~g+l1Tk2O7&P|9gJJE^CZ-y**EEl z)=#WagIOlolK%7AjIx3WeJ ziDA22cZ=t@bng$>!jHj^Pb(MD4%{~rDqQC6w|6GroBM#^Wmt$-ge0n&7@p(Y9Ds+g zdOGm@xn2{iz6Sn34bYYBiTOu_=Ux-R9d45+m!1;-bG-)Dj)q376l{}u93vTGP&;>X2cJ4{Y>^6|?15Z6ZzcMkiIx#a) zIX@c5v2b(Z@p)0t-1wY1mGL=`J|3OtnOTi}2Ij+kOx&D=ti!K-a`s$qf*7#6|9d!d z?y*W0Nb;Fj97sGi6DJcgc#ie{F04EicYh-^Wn$&G>~h4>#rxQ=zeWn0c))sh1-VVHY`?8!qCRfz^4GY> zw5%g4LH^ljMww(@6^~()5zQ0?do6MEZkqP6m*} zg6IC=xBL$j5!|Q2;l7oT7>-RU;%_taswUBI)((~4Wa_lwcy617YL`u5fMW?N$DH}_iixzIOmNxsE7f1Y- z_48)biZ7HrQEt7u-un5;Q1U}o4;FZDZ5mUaTGGy2eP?z~zV1Nz zh!y4D-F9O>R?=gG{Z;nRSOG6VsStW}pdh&VDx#L<`$DA`tcGI294ou~QmD~Tc~TC% zx{)Du;!RKX;T*PdYw|JF{}@jVPJ0`{eGTnMy}Y1vgpGCK0o;xxi_OO+ciD}_Jdq6h z9*El?`I8$F&%)M-$?r_YxpkIZdam{hD9o8nA@9-78^~0inj1sbtIzmt`i;A%Y5Ldt zI>C<@yw`0CjsGy@J;^{rYp#<(q0Z6eP2cY8yqW>Z8{Wf>r5}Rdn(pq4c+cWu8SB;4 zI2OQ{+(b&@_%@$CzAc2R=9UVaixzIg283V%Jl}ya{wi)oC!xI9#jz8MH{n`NG;a{H zb$kK+ERADAkSytr?17vp!KGx_Z(%nd&cpE(d3QqR4dqo}1%>)wm?s<{TM3G=DFp0L z+lFhxFjL7;(b;)b_>bg4hm0=Gs|Ug1*nyKgFjFT-9PN@5D`d*82WIdzY$NH@_`w}r znD?4Q;F`|pOL-~vaR{i!Qa|JW`k#phMI-c896Dm*G!AvZMH(MGmzz|&6y}U6yzkn-^cIxNh`Ly^dznr zPL%?ct`=PEg>~qF?h)u3fvzJIOQmoe25km7Y6#i4;4{4mpJ{$_ZUBdu0R9n@WzqQ| ztLrhL!&#n0+gr;xqy*ftwx1#2SO-YTQB7>y&yZ5AnRMoemvf^y2*pZciUP=6IB5pB)8>jJ zgis#f0a~FHs6fo0l9W7_CE%eA1cnn7GYiA8T4vEsA6`b?mUaV!_QRdNub_MVD~B9rCEx+IBv%YNx%s9WT`TgiZlE@ z7@G136e$JVTu4N6a}8P|O;VpCVQF33Yal{=*hLto%-SoY29068A!pYu$*U)i;q<6H z;YFOarMM1(&lUiOGV26Gzpfd&?k!mhFoDQYD0&FGJ?uX4^0#w16xrWlO4PjRWK2FlXX66MIu^Air>&y^txf7 zTn!0A8@%)z*Op$=ERN=+SRBnsn3By&*l$2{Qk;$EB)w2Ws>oXOOEe_ufKW=s>LJr# z;pm_|9u{Lds-4h%CO1AkW?JcmL{Z<$zLv?2f8;Aq9y@XvtNn1s4K+#UPQmAnEk+|K zNwFgwjy9B+k2amh6D~&%!DlPJB6;ysl&BRv2)T7Zec%Iogc(MX5V(&(?byi@vUAgB6h zO5K*ylOl!@sH;_Vci^l;B9XZcylVx;G!~zr50rxic_I^zm@<7JKRE}FmIOGvR@EV) z4@5W9^&avCVG(IeS;UQP*?jWzA;8K}K1!<{F-tP(ecCp** zC3!E9yxaJ>MreM5K%8_M+aSFlqW16@tu(kysM~>bDHPBfh=P;C8*XmN;d~^HfwdBw zN$egkdO?tt>V<*``8TUDW!6q1b{hYE!0R5ZREojk2dar>f#41L5jX{OhYn zO}BTbU$?g;U-hHWSMoU)Movrf>y_ihe2z{5x!l%*v{bj(ibzOL$pTlKc_qJIrJAeR zyq-^k259$5%lU0;Id2&z%GG+72xI-mHJ}$Yo7XMXY+koeb7mb_SNOPpV|rb4cimgU z+3a(yMQ@s}FO*l0)|}~{`uBS8@oHBj*#ZqyKSOz;BrcY`dgP}HEnF<={{C&X{o5#? zvHj15At;CKe`?|L3)d(|xBiCtQtHt(QDf__ z2b}r4r|Rl;zCQRlAJb;co7pgau`>|d%XIup%@y3P;t1)i}A2mS}enPaYi2lqs9+9>YWu#;o_cH?)7B8}h0CEWM=B8}e} zXE)Bn;V$z6P_d)joQ~7MUqcLj%H9f``(4j(eEQ~wt$7%T)baFa+bX+ZC)DS<7yU8i z|7bCQ^PqR*to&~AUkQJ%O~z^HDWHcmrUp4F!QB}gMsTGh(qD%7glvW$N;_Pa9!x3= zXyzUV9Kj1cm3FnY2p#<*3k*oWv!40F$O`+ToVX19mI2kW8@3X^rT!|NzStu-azM9} zV+n4o!7?Wq4)FAU9g5p>({B@3jwoe~V}E>pPclZJ?ZgM8hpzpC#sQKC0|{jRykx&e zk*8QEEMv3v$QUM6;LyzMw_^~45hN00;dsghZF-3<9Gr+j4v54~Nq~15fMXTt_bPyl zUN~w7q|7>k0Z5s(UjDbs|JDM#@!23MzJdf=4a{))id0MsFY`KgK z@gKsb;z;A%sz~FM*xYH>JeoE!Fa&?#Fd!*i%FDxgkP#B9XH_7LR{mi~9@{19z_Q9s zEEqGAQ~?iHu7Y56!sd+O7((-)Vpbu1cxZIMLv!WENaM41r19YgNK%YjFq%V+pF>^| zKe@2%23>-nrmd79O|rITN9C<{(r}QWO^2EBpU?MB?obx>nN6 z(bP)Bn#bWg&Y~cpx`@^*{?~{W4*&rjVH^M(y(Zq$zA>N%g58<}$VKUmpk-&a9y$mk zZt3-`p|&iQ+dxF@_=Hb}{UKk}NL<)|9Ri%}&;A1k?|_)O0mc4pLgnN52PMfZ&8osZ zPHsWVkG*f$olCq>CDct9Whw**nut97I<3rQJ?al50R@mTVw{bN2Sy zxe?$7WEz%&u()tF zd8`E-8hcNek!K$mJ~cL|HDur&Su)8LBUvt$mPuO^#e#!N)p1IcW~O%2t3k|pae)CuXq$-pwJTZjbvB`LOAJ~+FFI~OX1FzbjH83FA%#eOwa{xgA7gcGf_5FQ_vQ_~M3>HX+nz z-~jDv8R-E+;@Ce@{v#1;eZ-IE*p;BrW|E2LmqFVCF6htE5s(!46I1THwC{rLz{0{< z;K%3(hHr#2$NMuDl^z%8sVHSukC5!3{BI-0q-#J?jtk+A60r_|K}hmH^@wyce%N!Q zSd8th3#talORPvVWg1^Y+H|p~x1z{O^*qg#l)S<+eDInsLck-p!zi}H)G!#70^pzs z01_33b);rE40U)wSd3NL!dADJ#KDXLv?Q_?TnPR?A`T*)K9T^u3Z;vh@F_z*nLOa! zG$3k*R%XuO28m4DgEXiY>U4q{kWFp!@vg8BR2b+9iYcg&qr=v!h1k|(9}z?;kKIEk zyi)XpEJ`{Zf)6KRb?e+ff+8^Yv;C0w^LvnzOv= z<@k~r0%0tX;BX-yX9m`Wjavh-jiEzsy2!XUJ1#L5u_K zox(BH>V-|w<;XQRu?r-@I+B2F!}%m~jEim9jt1uzS!tk}AsDfX%@7T$n7JO1T=%nP zrfao?;~K8mkQE7rhn!Ms3t6a{EW|TIuy6yPiaHnR-_B-PC`SWC_GprZg_K}|L^3o2 z*K`Zl2zj890ez(;YI#ah0gJOF%x2PxD#BiTa5YA31tA@*9o{5^$OSc=)0Fi++?)gwQ85pAghZ;9bs_9= z`lwId45Y;pv?GWme6AHv5=DevmR!;&{n-H$LRR8HxCuL9;OOkiKqM^+rIWvCSB4(d z&0K&;Q&WOyi*OBihg}&)j=CQKf~rS5E`18CPnZEHk%_>{(x#wn;@Tvv<03sEx%F^y zaF$VgvW)~#0{pO|DjL%=A&4|4ay+DwjpJzxq&}!!LNll*N%!$@FDQa3Ti}6~B;(`s z3V?)C(yy_RsiB<=pmUo(lrkwiM3Iip=u)PScTLX^95@&u%d`uMIOdmJ#9;~V+l%eX zQi;?f*T8I{)o&S8E3P4}(Ada8koZt)5q}V_q1LrVMrIger_~X?4BpBn1-1b-)=;iM znZg(er-MIw>+bsb^h?8*!S{ynkbd<#bqhLzs z{X!6~=Ry@K%?+&yExsA7H19O!z=pX*{2fpSQZyyCj8Z5~4K*F>Az7$wbGZOU^1xKO zeXJv(HV%|og#nLHN~w(G8nN%N?gAd+r>qE)HVHcsvU^RkW8SdsyoThP@moQ9VSR-d z=|C>wsC8N{A$J@|1L$&+3`bKUe=dUK^uC)z7y>O7A;f$})d+o?;vrFuurQ90GV7R- z3B)4JAg}p4#25HS`r&QDL>N{|w~PKx4WM?BmRc)Ublrgv)NmBpM3$cbh|HwAKPA4` zfkNjLX2?XD7)dHoP8F$8|5&&JTht7xqN~vV#xwKADZh%q=jT>~M_6@RC3B^7X zX8VYUzN9Qk;63)k=($yQCY*&zkS53x9v5b6!L9oHZkAkWjcxD|O+b;Tl|D*Pp%J59 zk&`!yNJL1C?vyS|4G)V>L5EGC!%Cq81{`Xb+XK)#QVWAKIl8oqW+#Wfl%uI30ERAx zuP!2+oYp@sr!2Epk*mwIjIuf9-3}LvC~2ho=X5$K`j6zV)`&4yZbW=#S#du7Lkfr zT7dwkgcKP$4i;1a#D)hxWfZffv{i_(RsNw10f(hBgMgghl4$~hfJdw|ONtIBbBK9F z2%(rmnuSsZNeB+x^x#&QLn)ACn~f?nnGRrP#xPGBC}W$@fbEL1xjzk#ND-N%m^B8Y zfruF@jQb1?$a=U~S|DXsyOdk$gD5?y0^5+#pn}FpqE*kqrKZ6Vp@GN{%nQ(Tr243L z$P7CeN~w54gKSBq#j8Fl)t?z!Rc2y0XJ*C*o^2LF1GdkBe4s|58J*Zw#LM9WL@|7T zW!$PU;NS3p*uRNZk+#%k`Ct=EjQ&o9gcyE41|L97lGESHn5};^Sisn)6>eg6)`mfr zJ_cq`>(*KO!Uu*0zz3?f2k-%Vl-w-PuGwr82=R}L|i8>%lPrXQrx@Q2D;SDBl@teE!>Mz z1glV85pqS7AUhzN^H|5w1M+|mkcDaj4-y@aAdY3i5+F`}Iu^I0!0Oq! z;LtzSeY5cX>#Ohl%96*1{q>W-C_n#?I~uNkdhD~;T=#bS9~P{6>(rx%Mm+J=e^|S4 z(f@q(-@bBoX>a`0ygN?Z_Is6OAKdqM|5?@!agN=r9r`S%H3#k+o?2L+*Kh66`7ycI z4r$Wnd`$xMO4bPdy`m9OVd+fxN(Y?lMGSoA)%d`}@XmBz{~ZAj zfcq3!;Ea=baxLDu#0s59s%JhqXW}C_&Wb)2i_b|UE^~p7UW7BrqvKba_|DZj#kg%t z2b^deCC1^dtV|&;-!TnAbFJN}@ToLjbtR?ApMkOt2;&O2pn&%CjzjN&l z^EUaLbZ@?8;>6M`Si5uEq++$0$9MVrd_DSJHKG>eAO1&zYP>1BhWA+Q$^F*&p~%`AkK25aGv2<{_vn0+ z_e?^z$$OA_LGm8t9l_38=8ZkVDsNs!v>yP;8_mDQjXUJ7rRI+LIkRFBRW=WpY%ZNX6Q9)hbe?2U zkj;XPWMFBS#dF7A0F|@%8Yh)*Vn26|t-@MRRX|ODUOsf5SQ}ka^XS|zPHIB24snj8 zvsIj2F%@eU=V<7DXT^0bTq(G)9s}yzys2Zd-&OqfWxp%yuZya1Iy9scq+ycyk z$<3R32Y}t4@;8Vspj;A$!qNr3OS@iCR%yVNm_Y;gIV=yyePC0I-@px2eMEIS%r;!Igi-Ha{&CWiTZdqn;CcyIO{%PMm^84)kM#2! zdN3D|)m6j7jOefXgSzy3phz+Y;g8+j2>BpW$F(w0TTjuba{OnU!~6h>c@*==I9P@= z7SMKKq{SgYsI&O#kr)TUuFJbnNkp(N)8cV;REgZ$77**Qw-vP zY6p;AP1aU}I))QiYs4&2=SmYQoKGun#T4iA#N#u;2p)4n6 zacU&8yTA%uE!lA*E;>P2m2=uKo+9yqM3tEEff?9j%O(gEQGQf>9g^r5yB|?4xlIQ{ zIZ&1rnv$$Bi;QGxrIHo`JD@75w2*F44s#ep#bn6RVisyZ92QX8Lw7@JNW^TRlk@q6QNZLSjiPBnq@{k=9n*)ArSt z_OIu%=jb`oS9-NQrQN_jK!6|#8~HLCK7xc8mq7RklFj@3-7~ZMvgWT=YO6n z*=L@6?wPsgo_p^3x@YD+_%D19akV~_UV@3`QcnAqvCfrn{-cxzqPHMd?_sq0dAJ`! ziHBiPRpayE>pQhnTgV^g>}#In2Y~^+fyDvplj25FSwdLe_FOvFJ2EG>Eg|B1yT6h;J zc}5bEsj@Q6b=Evd06mmO4sS+2Vf!KUDX*F*l~-AICRmHJGwAue((Wi2&Un43RlHpB zq}4nXr5gb_%`Um1y~;u!&s?S(71;sk+YXJ+IQAk3s7j@%ZdjE_FWCn7Nf34~A_?yX zrC)XP3rq>acChBF1tfZ{%8l@qZo*m>Y%?>b++}}K8Xc_0#>TRz)$|{}*d{!$+9H$y zCpcAu1jk&d$g~XD0+|3&3wuC6TP7c8RTpwaau>*iCKQt2fNu#^Ln$k48A`tl$IoLb z8)SSPjxx-qmfc%!s4r(^JTw96uLZ#*{53_mWQK0SPAC{?KqhJhSo0)--Y4o@Xzpeu zZJd>~8U2esz|z0_+jH33yQ0UF{^YmVghg8#r4|w4O|gKO$HbD+GAzE4d zut7Y9vO_BtK8nhFglh2!)gt6hHg#e;PPJ_(siQD`P2BSLpJmlO!Jk$JjRh$0n}|4p zBe!J8g+U!)Zsa&(Kh4-_qLkx0*gupCKvgKoNB|@Qb3EA}%%)6EuP$$!qv$G^1EqyH zs)&sPjkTt^BQRdSN;*9F`ZPlC*#pksp8nmR@FL7r_30~Dpa>8}LYC_zNx+v0 zC_E|+obiDlZs6r4av7}MgyCD1{-hEGge@xg1Umwp*Gb->6-@5{K5@(UND*MiagGa$ zI}E`w0l5AsyK&_(W4R!$<6U^uAo4tmpihbbI@umdZamu)O-2GBne!}yT}*{#kGd+i z9FVT^dQhNBH}1-( zu)`gfx!&*>KwRHjIhldRrF`kBlu3PCaPrJI-}CbLA^@d-E<=r2Z~UKBZ@elM6NK!i zZxVmx-zFZC#wS_5qVo}hum^E4_9A{9dl1vH7x80o zq`{F4k1OG!(G$P^PR}UJLXJl0Ts_YBjI@k9(uU`zxu>QTtVsF(pdTbBKa}RqO&fj( zJyJLAd_(3h?z+q{Zs4!fVIJmtW?IJ7w7XU$C*PZvk&Ac%a^wGH{PUU5pD4~(qd25> z2mSD@=RDkuw6%i3yHMl19r&#p|D1*k58=LFobr$zq}4p+Egu6n^~K1Vft&ha<_rzo)C0G~qT;s4 zKi2^_@jvB&oA_UGz)k$S9B`u#;-1;5H|oxRq!54Ovhs@-spB`<#4T|xDO*rnRhkc^ zZxvOPxx}k1e@SIUQDJF*G|Yms5?@ham72%TFD@-FDdH~N!b%?YnGf{B`Huqo(fo%B zi%SOV|JAV-7gau#k3GaV7xW>QhSBNR9vlaoyNdIR=i34qh?ByLtW*@06yCC+u(A;8 z*>@GoT12*4l*rE4ixS!SdQl=9n~DWzym5>(j=HX7{U^*U3^p52NQ*}jY#^bs!Vu8KXo7J&%(d`DbVR( zYVG8^2*mKtC!)hU;Z9thJq*}@wG$VW9iC(A75z2z8^G`2h?oCVEk8>&BJ@CZqBMa+PE^cUxrXfW;A!aS1n5?e;s96oarEjr@MadAds2PP3XN&2*! zRgt*yvxReZvV9Hvi)gThaUsx3Fg=3#)B*(Lp5y1D)=X-bGqZ9RiNUBWELD$#GMP%1 zML-g>k5TQ0zcL(>JqVbnDa8aeG8oV#bACds=G56svY~+XaWE}}hinZ(hRVPnWvhBN z31dANYLvGNLeyFaR634W0%TJ9JE{CVFTXqF*Ggr%%<&)#n6?6mjmRwqn3z_rm7Jc? zl+pN+`$IS)29L!4dn3axFF@FbWOfDC+$9(zb7u!;?mdzh{s3Oy7&ESFBuwpHp#_(= zD8$r-+8@ACDhmld+^NhB2Ax+O z8)DUF&N6NRJPSG=hZQ2GtjJximw=QgQ(J{QoNT~^JF3Vmm{KCcl)qAB1zC7a=U8O{ z48<93Cs z0!^e@A7Gp*S1*bgE;2={ZxSb7@0jM>^vmD+z(SeHS-zFK!Gu9H5ma$MgdilCcG3T%0?iWWR*?5C9qHj zS20y1OL+(+?4yjrh#wgc13+N`EvNN~2;?9s)xwHNY9*|UE63GKA0@2N7D`yD!%AS_ z%{gqct5(w)71{H`E;$&13p;aRctfY!$nr@a#+kM z$;3(mS6@U1a$GcE!`znQms$uDt*B1Q#X=cA0}tpMvJF%(k?iW-zqL@LQo%)DcF zM%ue4@Ius-R3wTTP0fv<5N+%^;4U^OQElcQuBUN2c&(`siNsvAI`mJpXb&;4O9>dX zb`EpZ5ZqE2vM&;xBxF+h8^W(%t{#hN9bed<#rbzA%}Hr*p8y5m9x{P4#d404H!;L! zJ0RM#{4i@f)FrmIse^IFAQ|)rNdxq?Zn8|>g=XSTM@~h;q_UM?T1g59#ZI;tOieH0 zDx&Pc0>`8k_$MF~Levu&}r1swk2Y7J_ra!qVg9V>^G2QG%3JGB#f$ z9F!sKG(Gse08Yr}b=f%5P9edpE@)&apr{ZlCS~>3W3eyqxO9sGlDR`cwir=(ur(XM z?NNbJTSJf)b`vJ0?G#am=%GxJJ`|jsIl<{*gib?U6a-3xSS@qwQTe+RFD*&~)mW^y zbucsB(az~>uvV46aYaG!#1`37&h)? zDE74@56AF>;+6BLWtWXeKifJka>=IXV_?xK@`;<*WUI{%{* zTUp6fyCa|~WotZYJ?j}rM5?pEJ{Dmexk3Ko7zx$3+P92=t*my($Wxr|&6Q43X_QUY zUr|?B2vCOpqOLB0OSVH2xTgft?Kp25kV)z9if}>4lRwAggBt=+vabng`$?MYQ>;UJ z=m1JV2E;EwKk8GOAgle^vY|#Q2s$S0g~;Ap8vKLUeTY|gfVs2;E}+(`wR$e{QeEe` zWWfu?N(`jch5S-?KoO8as8x|0u#UnsDeVo?uoeHkQJoG+LIDw`HJJ1^^d=?M?~u+M zbvTMebt^=;I>0tt14-dRZ`FRP0wAZ!w&>n=R#3H>M75A)RSA!g;EphCp-m6X5?Mzb zQHotQXzwC%K;k&SoDgGc45d>N>!(E&^C)YSINcb&Pf6e>d$S9uB1=#c&=NwrQ8#7x zQT)bFv=oF18@4biq0+Ktn!Pb}ca)A6VLA`4*ml^EZRm(71YsL;O30*iwdaUsBupW1 zWQz?N7YZtdM=Y`yB~q%Jz{O}3bEVV@_86ocBm>pXZM1_ZOmwT!5JJds&Wm^eMtOut zA@CSI>nJIJ2`+Du~Pj|bs9eQDu7U)CnCKlR5@ls4%jH)KZnkJ;03g~IwwK4YoJj; zeMDiAGwfeMhNJ~VgT!s^h)~oK>y;K9z@-x<>WH1IcbOvlnLtK=WK!DWnY9!Zwq)p* zsIy4WB{v!ekPA_95ebSXE~q>9+62a(5^;&PaE?xuscz~RAl1U5o>4zyS2DzfeLYNI zpuA-5n!{u1C$Mn?kbF_X6YV;of~hlHSi#iZHZeMJRIOMmcb*X`p^;WjjUB;b;VIgB zY2`Rv)s?E0o$-SpUG|nvN{4VkPhe0fLMw${@SBhvibqv788|}05HczKtSBipa8#FBV0$34M7uZ?F75U>ucM?M4(`|n zVeDO@-zdEVIXr<|0@=$!P&H{G^(@wblAY~p(n7|8rURv0HFg%*MJ(agXozhOqUP}l z)I2h{!;wwQIdUScnH-lV-Ek2l)IL#yTJL;>f&`wR=-5F~dK%*fRyPO`xO0qtYITA;B_KqgOUBbM0dh`14D3A}mKyjLQYG(c+oi_IB1I5$LMEk$ZBnF8 zD8~qfWZ}R76bvl_Rh2{cTpuYV6-;Cvvpy6dkR=;RcQFs>Cd9f(JVZ*3N>Fdq9`0Bd z32nU?Rl+y~BE-%khM!W~*1|n0ZQBXFc-oN2&HK>~c?Z!&b8_?t`lML5f<=%mN;t)h zEOJbHIXXf>unp`$Oq_~_Am-Q&HHJ~_0;51I6^QN(m$GJP(RYJjRyW!IFSQNLfQ(yU zeX6%3^Gp^Tx`OaSqb+|I?IWa@`jaFf!` zK)lrK7D`4=wUMpJdV&i{a(A*io8)~miCgegzep4{lr;N%N=#0&0c(yjiT0wH5*n~6 zUO~(;0ZN~%V-q-wfY$akQcIFc*$EDz4T7wTDCv%M7a$M{#jhP;5!!gYAC|G-U zjtp~L5Qea{3Y`8SpWvhP5gEgabxL|ARS{2&ym4Tg-o1W|8I}_TIpkH9DQuWv+r5rD z&n~;Ya}#BPOaY)Njnk(_5Ywkt4ZP|}Vl!%bXk~PQpZnO;rRyUnknv<6nZ4&-M&-w) zCdqDGIemkv(J&WzRC904y~w%}3mJc?25cXE-jbBK-b3Ni+n*H!GojGWPzch`!5D-+4|8s)8ciG(%|bSS0cM(AO*&8j zP9pDWnw_#MGaoot1l2dTU*A^zs=T90M14xvAXZ}j zdPg=Ai%Nj1223%Yl=qi_IQ0Y!Kts{L8n6PW*<@6MEJc${bE_I4qjP-_2IxgEp2yFD zCXoOR9Z^}L@*k4`$pO{6mj9RpP|qmab`-x%U&oby7QZ?_*Q%nBMow8HOM%PQ zYYGA;D0Ioo;WFx+9d3w#l8myzE&~L{E&f_v=nOkKlfNu%nR&nkAJ85s%65_cvy=(h zi3~$c-CvahGDH_LG0t968TC7wk$PW4L`7mqKpeB|q%0tqk$uU}t7Si2-~z0Cv>{<_RLt>hdd;0`6EasMHz9|3{&(N;;M8Zp zjuGGm|M~o!ju~kuk_Y{0#KrCzAZ|APFUPj-Ul~YN!^IK(`Hr{--YKw5!`)F#<*3x~ zEC>8i4fiSu%|U1*Vk#^U~G|oZiCY%!NAwq;P(B$H-LwH7!TL_4gTkB zaJ#KpJCX1Z-yY8be&BJ!*XTukC;T-U48+0z2O3SpfiKcF56*b%wJnJgK7~eoapHO8 z6Y=401s3`lSM>R4_B$74kGj(8iJ<7|aS)Fy;esG^zp@Q&F)b=u1? zwAamFm+L>(EBdR&B>GKRA&hVPixFVrhF(qEGMVU$b*0p z#c4Cts+GiD@UuS|`op{v+3aN9s1Pq@vqQ0S@`NFG>hLO-*sl}!^Y8*}fX&V>9X=-( zR9q(i22Asic>K$9D-2_sL;kVKn(zib53qjnuY$Q!KlFa*@mUit!)9l~t(SjS!SA*G z6-o05efq8fufL7kopa~q&c&wOBdsvvp{*Ma$ac&1#&eNveGx5hF!tE*IK~aNk7wq@ zt~bUG<| z<&I-F9D8#Ckz0=Gh~9IYyMkBj;=bbam0JFd%-Y@%84$kZg^0wpI6ECDc`6XZW5{b(|Z!>$p32&D2b}?D$OXRhx5@-j>Ub zapQ07vg3mOmmTNK0*AAv@v`Gw)B+a8{c_py+-d$!Ygw5z9_p^+?lpP(uH((Q{>_kw z(XPr2Tz5Q`_Zi#oJNELv;{;b7-y}(RaNqG(ecy4N*u zcV&u5f!uiPj@@`{^_Gc0E^4iX5a9E+7RlqtZ-*=<2=`KtExMoe0oE5@CjHoSS1POF2}Fc zhY^$&;m?Nf5$nP3jS7?0YzQ@x8fybgE3DHvuG^Z@Q3qh(s601U68Lp1u zw&N$f57ccI?}iX_gK`NsD6Vhl4oh)t2$B3wlzs_hpbwMb$QpiP{A!luorM>+8f=+- z-&)_@C2Uw9>Jc{d;x1s3iWs;0$UNa-Ll`C8eL@2ChBkphP>B*~h?c5E~ zQc>LtF)t9=gP6A}$MY!#XlJcXE#{qMrxx>8bij0BL7H2M*3x}i^4A=C4~%}_Y7RFc z&x%Qur_&-UNChf4xUm#PsY;FsGqw%gjVSFVNGA(+o3%c?oh7&5vbwj5VD^T#ApJ&^ z)JC#ZWPAr*^~h-$QqkQYc+DYJOC%V67cv>T-D<(jmsU$h8^{4!DEo#GD_$pJI?eEB zCI;(j%Fof+HxcrD7KIx@q4rr5P)@4G9YAf_eY@3$tE8nnY;2l$38?7nf08%!!WH(Yq@u0w4AsygH z5V-@3BAAay3BD@?TA}lx0+kEtTG8yZb-V-S_ezFIL~|&Nh+a|R&>Vgr5lJNhuNt~3 z?0ukw)Vu-J(gVKixgD{cC13i2^NVo5fwhcuK!}2er==fAMQmD>D6S$by)`dNsRs|w z!wu&^031RPJiH96*^&*>$twcx^i}skUdJMD5LE(^H_^+Yy(8)-M5DIt_y4Bl_HE_` zz=iJiW^NH)Q?xgBIvQGxP4mzf(_Jt(;zbe{GE%OzF5H(g*t&2tf9^|3rYi-fZI~1e z2qhf0f)L#Qiyz$li{A$Zd+__>;9B~0cDIY5b&A|WEW;&(3m_Mr>!M0usaY!hrr@Dc z*DeHpeehZaZs@)sOm1LFg-~+gKMiiBM=!RkqKR8MIKZzdMy{rWqEQR zDM#_&ga{5%tkAIZvARf|X+c%npvj&B6`|_P8OX+)w?oODp=_K9=JmSjq!l+%|>_ zF&ye=_Z#AENo!2y@TRamST{xKs9@cM&^hq^45Tl6F!E;FycomS(wR2f6yJvMDG0yG zWkbhV>(y>nvOa4}Xru6<7dLv=vcO{OinTSCv^Azu?T|`!8bx45i=eY(4;gfZy1sI- zo9+Wt^pH2YTd3t97+gSi6LFpsA>wB}(ViAz;U`ojKU+ac|MnoeUwiPhA{M=!!E7`j zmg*`~5pEY1eVZ0;rPL|hugKk{s*otgwM1*yI*P z`SV~~89e+T4g^L28STXF~_6*i7OAC;`-D{G*GbWP(kk zt{`C8v{>JA5Ad2m#YWU7*bAa^Ejf{dNIL3*c@L&z5@KXaL9a8GLh}wa^N;+F|5!{ZjB!ghqRi8hqI2piMaD z+02{S@gah7;ZJEKQe>YyR_UsFD?5BJBf{gv=f1pn@No&?GZVl+4NYp|LD59#zQ3a3 ze4%WR?SN`1#*;KW^b;OUK2TjqZ0LE^+KzTgU5- ztRML%Rq&z=|C+U$Gy0|H`OMmd@zlj>K3z1TAS}_G^SAYWLleMRBUtu?c?^Pnx9YWp z6Z)IQ%yJ|?A2VnAL%5l~bIv)S)Ahj5{Mu^G^`kQ9&56Wb>W+A;N&j>ZwYH}MhlE&KYHf`^uU z{jm%>7rFWSSQdZhcz~Jj2I}*eSVp)fN;U`Ut}A&H5Ox0|uD7fwO5aDEr4fw(lEaJ&Cuo6ph{nQy z2YMG4`zbQUmmUj#IAPMs*_QAoj81mlZuO#bVfA+GXFjIi#Xc^E6!S62m_x|D1^k^; z9?V@_(r7I!*>5e^`xb+FW0H5Dz~^(B0VevY40=0)xiST{3?}vHeT4&z5Ca@N{ujD~ zxmBh6B%WGi#adR{6wDh*UNEk;wzx3jYL@4q=iDG26)Y*b*8*_Wa`XH$m0x!nbq$_V=IF>z>tIE;ii3<>Pda%*1b zFejDXqZFf9Z8Cs~8_N_A=BLc0Qd>t0Cr;mQr3Am-9XvcTxpN09MoDHZX?hDRu1-Ig z8k~P)a@z?I6naaOIx=)XF_XWCLFB;(;Q(% zf5L#7l>GLP;QZ^74@#&5>5>s-Nz0;xsKgAL5_$*B3ZI8UGE;eDIP0)DJpy?fid#H_ zo2DgSFzmwopiJ=#RhF8Rg6THodP}gbw6qUG`*`NsU~Va8a9XmiBYBv&04qj@z|oPI z^RgACon2=ALd4jHK9FHoAbQB!g3Q`PGyk*m{RS;^lN8096U77^&VKs-oAx$*~-q1OuL$O&eP%ToRI`_i=%790+E@1 z&Pv1FS_TfX6pFK_Q8XAVG-H7rXqd%TQ5;Z11!A|d=Sb{67|J41S+6zY0)#Um;v_1I z3_8((iKcfzqRb@ewk5jOU|)Ws_MFz5Xa*)4C#MAl`|=aD=hS1O8JK9CoVpEmAI`Y} zdu46Mu(!p=-j--Du&qPdC=AegVL&WHN>z5fnEZtc96t>MVHrSDDk3$UnZ463Hx)g? zQKOlX{mAWvopZQASu+y>{|jIrzeo(=wC<|^Z!0eHFh{Un%h9AM0_nMkLrj#nfr=2_vqI1J^zp9mwBNw_j@jB@9H?K%{lkT_~Ol- z1@zpTSErU}?(y63XB^JC$5x$gfevq8ZtXDdA^2u^Ge@VrT^>Dmd8xU_ME0(4JLX(X zyiWclvUhFO;d4wt{Wf!d2Fz)%c>FVShh~m3(cI%)glFAxKEpNtU)CO^n`Ld%H}PWb z@wS}Hn0w5bF#gudoqHUvZEs16hd=loic;epI~9)meXMiQ3x0xiOK*mqMMhGv?(wT< zWF)@YhZcT}wcqVN1<3KAJqjwm&f9&eKXl5u_Dh9$yN|kCC^dSwP+S7uLE4E4P+uM98VzR)vE}Xhygkp#pHg zhB_;FuxC*KRDBJj8FfDo-fWeyp6=Uaon9EQI(=I?o3(GR)wxi5_<_AxpH7Wl&jWHs zXJY01G#m>u-S~X~^SaAa?Nn zw@ybmeO-!9Aj#u&O8vTE-Ey(kBYA8CT?xy)LiqF50htS7qBiQS9>IB#7M`IC$wgLPMgPg@&sa|4)gW-!f{5Udgz z8XBpCK|}ZmmM7<^OdZJy-ymimdiV zRM}Zo;S#JrpaeUm1e-C}7ddWShnbJMWuOaY9+agi9lMaB6x8IASmB{03WFhzd#wqP z%`7i)dx~)T41^LTScJmk6t|m0%eO!XrU4@LEE2+DRv$c6<=O!_=jor%tR=NCMYJR@ zD|;JAD^;nJN2e=x-9WL1AxKA8ux_aEa4HzE9-hm}U=d_PXoTFWV?QBdZ76)pS_RRz zqrejFy2wEkF=X3{23^*1)?DrI6uPXmC`a*uD34MiBQjC9pI55sr3eg-eZ5xiLfH8% zDDJ^c3NW=!p;dkwUR#6iiZkfO$4K2Ul()|Di;>-Fb!ahDXF(!Ev<*8QchD6mfof} zjSU{2mh(Q`)25#p8{9M{rza_xH)VR=*x>wSIrV@qgBw#bY1X{(y&g>C{D+jm`tY9v zEQ`+YPlWu2@b4t|Q^Ma7Dtg1;36Ppd&Bsu1U-iK8ZxS$4^G697sriuvjMV&A0xrkB zK`OwL5^ysg4nJ;%k57b4rhheH7108*m28TGTQY_~uQ6cn`|d_M@j*MSL` zlUTUhYQY*#c-Gob(raxf?X*fuHd~#gZw3z+<(viIil)B<-d5%G!d*4J0la-M z=U5Vcr?(1kHwtezj)iKv*A2ct#%lT>Yh6fcL-^0FcvE0tfVHgb6pS)|;bz88hrcfw zYzhDCT7HAgt$astLkoT?3XrL2%lB^*870i4aQ?_xfuWnkNX^gP;sIv56vp=o)ceicgB`l|20GljqRrSg}ZfogUJ z&fTmk3V~(A`1{S_4Ds*?L2wI#8!^)hy#jd67-jXKn!5;?XIbIi8vvmfl z(HZE`oq- zsqMkqi3jvR>?B`MP1V$KDwCj_dFv^gf|twcLVb7wn;t%(Np2h2dW7i3qa5z5MVx-ObS@=y`3dJ2A!Md9x zZ(93e5g%S>?URPek7>iYirvG2e`<(zu%pk)jleqkYbNTOT^viftajKcHb&mE4u`GRH)ToMRoxP6`IH&&~*4be;RRidZRxLeKeaj6NawPfIt=T4&nuE?)=gAFCPa2rJ8PB5zyOWp4uTCsqA_1$ACs z_KtPX7qJd5eA{X)IcqhRhEcw^TIXxVfwDy&tE=Rc)m6G3fQ6KlUq~UHulc#WyTacO zFlXm$z9;W?P~lOvRCmvR7}ax@Le_Cmpbr5v7)#W=0YPW%wX3)}N z)t4N%>Pt~=!;3PQb_NLP059&nOH=dJyWsbeXH@Dxk~gT?rKyp354s?3MGZ6!RoBm; z9;(q?QuVm#(~d4VBn=!99ao1AJtV`|ZuOv@Y)3oUj&`yU?PMd`$%Em4c7v9$qex*p z(-oeBkZ3l~*L=AEe&1iK)0TG+8Y1=mq`aR1Edi$Z2e4?ZB1-Gi#z+VhD4mM>^?YV6 z1NNY?wiB@rMC=0*)ipbWcL5@SqAXIBWhg2)6qS>r*CZl#4d_52DM0u;C)D>v?vT6b zJQ^{%Lyni0gFaPNd(`1a*0;(Atxv>Nml@OsJ*JsUh!OtbHqt`i8>1buN5?*s6{-UH~t8>j~dLk~h| zQ6)Yozra}g)-hNkq@xefpGAn>z>BH-1A^RxlP8h#5o*s?;9Wqh-E)MN9^4p5f}+vC zW$M;HVbd#$tO?cX04mVC2-k^pK0(fBKx04Tri8K#u3;N6rIslALAq;4BD=M!(I$*#J0O56p53mU9FAGX3xr@+XROR}^Oiz&q%N=OEWLW~A-9a?sAJ(^99x zA>g<_U4UNBeuJNjAQ`ENMfq=Va=(FjglG65U4++Z0TkK*`=O2}!vxUppJ;p&{s|3# zO5?lrw|Q{}nel(10m4JLYczhALDcUc-o!5uf6Y(89+PiV3u1w&bb0fSI|dThy&CRu zz-J3Q#pQ%g)$qF<`2VEg1rB(ohL=0w93wb+MwIah;8h9WcL08Ma!fGX_~v8QJXn&{ zIc80f_Tzk5^0Z|)@P!28AsokWMB!>pl)P3t#o#yKn~yV|4h0?%&nJWrDjrOfN8_KX z;m&j`ZTKIv;jd4C{{{)f!xz`d44r#y@S!&NR3?ar-duh&_-`>WJcM&u%fOG=;4C)- z|Juj#frt34t_I$j0DdL`+)JYIIODlH0sPej@ZTkXU%|}Bi9am?{E-CkKWL$K(phJN zbA8kB;R|}P(}_Rc2Djrc)%!@C^6(2AoOQ><&ph#=STGIqP{#NexY0wV&KbDTH>SQA zxX~+aiABY2kDqIid;g*ZCzd zL{MjZsoVT$eUP1htKIrwEWQ+Yf^q0Wy82)AH_%=o+t@4ocV7GFx(Whk`h;2(*`ve!TGt!>DSFws`DR$wH4pyn&uh9u9HSuPp<1ES)GJe8 z#vlU5p{p}o>N%m)tu+AsHucZEd9P)>@aEpb0!Mha{x2D~1Qc=U0%Uqp1!k?F8tPN<$ zusYeFHynl&{=Cs+1O7a>KQDXinOXjmQW7v*nB|Y)5UyGNu4Dg+q-CJm&zK?ipL6qR z(6Fj0edYInq0J_C&19f0-ny_mclFgI@Sb70tM5+n-!lrYRR2Ab@fza4Ckw9(|2-q{ z8s@(z1Fzx!douAF;lHOpomczs8NPaEivKI4VR7O1e>+=OIAib%7OVvPz4C45tJip z+}^rlZvTwz-(xB28idC4S1@=`i+g8}u1N)TF;U-^RQlYLwD2eQP7%UtXwz=TVb>?>%eklBL;!(x! zYq2bfV=;v62NlV?2p($vSb?v#9>n1uuPWrBSjZP-LeHZdM`w})jSO)OSS@~OD8%FN z!;%GTJ-{CEe93q|h}EgnSVaPKFc=^~Za|Rp;4sRT&^0kA&TEMrwANH~Uu6vqzpiHC zTPi}=%!gqS0LqMS}yUvJ^s`7PE<;m16vufM2e zir0nzHNf|T@b`t&uty+q*y{3=TE4N69^gAt^LhMNFqdj+XL-%9CE)U!?@2(|BS^sI zH9wMoSS*)-Yq(%R)kA}i0y=1^;GttZW_D>V(8>f>MZ#8_?*zCDvlL$o?8F+Z1}y0` zlwu=vNf!(d>VT}3GtC-kG9oFwgxW|Ogtd(3$1s$l*3;_z)yU*btID?#(QUI@e0!{x zg*bPq(ST)wo8-XUqkwOidkA?k`-3mL!B1ZSwD?<+6%WzC zG>MPq8p=`g$5ti)YY>T##t9N3%t7?~w`(ON7Kj20^CG4P5A@hf4?aLQl{N!2#OeTz zFUnN3<71n8*NEiN3-W%A5$ zI2NE1(hi^&pVR#Hjz;+6HV7xMl6Q;^Z;G?wt*+UJUYjYxff6l=*6oZh=EKi01IRh+m6E1EkFY(kw#ppsqq4plYP}H_fI#R50_^|l!WR&t6;LSq#xT~>_fgR|hTp?l_`6u6 z1Nfk{zXCsqlp4`V=qcNY6>+q)U1%i_vYq7`;65~xT@`1B!mOYk-fvzDGT+C_UIRY5 zuCdkux2vKt&6)}C-$dRZ6y_T+wE&bnKL{&@9pDade}(J|ZgF^Dux=ud0mibT0>gMB z3}d+)po0J=;evfV!0jl3oeH`y2Hl5sl=w$qTd?&>q^p)~Nv3 zNI?lH?OZK`k)|6a3S7QKgZ2mHx}EJ=Atk9ikM4145EsFR!*t%Om zd(eRsXb%pOqx?YVSOg+fX<+tNs+3U#x3uHSjA) z|Ieh+?eR6rGI$T$VH!ECWkstKbJ^;$qp%z3hTQdH&tm!Y)8Idh^Lk3K zhK_dSJPq#lg}*PA6wBc9#tMDFg}BbwJSp!UG+VW#f>o~?mWg7Y#ESk0u^M0zXyx=X zELZlFEkIfAi@d0mL=OxL)p9*(S%_6oBwdf?dMpvkqHqR?IYgU*yUYsxU8Lw4MZx#v z4T^SYisbD_i&{$p8j)|Ua==tV)}c+TE<<%S?cxt%S5#frX|r8WbTonv+AhdawJc6+ zItmOO1*BuGrbFIN+XZq)R4`RpH3lRHK~I1o$Ram+)*g8-vsOX0N~a-%6lx+vh7V)A z@L^0AW=*WCxYjf^AP=oX``c^>#d?9u0rA$@Ic*HVBL_dg`%U~q3qq2+sNK3?J}o-A z3p%d{b+wL)piZfn>-ECjMw4lT+7pwh^5b(5ipEJ$7O0MC zpnE6&x2a_Iq1wZ1u&npPo5?_k74#}VVadP>FAY%nF_lbxG?{vnk@7B+(x1E^gJo1m3pHQ|^wFD81uz>} zj^?L&IgUQAUXI>*_457Wubeu5de+qObKFzM-<#o2p6b6NYpVatIGp^e8NtKVp9rAe zSN(~t^4loC`;*2`ABI3F2$YRLnf^P5Ayf)NWg}Fkgi4lB^4loC`;*5{AB9lE5h@j- za{PCULa5;gm5NX~5^9iylHW%8-9Kpj^vMV{8lgrY)DZt2lMxEjFJB&kP(xPCa3`&} zFWco^vC-pQu^In$u%GO?J^j05c{1gy`t+4g{jXgAkC*G<;o{`OI3J)oxji{}`0nH* zFu6gix)wzrJY1NJLr4xUPCjn;+9h7q$v6}NVLR+z0r6U#ybWH3$-CfHoLtWcpU!-Z zvV=M`(5!|@4KS-AP-ZKQ!Axut5N0*4@D;NfP7fw9t8v=MIKR=5$b*(e9>gS%b8cUQ zqpw8xoY&@ag?dHTNQ_O42FG6i18iJgU~ayWmT^bg@Z2=_)U<*XDc>LTgXH8DY3|&# z;djs@b<@r_TyCJQqzUwOn-8780C?^b4 z#kc>@@9=p!wkT7i08MGd;_8FbZi^y$1I*Z>jMoJ(v;m&2u(hT)^!%9wyE?fb(HJVI5)T zhEExRc*s$%+Zgy70`U;e<$VKJ^s9Kd#%188-_!D)axU6?(NiUi3)*LluRkMJ^q+M76Z6BENXP%aP2O53$Z3TP!!r z>*Mmr+v8SC?c?Gf1TfAltdGmjQivb%!K4i+y?AXz?LVl3o-XxPx%un(yyO~sk(N6X z1Le~GFh0UOb|Bq1C_t)CkadwVWaQGUp>k!AD9$zX*L1ob_}L#*|IK?C0>=yQ`h*JQ zu?L3Rt-sCt5WX4S$wQA0Z_?4hqV${Z7C7SNKUMQTOCvJ>m$Qa`mrnmuYv?NxFX?wa z@9XeRxD)qhKmcsO8u|$x{uxIEru+=}IXL3wKS$@^s}U2ep*O>ya^ZYxuUC*-O)y`K z!=!KI2W#lr6Jty0?n|zr-;!lLTgqgCW^l~dgh8qGB5MGpO<;viM`^pG9OtLkjuP0`ZBL| zNdV66cbV5C`ZBLtuszOYUcU#E9G7{iwDY!-hyrty7YO_iH+gMFZ2fQYqRl|`Ca+p# z&3YD6ab(>di(wn$bYiv{QS#zJ)4F|5;G&SiIZu9c`-;Ukpg=~X#`-NV(y-V)$ zI*-PmbS#y-yvlKxmv3>ex9mosyTmmz>KYSuO`t25@^s$zl|F3~uG^aH@=wjItW2M| zI@KTOf7#a~yzI-n`hiUEH2)dzYTO-%+rW;wNqu>yzY&3N7fK4exbkb&fy#8=>h+na z{_|&>rY0Tl_%ska=Ekq37rF7vV{ZH^|66bT0y&;kZ~A|};jKIPF>exT3~onD+6f~P zZ`~odHiF72A_rgxhhu+%yb05ULE?%rEyhS;Zu>VVoPn|RUO(c0_ex(^#EZMYd|ka> z+$WRFH*SM60WHPZ^ym<>I6MOs2C$@VGcI60QZ}koh2y%mW(&H&aZt&(+rX;^lc68T~ z-cY^o?hW2hz}I-%8`|ny+~V!Fd|fTxP^W=6dqc;3U8lX_CSO;xH+;s|)#Ekp|S8Mx&Qo%40IdBXur5qrZ&n1039QB1C4 z$Ed%ZrYuEM*56K3lA=k94QJD_^jt^O>%biO>Qk?#XXWe6vwu7F|2J_|aqY;nz9nGn zraAI@LvvKI`OHM$lGENvyHEtDy?FtV*cwzARTs09eWx~fCvAjpn>TM;2P;SoYM%Jc z8Uf#C@1!7no4t8E-dDcEwC`m2uJ=yb3}4Hew^N5j7)WEytd!(GurHB&CXj^1T0H5i zK7~QpfI6-!XDtwYjYTySz??QWTdR zmLLbE!m``rBg#G!R0e{yIw72p5@eq5E@%S@cN#i@9aVuoK3VIOT0$64g9?QVE=H&= zz6wxhiBB)3y!*IRcd6W{^o!fP-CLzPH?yizF|7B7+8IX(ieZB{4182xRODuFMFWJ^ z@>aY7HPGzs-b`5NjIQpBEpK5?4%&@?6amY{XpxR*6P zZ|h#)J*dTXF*d_5&_X$t%Dj$mRIHOf_TCzl-`y;UN&BTh@;0i9jmjnM+M8=cRqVqH zE$Qy0s7_#`SN9Ypq-HJ}@sn%3w@RI;L3=D;TNu!$Y6KH%g72v#lK+4vw4Xxg{(zUx z(HpmbUL&Fx>m49i#H((eGd+Z6UN?IG%sy+{>ZQ0rwijQOOEUTbxP)%n>H@caQ~TsI zSj>of30*Fa?>fREga_SNrpm5~bTx3Rk&vifVckEG8|h5Sjs5jjO8QLy&Y8Mv^8bR9 zLvBm*;hmRqTfdIUuyoaTpmrlOM+^qXQ8vQ{J3A$r*Q*|kC^q&7ry(Zu6aj9_!y5 zNlBN=Ib?90zDUaT%I~H)J&}}~l;3Rw`XLicKZFSC6asM#MKyJa>$<2*hBeVKNhaz& z#}c(fT!+A;g@Ced>84*8Zp?Bt_nRzKp|j+A{~_`#L+IeVA$R8JS_MJeP4ygKHuUE-tL|3 zeXw^SZRle3F5Z*gMVIt0j`;5Wu{YGQ8u&HI->e1nMws@Uhiw_^xoR)JBi=3GCGf_hVZEBrA)rbxBFFZ z-bwUMFed563uE%Ls*{2^PQkD3DbXg`xA~gdythi1yCze892OM(#hy?m?sy;lpkZAC8Ck=%uOXysViU=lT^N zy^Ys}eu_M16_N9^d_+&-&G~LVX3d%FR(!a(n2(89eZ}xhyoN3_KWx%5@m|XRQt_K~ zO+5eC<^S(=&3_aMPHz!)&7{zoyD9DWSdJMo;2z5g8Sv{nFXzxWV9*1p7rD&xQAB+? zYx$I?LD5>lFZFx|FRsB0t#At+c+bGU{j7B3&%9w~e859FjR#+&FeiGvCC2LE|rWz$a_IeA@wkT*Fs6;D6F^w~mkT z>nsXnmIH3&_E7;>cz*cy4=`avb;?DVb&)91u&x6%Mzb1b;#gA4-frp5BCf+e3lI+PQ5mI zskPzTba-d*U+C~oxXw-#T&ThiSQ}oe!#@(mR1TAW1AYLGc>H_Du{KWrQBRoghJQZ* zYyj_wrx5~h^C8{r8#u#bZFu74+_#yNGxoC2ynpQ1D_HFX6_`qFtH2uCnZaPln$IoDUtlqv_A&>c3^XP?sUj9c?SI-(gddt+|qnTHX z`&I-~(d*33e{hpV^sbTNt9Om`6aV~x$)K<*cV6z?doT(1G6KhpEV0viEdbs%k7s7+ zwPmtnDKh0Pejqc$b4PlAz6^RGbGX<4Q<9m!vX5wXuK7XA(yTv{wK_KMmb_FX;Hp)O zOkc&bk%UV#{hOz*&Jm|yigdH;h6*izrY1jj1C$iVS$Q?Ws0fnMSNcoiS6;Q^TuS;XUKouH>H~0> z?ptv#DSg$o@b-sw_^OAzYsMf>ljB)y7G!4RZg8E5=9P4O&cDgOWtRV_36zGZ%2884 zb!>{u?Q&I)^1mY<9arYA_)Rr7I7diA*{V{jTmE?dRXqv_bJa!7{ z*=e&?TRBePjD(}0t^npNC4n%55b)Hj@{F+uJl`uBkz_!ueOIg6H@K?J)ah&D)M>jg z>&m$1DWx)&X8h4jy8Mxu{&TU)*AAE=)=>c`n+kYO`tM{qsc*YISAWidzt_J-sP^yu z#-@AhzAJKEl~=EpV1h7lQ&s9WHhrW0i|8~7AZj3^&X>sj6AN(m#G^}w%=UNBUUepY z}2gdA`#HC7$<`=m?HN`!O3ErBWUwN}TYu=?}Dqd7vsbd=Ta7mf3 zu;iA9izCtf}+R1SfxB&@}b=zs9$bM ziWgNa%||lIUy^r!ety}aC6%MyONzf$1ma!uAE{dOXghb{jd zG~XYUo0hfWitnfVV95b~lg{ z7k@s5zRKmyX}khn+V>%tvU(lKB-ut*X3nq~bQ9m;seJ}6R~O((NZHWm)?}X1@gLBG zFX0LNIF?VssKCUdyJ_@Aybz>Br)%OLqT{K>J1Ls0*jbfT8vnC8V(A+L zcezg2gg5EGDe+wCD#x48X!UaaOvm%Q{x-vtPve{A#SsJ_ga2KPe^h}*_UN3g%cTka zd=9CX>o&j{&zqV~kA{C+N{4BGJLL_x`s2}&)eYRZE&`|20uRme2ERtI%n{gYdBw@w!v4~;Hoz*ziAN z!@p8jG`=!z@ar_3e6YuJqYd94PgVlB{mgF4l_tY=cY^ruO%P8(0{o%`_&>D4$Jz4r zQ(HXta`~kV&OVyq|G(PccK!UCEq;5s|K5hr{FU94i=l-boP8 z5gWcep0Ev{^qBhCZNsr0gWL7|w{37c{=aKD<;u?g-`e2Z zwr2AC2OE5Z4Zg`1|418rn+@L{f1?e4qYZzr4bCx#N%xS3lMf?pa5&{j!Y}h+9>Z4y zH{Wc7_!zhuSGffmgPZXRdC14$n{kPPD!3aTX1rz6AwJ>G_(`LkPL>5912^Hz6*vkv z@dO-jL+1qt+|W6kgy1ppoAI$(TQ+br?sQ>}tFpMXsO+Hyh1GF4XWud_KmV?;PMbUT zYx&dX&B>cP^UgW>`M0QfF*Un|=`NXj)KgxVVJxoX8uOB(O4mb6Dhn%J`T0eqRh1=6 zIHQ(dxL`p=(UK*uTYUJrSUk!vA9Hs3W#vVSZh@nCK6ZrPGK)*cj-BB1A1TBic8_Dr zHZU%iW=>Z+x0=U}O{WXjwKE?T6^qK^Q(atIUQ$$wdC9`c;<7~vXt>z4V1gia7C9yo zKST&e;lzsKF)|T*=v@!ZUsPG*DlaQ3aV@D{GQSY-d`#aK&VMw2{v(g(KZN;J7bb5j zi*A`QXWkg`xcqeUF;f}kZ}F0sLOnQNf|I48}sdqh-Rxl*Yg+24t{lHKtssBcI+)< z6VwqCCmWu>@wpux3e%^sNA;RstM7AoYV{OFy%sLQoHH&Sjd4`B1Nu|?>&DG@8vfZv zc<^t3c4=e5XV?hgAs%&~(YKsy<->j}(|3^R8l?%kOR!=;CcJ^LKO8Up0zJ{RR3jQX zO?Z?3E}cI6NcLx`PM`B0_Q&wgyuS@k#_6R08J&=6|4baD)&6`65yi{D32*2$VVv=e zK;U@!->dU)M2z_-NzVKejp-XaIOTa+BVNi@<#XTAJ*Q91vsqv@%S z#_~(U1;~(xNJeNmQ@~Rx+e8M%M1=;CvTz;a)Hncw|FLsv)~IQtW{v*G>CGjia+Wd? zNzKX>{@x5;1{7e5er-w9cwBkY_!u*Isu_F?)VryCi&Zg=mokG_FoSE%;94`dry1Pe z3_eC-;!wl}!)HI*=X7Fxi@E|kzFf;fHGx+H?rscV62Cvo0G`*u4 zys;U)g&Dk!8N9t2yoVY5WEazNUNVD!H-nezYMM_)Gk7gCcndRlS95p`nr|_3xd9sh zcwg$>is9WJFnl=l3)EeK4u#T}wPZbF6zyQZ6)nT?g&7Rze7ajRe0mnc`8ZLhKEtCs zGyWW3;=pjPZVYFm6(R9jhWB}Fj6d>ZxN9LcBGf~9Cc$_}?Xr&Bc9cn;r6Xq zzFcpw5O07uOGU_15QCQMVj(6Er=JKJQGCxEhJ)C8cd;(R+o7I0{S}mFHp=6V^j0YU zDTzIt()U-zNGT5{3Fp%p3PSU>li)oYGJG-CBk#j!LqbYF3+sjR*@F2#lH}`*`v12g zD;L*WZ>;wa1=Cv)%6|&=b4{Y3Bl>=+7^ysr$q%=B*P=C(XURk3a&1IA-=bvs4nq2N zXwQ?-p1C~)H)nkA-(q}bBYiXEX?8gBVMfLMw6Qk$)sfTvETw=E! zD>M3ySnu4ln0})`Hj*0ApT9?9~L9e znlt@#yb@$Y<@dsJarpzVywfD*ZHet@QYBX2$;iKdEyia;8{>Lug?77gxH0|?lGA+e zV7;?gLed&D{75iEKrMQwY{u|+X#cz(`=LFoMtcCW)VmPmQwaIMv`6noL&rt)4c9UL z%Mtf$!0#$usNn$wXf8U1Dx2eZ)UXKY_E+;G(=l>Pk`>lSAo|ktl z%D)HYZ-@EXR%iSZB>ZD)GQ5wYalSW@|5fDA<%wy@=s(_O^f!@z4BA!M%EoqOiTpdG zeug6bRVX;E$A5#2^W6#Y6j$|UIIz{b>L38cldvD-<4gpNG@VOQ1~q?FK^e@_KZG0kmU=>^{yxO0|zAi zz(VW?Mx*`n`kn2;_>9JWfXgYzaWf0YOGTheyM=C0?*>B!QTeaZg%vnnU*DlZDV~XT%k{hx+mUA$ zqv!P!jqN%J+asqR(}wXGj`Jms-$FSXqMRr7xf7BK4U^{kyidgZ0Ascp#o7!Rz3B)dTg< z>*YMQuU_|Ah9I8aEkk|IDarEX{P!ciNP?d)!Q@Pn*h2?sAXNURlK${LjwA0XF#e-4 z-y%4k#!1H0=GgAqV!u=q>3g9)+<3#}=j|@EBj$_koy+f!^4CQ9Bau%K&IbY{^MP6A z7@sm*jrC9r<*6Od@{LA5O`0=$mmdsYi1j6_$M8-#zvXtd2J?->d_g?DD_M=vUzYSs zA5lM>P(Qpq>g*YPf9yYb`|VSo;d3zGNLCDT6YXKQ#2y;DG5U)ynfzSNY1m&)!Tzcc zmMa|;OY3)mWPC|Sdl=M?@!5ps3dVWq0_-1nz0|Q~e7fK`%kv$E_&~|{TgQXZul&mR zb3PrhKU^c}4wP|mNg#YM}Niu&aA+4_B+Vx-S2rbwResOpTq zDfYKu9(q^4F2iSIgHB_~NIR^TM64Iy9holPRro@fsel>phKW~@W=9UJ=h=~jyRu>t-cG0iT=A_KUuOcQ!uA*i}OHR37;gKN8QGG z6sNxr`&712ULPDs`1tYz=Q%;;8Googy$i#3?Su8mYKM>nXn<62)o{JwkM!RWACEZK zPpg`YzPV&R)(_Va>BAXk&i^b_1m*t}`}rQoUy1GO+j%BuC&c?|82$4)i~}#%>M9JM zCh2F++cG>%((e3VAwcuZ!hW9XZK(~z8zDW%{n1WNV|}&9e!~~*eF@e(s9o=3vAr}y zeRBIOjq|;-e>3?vAbkzAt6`Gy;!R^FPsDWI%lIU$M&J!H5TwD)C%lNcM{=DAzVLPoTX{Xu9|BZxyf7Ej=Nxl4r{rPWb z=U^Usw*&jJuGo)peQLoxXg%ImF*{j;^>P^7Zzi^1Fnhi8z z{y7n71t?z z{v*S2q@!dUnS$-8G43by#`0c*kn(>fv6FA8=e0P$;(C4#7nI&z!aoxGpIu>0pAM{g zNayN|egxY2am;rv+Owy`o*$u{3T*GZKlz0FC%19Gi|ftBo$;^sisj4O#VhRJf;KQg zI6lvw(Vs*+2X*P4ybhKN+dD7sa>$65Hw^88^Qi&lrQ?gcWPI`RVD#xYpBaVxZ-RJ~ zj~vG}&gXt9hIf$6bADjE`zpZ;X&C)SY`>Yv-x~Xqs;FnC4MLh>e|s4F+Zjmj*^%*i zAemS9g@K03Xg6ozGaB{DX_l)qgqCch^WpX>xOTCT5>b|eQfid$j5aCstYF#Lw3 z-`Ifjy=jthtu742l+O-{o%F`_MJTR!c>g&9<#~hhaC@s)p7E(C8AtBn_#1$F=H-pB zWAsZUa@K6e@T}LYM1^r&a8@&XlVpAOC$_H)Y+rm{R0r+k8rlh$a}CNr3HuY?PRroF z&@zcVBxC=ODj9b&G)$hNl5ubv>OWgju37CFy!#K=D`Ts&bxLG4sdJM0g)VSR0chEMT_xK82xGf>Y> zC3?P$?d~b|572z{ZVJ|K4)!Npp8GhC%#rjPKipZqi*lGgo1i>FDF0W9{86~Sk&OEr zyuUh!& z8^fPS>?#T6@h-#c`~~zo)D1_yRYbjkTJ)|k+RtN&o&4R7@t^yZ`y{o+9a2KVd%;B`Z&vdlIR4;~);pIa5?h^XK9*oZt)Ek%c7}NvR zTU$x}e#Lpz3`xI{hW$yuM=al2nD1lgpeP?L&S&fpZ;9){8ndnEcl4)X^(FRdk+myWbyeCkX3$ph6Ho*>EhLM?``#Bqx2c^TSa_+3`s z(O9mTXg`q>`+0))uv*ej-beoHB>WX<{|9iq=Izb`E~p+dCHvuyXrDoCnLK=-HUQ+J z^cN)K#bvbrp2#N>COEUfoalTO->HolS_PC^eucCfZ zP(NIskCFdNN&m0`>#>2P9^c`((;wHNoX-<2lSe19^AOZeZ9M0#fpTWzd~A+H&a}FW zPislLquZWTpO10A3dPa8bEt=bl6BT-Z13GA?Y)_X@!5&{S1?@a-CA3Q2TAPnJC3JS zaNi&f>5H~u^kI_n9>M-UQ?jl(iuxac`sd?L2i&)@lFYZS;CR{#$5T%42@0orD1z}(z|CU=WK~QK{)UIDCxJ~BL7Lqe>U;~bJOc> z0X~213F9txSCRiX&{EY>q^-FWZ=HaYNX$U?Z{iw zj`rZbRj)JDB|F#T}7-K@j#{_PpwlqDkzn=yRKEr#>?##q!_FVrV*M|*L8 zvIocC6wJ3Img`U4*G)nBv)VHL#a}W0ygzA!_BKkQw~w}rK3bx;6tuThXm8xE4nv1S z`_&xD^Dvg!j!sM3(Om3j-0=C0c_`;aoTp8a%+qM|q5M;DpWFxO4`KbbkjR-<9p#s_ zi)u9)e%yiSVJPysj`ih&^~Lpk3ia7rVkcX`PUt+Xlf)jJN-+M8STDSv`GNRa$$W1= z+QWQYr@*b=Swel%@@CTk2;2buUqX6-9a7v0+Xa_%EA}TrxGv!Kwj0Nn=aTWIH`e2P ziGJRJerUNGW4U;D6eYihI;&Zk#dMt=wUHz=mwrQi1>T{n&&%Lm|o@iM~J&{is z&Sy4B`ez5U+pgGNx+48A*bn?A=?BVS{WdDf4B;B~SI3GoIiE=MlYsrwBC-rhq$ zPwlgUq}_ecFh16je!vdrQ4et3=k*fZmeI>4c0$m8DoF5-sQ)*3o^=e%8;$^je_U>fQ@(sc9l=ly(>oMH7Gt)n}w|xy6o+Xk01?u^$M9=fFU(!hQa}ydS zwTCpEw{Sf)#CgjZiJUSVm%B;o-2(fcnv!uj8s&`X&LsZ@E9?yROJS0J$(4_H-xxg~ zzdD0GQ#oDnxi2o~YP7>W5_ukCyDKbdcRkuLKJmD|;C#lw1?4|QV*g3Fz6g=5e+O1z z^apUhF$(MV6ps7-CF5o-Eu-%&S=V&KaeNKxL521|0o$EjJEjLWSN5XKPRk8K5epzU4Vh~XztZ(-$F zzQrYW*wvQd-jaUcd`pHu!~Fp+XY~#YkC8n8IRz9&^_DH!FLg#cpM>@X%}4J}W4r4i zX?I@%r+j804#SY%IiQ_4mDu?>h^6%YNbi93X=pzKaUPh6cyU};hDp{P)m<5%UfHa^ zb|C#M#Ix=(+zav7h)3f3aUJ3cFi0xT*_Vu->&>bY!@Y}xA%Wv|H4poZp^|p`4cqS- z32uq?)m~CxyP+ec`EHergH5sDyCCWJwqkoZfOa(kb z82w7gK93UnfeqLXa6Ra79N&WDICQgmcfC5}GeRQ&LhR@JOZxePtr`7`M@-LLpV?@i zXC(U}-EiEThx?PWG2dxu5C2N`8PwQMhGD*3{>%m}-$K}Lha#U(IBr^_J~@3T_S>Is zGC6s^&!NH6`WhkWhdr^q*OT-E6|f#%upXyjzU8sK1mbfDJrN&=`ZjQeai5#Q5_l`BQE9(mr8;n{f3#oJ>#^3TG4 zxG(lsHPKF1N#=Vm5kHMMn5EurM14j}^tlJ?WXW2&m8BXO60OFQqLEJXUj*c=lNmf*+siDv^ zNT{Z7cuA(O3X#h+FqKYLkmR#!twJLs?tx=Gil$YBsAMwG%2PwMGl;^kq?%aIAZ?R@ zn8@X}`f!3r;a(c|Sz}j&CJ0O(Y?3u;5KWHE&^V7RnygJ$`>9WrElOkyI=EK?+VLJBKV zrlfKvTxp|aa-t=Lds)m#_EUFp*N~cOnL5p~bmd8#IdkNY8#jsSgGZZ8aT*o)sAC(lyW4VrK|vvhj`knlZ&WJ z%GCtS?dVuLElIYMSrKhHLNYoyS`nFCqa`zv!wL))LB0QtYi(K&H%Dq=J=zB$^p=KbgW)o;)6I(AGZ>(s z74VT&FG|$Oa+0i1rXA}DB`pegvN!0Nnjx*-GSCvNAVN;;wWO5Qcsa3>+oyTik{AN} zgvn%v9G>4+B(8{sOQj8r#O3qS4`M^O5D5q9(xxG#Q%`}*k{YX2BC`jKDAGV%a=<|{I=Qm6(a4h38*IVGNny3T zDA6k1tRQ}hx>T~&7(1FoZcm(OUqIKyFs&u96d|xIAZ@|72j2laEK3RPI=X}J2i^~S z5O^K%gaj-v~Yf z{7&$@z#jsi3H}uLbKt4F2>u%Q>)>yLzYG3v@Q=Vh0sj>IOYm>O{|o*L_#fbvpe-x# zCBT;kUm1K=@YTTEg0BOf&V}oPcLGnJt8xMF3SJA|13c}#yukkgo~}cD!3Tm50v`%K z5_~N9c<@Q!M}VII{#Wo5!P6R>4t^f^Mc|i!PXoUK{7Uev!LI|q0X%)qY$y2L;OTET z4}(7jp6=IxnUX)jp9h}>p1R8rUI%|4{A2LXz~_K}1O5~Eui)t`5a??|=oVE8@N_GN zF4wDruLIrzyc77w;G2VQ1->#yG?{3{H$n{7M@81_@4Sl8^yQ!Ylw`(hs79NOr z6LEFYjmIrE%V%G+I`hYbFOwGU2%PnP?($jW!tu|V&x4P>|1!Dl@1=d*F72HPK6ozl*81NKGKnOHhvTlC#l8S7@hQhjOl%b`VmvJTb% z<=V?eH!?Q4&gd}r#^OC6*Ol!)<$L)>cD1rM>|A)EQlIzD!^W-Y|GD~~>+h?ZmL7X< z?utrwe^v~7)yaB9nF+7gIF_<1Dz|HvqVf%Qc0al!{K>7Pct_XS=Xwn;5fcjGHe$^Yftn^vl-L2a4O`kt(N-HvJ zaAdEH8pDcCU-_lpsaJC%Y6g%s)~);Bsa1bU0|(uXT_rZmethrk^UW8VJ#R2Bt5(f* zwREZzDU&;_FSKO+jeA|Toet_>@wvC6NYuJZD=!{A?Y5`+{zQwwaZ2gz1jRueS z(`oY#x9^qD4j6W!a(2|^xhWl6p7;`bX5g+9ABrmv?cX(RaEztR_X?3=?SckQe$&`v zORV#cHphI5KdV^#P`!A+L0>QVdo)vSJhcA!{NK}hY)y5z+Qt5&%~$I;&7Mx|Qtnjx zwk6eb9woSD?R(koTKbpTANMFS_Qtilajc9-Y7gDnGHyDer>0(V*+?)AuQsZNm+pDx7_oJd3)Ghnh+?2%QLxQ?A89gGa zxp$2|>krneUs#d(U{I2xefEzz+U<=`lq`O;!KOpQ4o$VY_Uh8Bgtaf)@BMeovAFN{ zz1v4tTov>~abU4$c-5nxIriJrzH0nsV?9TueXacZlzrp3AY^_8@34J-P~wg%@A@=*mRTgLiTlY(iaD_}Y8IXP*X)#a8EYC(d{$*( z>5;2-DOVtV}6Vrj_-^CLgo9U4CE zmUhms-!23#XmGCol@h($Js9{V?%J~H)tw@B$1X%(d(iXojh42l!46yOLrzp2v+jWF zlhPlSs~v)$SylAxrjC30(0Wp-nG-$hBt@` z-sW9W%&9-m&ari0Q8K&N4xg^>+bsRQWwf8;aj@{_q4%>IthHC|?i1?MbeivpAzO++ z33zR{VMCig_9Y$L*xIj>)rAFajaomS)#S&Xo6o$T-fDDIKE?T%<@i679@hIM>73n( z-PKzbd+++(s(-5oWgd*~Y*D)I1JY>d)VhtATfQH4_0X`}IrEcN{Lw(!JM-5Ts<#CC z(VV4`o<8ZlijyC{ef(Ahf6o4~dDwinq&*BgQWNi^~`_gF29(1tH!noRx`q)dzIYKYFDG#x9pR~4(q*OCCJia%>B&) z%Qk0Lblx!UepbW6`zqLu`aJOWA3amX{&4QFt=Ez=Uyqhqd!y=({V&@!-nnPl>g3~% z6^GX}yL>`+@u1xLdV}9;J)0(*TeXktikwGDLj$XISG(_8e!<~~JVF;8V^L~Bjau0* zTT&gPE2quKm>%Gn=scpVEWA*7TFStGwMjMqU4MGB>y64^V=Gp&)7-c6xiQIi(m!>& zS6g|^v0hZ)>H9vc@?Yg%cwmKMo$ifY)UsaA!gp_{dcCV%d4I}eC)M1p{WAK;zxUYD zQZ;(DQ)bHT(49TkF5KUG-p*T_J=!;PYSMXgv-4k1t-1Qw_A}-FsP$^lA6LRQuX=vh zqid7VLw5#drBzn=hTL#0<5{f6sx0dRz0?6sKV;u|J5>F$S@G2JHV;<(yLNF->1B_!6`Z0C17LF#Uiy`lHKOWE(Db8 zJT7o*%(}NjGL{j?``kB^~}Iw z7fQK&8eqFB%eMN+njPQFiB4OoUf z)~zPDeh=zmwaz^w)_MG%1@kU9Xwcg^ZTe*Q=E{u^vUguDw${dJ)bj}*^LKeaJsI|U zoq@W_A$_*{bY1({e~riMw8mZS7wqoZWkRP9iz2hKwv~GJ@u8jeRN~+;mx$f1l0D9N z*7lsf$mQ^yda3gdx*PGFJT+fKr7b;fnKV**U6pxn2 zQa%#DgFiMNZPKJh*}GS_`Bsf;^rHBwI~P1u%U9L>>xk{BD=!u__4u>bbeM}#Pu&=p z3)1=VO9)Scr;Z+Hu7~SB5Yo9hcQF`G?-MXRy{7YU>YhM6ou|?{BX@V;{txhU{#X;j z*Wjs}jiCkLbe%xw_0-XMF`YxwIrjtbo#5IHJe}*dg^;=^2>ITBGr;Lufx5GBJr3fw z!u1FUFTg!@bUi`m>D-MMt|@kbM?lye;(CG)gzEzk(zz_1-wuOoI!~wbW9r;7q}OzQ zOV>P&ARGlW)TO{RogYsHKMnj~z<Q>%tv?Y4P5}KuJhD#3(cd@tZ(j1F!c$=pxV{Ojf}~MWCbZ zAcS;%cN9Wfq_xAi))0OJPuI=VMI$~8==v~7|Cg>~>H6{r+|l3QH2~iO{3xKKYf0+p znv<@<2gAJ;ViZ@yb!Uj9&Iddm?U5sZbr9&LLfl76gsv;b(KR`B4e{O^xeTXrx)nxTA4amr0FKm{suT*EB6M!9j+%}oD#0-{=!N~I}JkWUV#5cf5rYZ z1KQOP-v}{pA3GR162*;PCFZgrdOM(9d zJat1L4c*Vl02=Cwf*%Tg65Q{FFd6Yha6JyMRd8(u*L2@tG-B5wtOlO$=TKJ{t`*?v zaq>0@TSE9Ngv-G5XA>x$2i#YHIO-Z;I2l8V?SOdd9$`2bu6=}fC0@^hc)Dj*0`B1v zIlYr(nh2z!&l>l_I2ts8`_B-nAgqA2bWe)98i09%r!E$JCx}mh@HT|Q!B50Ex=&OV zuPH5eset)G+#&Gca9te25#XtFg77(n;{kVq@HF_}0UHkYlfYL+x|@K*V?lYGKg2%< zvG$bqCNP7bAdjZ`I2-|?) z3)e#+bffo369{1v+@C>yMc{rl+*^Wwju>3(_d;nn8vJ1a_eVZ7?ik<)=>@tVfsR5S z@qPtdSA%qZ;L}AKxV{8&^C+?4`UCEO`TPmjj&QvN)AbhUHUNf?IvG&9x5wSz5FY?H z1Hj8LJ&z*-odNs*(M2sYWwjCT(!%xs;o zx{WqNPzmv$HIWHGua)qci}yVxxOnR*-U!zX;JTV{U(h8z>oDh5nuw@x0{btJD-aKt zBq)sc6(l&n{gYo{xI}W#Z^!ZrGhs0ao+;dKg6rzw(-511p%`2jZbrhj1>Rp3@cb?- z3X$D}Yw@xp+*o3NGfRws>xSTq3VqQ5N&HT@k3#Gygmdt^gph_p;fV9VK@!h#X_x~* zwg5iBYij|cXGGME0xz<4hWk6<{lHUqoCW%GD0CGfj3K>l2iGBZUk~oDP!QZnz=neFfN?V*tb^B# zf}L5?>vaOY9j+IEKLtL66GGTlprPc6{Hzwgs?Nprhu!E-z^Li zAxyyQFbGS6kAt+e5mRGG+0BLPr&Fisl$gXzmcxDX;g3H;8(^=rVoK==jm-VnxvmqQ*Wk=b3iF9r8Y1?G?N zdcJ^N1G@L%HGmz5kh_L(-3o3tfS(}XJf4Q`h;Nd_w}<;KkarT|H-z|lfDb|@?cutt zz_1(8WeK#yAZ{1N?*sfC_$Z8j1L0Ee__Gu80^*y*g1Ysoz--1^_ zz8df?;d(K6>W0F75WCd>-3NcY0c#E69-t`#z8Kt7X9J-#Ueo)(Anqaf!r%?g*EcZH z-*-@GqZ5&w zba4=)gA-&%9UB*;^N%plb2ute7Z)0#^N)`U@ip)Wjf7lcqk=-?BYY!t5yNybQTfux zM+bpuoJ5k7Z(>x8Z)hNoHJPEloKVPEka;l3IM{cPe`q*Ql5ar`a)!pn#~NfXog`Ej zH|S>-q_dAvIZtW@t^7!hjlTjZ%a}_y@*@_&09oJ`SdU;zB+5Sj%=H5(Hj)tk*brYRHBDs>Hy%L66l`SV?M+Z3WoMjBKZXm1 z$Sxls?85K)*V+l zO<`7VG}1VksPcl6niJfl%9}WwA$b-ExU(J2TMgz(Tnsr@kWz!+Vesh9xWAQ)#N+2G7oNs~lIMFtwTY>Ltu zZk~K0!XyrzSRPt)JuPJ(E$tU6NJ~oFM6`csj3{4Vd`yDQsd3|m%@Sk%!(+vny}2a+ zjf)9tuB@Mw!xXvypg3JjWW-N$FhLy^t&8+Ef#;(SGf93<29b&~67LJhQzYf9EUD-) zo`Yr5islriQi+((KQ>9qg{G&tNT)9~XDUsQo2?O<+4OlL%t@hVClw`D=Wke}K}P`# z6`0n+U?+A9B5vFth%qKQ0{?JdX}!?=j9Q-1Yx9!C2KtBl$3(=3$NA<~qi=wJ?$XdC z1y9aqr`Ym1n5$K3n=F_jPa$%pk}@;h`{hG#zGKWM5i5+TJ~N+0yvZABpIT==X-xOD z`6Mve+2%tJ`Ty4>rn>HYa>&!Gw&PZVricnZ0 zCt-4OTY=t3Bcn`=g(u!WRKCjW$0z*NzCbl$D0v|N1K#~N9He1 zLnl)L!F;X&k@OQwlhuUz0zrOaL3I9txtNm6r693fppVT@DwlkPaxo#3*c?MsOXO>3OW2b3kB!yE#2Hq=G4YXf zzuXt59=`qwi6(JK0q^O-u|iA`3o(rfD!nf+U4Ddgisegnm4{kCCo)nDMK~{gY@POG9&(Mi^q67fYZ`da$Zh@g9aIDLoa}6awZ~k?M#e>o)!*BjLk=k z=XT1472|?n_L`vc9TXE4LHkaqcwJ0Pq~X|ulIBsHK0V#$&Lb@YjiodvohhlL(%_y4 z%@B>1Bc@l9!W>te`VLN{$;BlnAc5hbx=1i4*ai=cilhXFZTnm{29?qLV1*iEk{-C3 zo|8g^>3OFV#p{I zdj1&yK=JfJBDR5B!K4PR5mC?)3n$y=SQbEM;1{clj5RtTF~_g~LNn$G6>C05((g!e zhNQlcuq7Gm8>6EpPhcB`wlf@NjH!cY+mVp7hYX~2LW2o1*J6VBY&CbiA!UPY%A6Sl z`4-e@aw*L7D4^Ns3!P89(Z}c4aDrefsGyc3(wLXjV9LT0O{%h78uNS%@)X!4pg-d6 z^(SZzeDiM?0@H#B4IB$-7y`?JDDyGxe4@;>qWs2%+&B|W03w5QgZyE;Qj)2;VZ>Zh zFxvunL>@CRXYXc)2Y^jlx1nnC8e?u$p3DvAls8pwRGw4@hUSgXklH+nfr}ZdGq5ld zZ%A*>#0(6~5J;*TG@BQpa}5)y@%$1SeF433p1EM|v_9{eMu;=&>;#-$nv2cdPBmTt z3Je4ik(cS|99Kf_CcJd!nH!UL%Q-hL&sK46l&Ov6+*s+Ju@GbC$)Q||ysGEtLV1fN zo_6GNz^O5qR76znlNC_o^kF_|!t{iYK4E9zmnTMe_AZyLc$8zz%)p3Csz1RnI)=go z{QSa1_B<*tGah4h9g!^__<{e*?%vZr&pDk``zpd6Hm_j?di<`Z@Y=!y#V*^f5Y+-B9Jm&ztHWr!=w@y?vQ2m|jfm5kldS zR$T;aQW$s_l=i1Z&bwn!KpBl6zAAt?1fI~<885a9NMX8fGpnUM2UI_2HF5sIFrm{w z_V|-3r78Y{0pHlrXqt(W z;c1)Pd?n2=ZxYGyW`ZD(jG@7iCbmRkDQsL!J)!hj7(Jco{WX0QGcA*unza*}QC@}d z?4`Sf`fPMT`o~jXLoe?WEP4WvK-^+9N@OC=P%AW7WNw5R4U7Vj(b2j-7yej;QF1P? z$w)Sz%JYzhk<9tgh+B4IqG;o%AoNkj+jtUc6OsA`;R{`#umd4UWtN0R7|#|>rp=ec zMDHl-Kd;SlUFUg@OU&EM9TN5M2!HWrW7Y!B3sU z6uDiYhz5p7!4qi$VmP9JGl&pfBEN-8{c#1isL|FR7A9YjE>*>2j!B+2N0-YIAMj8AN<*x zzJw9}K?$Lt=m@dAaFWC#G2|)mWGOl(Doz(@`2Cw6^^b}1PvWfg$5Ao~l^SHba|E1tY34gXU|MNuu6Fum2 z`!CAK?P78HTafllFQN)cWqM9pP%3WCMgwp`iSiD}1*MSgNfk(MW@DNDVZSCQKG5*n zJyY43(;`YihkH{xG+(1&<}BAB#=<-$){%JvT1Vz%&9RSx`5OFABQ6TIG<@^1FC#js z9*rWUIx>pXn_C`hG9ocyFh=pH>z^buVO*xTnXoWZWM<6F6lwlCVg{G5s?6Awsk}@W zt`S*YvoMM-*a(ftO&gjKiD+&5=Zs+L&Ym-hi_uTxv6b-SJN+%L#a!?)%-kL9{HXLr zGw~o!tSOdAoaa>4Br!iW&ht=4zSKX*8;WZDkY;{Gga&F_kV4TFptk3c2%SSAW1 zMw|QjoH30VX^e2VaWG1M~K!yoD&6BMgI%3;sz2l&SY>fh`juGMi<-X!f$ z@uO8^AY|K)IMU_*B#X|$a-U{^9|+{#fi}DEemUqhSEMZ%4fOMcHTp_0C=rU0g#Jb$Je}T-z@~jGAV(QH~ zxhjR_lz#%e#mhe++_0*YXh7PQCDEqea+I5c=~wLJ#v4DYAz_~PY*RvD&b%dL220ez zc6)fNZ!qkp!|Er7?gGO#{jpfopdi>ihMVZnAaTzhen?2)ngG9aH$J~G?A1e(*l1l~ z=pcHg06%_*ZEHgueUF9V2Db1GgnXkP1cPIVa5$JSkWmQFlVNW-ut97T>DbZ1dqmh9`f>*8Nm1?O6X@Go-DzO4rKJH5 zdj!8{ohG5zj$r)LC3yB!hG$4{=jjYz5N2HOLB$n%eWpq9aKzIk_+-TQNbnZ$Wl!pk zNbtHP8J;D2V(Q735ImGQHc()uz?(J7z(WQ6iGZ&Z z_~Zz<_${7~0?yynt54R8*$=f7@qNHn0#3hM!kt>c>Gv?Wvlejiea#vHr{7=V&R)Qk zLb)6Td@3h~&_%%M`>wgu3b>Ag5PAwYeYY@oUII?PtH7PNfb;iV(>Ol?r{C7$E=0h8 z5%@$4_+tT26mao-9LWNHU7$}DaPhsuGX&gEkY|B_^Y^Y(S4fYbMbbC)6D zcR2{*9s#HCX6EjQfM;_M!czi1K)|yEJVC&(3HTF%f3|@0Z>i8^PXzq7z$Zt*`8$tk z^hW^?5%flS=h}aWz{g6!#cz731)P5)iYBub@X><&8UgnbaC-q4-+S#S;PksJ+_?xi zeXlcjS^;k%;GP10m=ij)mN%2{`TJxJwssKIfxx83KM^(9a$LUoGHA1e|_5 zjJs0;zMO*)W(hd`&JcIk1iTOjA$`m0xrInJV(H_0-uipPTw(aaD8&^pMGTv+FDc;30?yyNPNP!=yu84FhJcR~ z7jRDjzaZdV0v;`t*IU5(_Y7z;QTvx`Z(`g`{&2)M0)FA(tR0-h$|b^@L*;QV_qG&)1T6NPf^5%3rRKO*4t zJ15+o67U)vgfL6MYYO-^0k0+C*#d4a;7Z8=(%93`H?FqEu{SXXwRF|MnNDwF^uB8XJM9`gKZRp4!<%aP zo9XmFm$J`?Kz~}GsZ&oA4{vY@j?@Kd;Fv0g0{YiGYEUqe`+P4+hzbqTu;;YcX`NxW zpMk#cy8(MWQ5`)GDJym=OYEB35&Piqr~v=)25=q#zk-d4f_Kyzj#e}yG`X?J*$`P< zI3iE^WL?y=Yf{U?eEf0hQGf_Y-u%Ce1^GeCpIiz#(jnk{2UDnoDsHoiV(8%~idicUXW5x2? zaR|~SIK(pw@gT;5SB-pZ_5Z8#p#-=tArg zT!~$TE3^{+16RXOU<#^2l&L;cClr}0pY#UruDx9JW@Ly3 z8JPh((5FoyGkED6ZQq($|3Nza$t{{B2vJXC)KqwlV*2>F(C}Dbz*z^;@&~{#iK3%o zX$8E@1)nNMwgdb?YuWjJ44&!p0d7chSupkG6&W-HKfP%pF;shPQ zc`7XgJdnzoEw>JKw%$E!${uL@76 zJ-HJ+pV!-J&RJ|phTX1{;N@jOdL&yMaX)WCh9+r$pAu_HengyD8llalAKzli`;)U3 z#D3_~3g_(yQ9oSu)apTH>e<# z!3V9!kF7K2^-T*he}3zIhW^$?7jB zfn6%@iS45zmycYiu@^R;%e1L|-KDjRoE|r8?IC{!*=pmoVNpF5>GC1YeQ2k)4XLAdUlPUtX6D->)xr_T26}GE(ohrt5n6 zu8cDv?( zmr;@u-zWEL*;7SMml-v@_c$f7%COOtZ>b`8>LgD}Au96WVW!d}TSmSF&##nqL`f#Q zxGhipOGU1E)Y#m&mV$V;ozOwvPetn1j8@-+v(`WRe(ALtHeh#dXr6W9um$PARK8&6 zBpLZ4u@zRpH*M=o+xNPKC0TTL#@RW`Es5vX#X~PNRFL^; zH=_2<2RnayzO=R+Tg^k<*@ z&p0(9_XOd8t3Uf|NXyw@A1jFawq4)boR^b?iX#hG_EwP`r!GC~msgRCzkUupGDAty zuk3L1gO9lOys)h7*@-fu*xYi%ojpo&ZD+}DIUD3;){;SeefC=t-(ic_Y)_Yy(N?c~ zwr{i`Ta-65)88wI(k)AszE?@So|f*n1?=~Ks~=rn=s zN|p%&XA*MVdDhz(15~6}%W4~&zy{ro_uen3!-u?^UQH`K?;f0!X-apLueTr-XRbVb z9X|B?@$2U~NhMX}#MJv|(yz(MuSE-O+uBh@GM^tip$e6gDoY#!i{Dm|>uYRlUN|Qw zH{9C$|1(uaF7Lb<**KtmR^mMiQfmH+QtgW<$#3sU zOgMH+P8z!ATumruL4JQ=X;a=^K~n3#*wP&iRQh&%vG}XAk~sG`->mO7B?)>`YDg%2 z^jvw$dt4gW=bU?QulrOklpPSq{^jGr+q^$NV3=aeV^bX%XfSajjWYvL1uNn zyruCfC21AEP+RUO%p)E|kzW-m5_R>^8GkrHQ4I1vYY%eW|9yIc$@7%ty#K)~t2z+! z=-;aSyx@Q<(%X5$UxSn+%c1Yd@oq|@iTijqV4#w?&)Dj}cd&vq(+p8MgWa@9a`xQ^ zA0~FTI=W=}Y85$YJ1Ma=j8pxZy@~AfLrD&+{_Q*Mxttt-zUDwYJll8q!}!p09xAfv zabePIAtA#)1toP(Q4-gFpYD}!A|oeSr=P104}$D@KBTKd5fy0}^mSSpdlgCOx6qxm$myly~Z_iJGXYQW-*m1Q(Sxe$_VQc-B<>h2qMgz<9dtra} z!^0swU48KUj96U|x*XG{qL=|~=^i`bq2TL+qUO^i=Nlv=l8oa(~ zT_tI}Hu$_v4MH9abQr1$RuJ2(K5vgWS&|<2SJf@FO-_<)mK;$dz>-`YvD`Ht2Fp1; zmKHAZQblT=>HO@=7z?sAuvPPFDJtUYe%$eCf+ZPS`tdsQ*@8IVbe&hfx{OR!6?r@h z<{8z74J~s9Hd?d3J{jEmrX`uC_b?2x$$LJDaa4UX7YdFMYRk8TDZx-Z3U&ZB&bod5$)g1Nnukfw(u6CJAFUrZG z_D3rXpJhp!S#5G2??_0S))qlcVBWFu`=FUaOM~94e($gr_FyNTeYLrT^Q&ju zA2Q-zzqsv~Pf$NCt=CnYp&&UQD^BSJ4^ovI)1>DV(8oWnE{}uYKxFy|?~E^nWaL84 z-M{Xsq#&DT4jSRp*@9%2Sh&jz=I?Q~vz9)CdZ;)dXvmA=Dzg4$boLOC^N>f|IQNl+ zR7nq7vkMN02Um~(nEXOPyo$D~a_EaCx%su!l$d7UUWY6Y5 zUnj!+x#;Vw8J13RG9cs)iG687tmCVuw1;tI^phK@u`o~kr_%gOzm-vt*To&idBK6v z#4q*2MqE~r-B(90d(a!^_sgyX+Dx$^?Yv2yY7;ET>CJz1u6j>SN+s1!DC;64*;jL> zmC2HmFTXyXTBnBvx%eq=pz@`hl(uU4uZz|a)?b&r&qF(kh<~tXq=Sld{8}Qk>JSwv zSFB&-m1C7;$FA{D&fg;B>C?;mz9-5_tsLj1e`hJkW&7S^vhJuzsX-OH`$M~QFMG$U z0nE#9UU{~{0k#eXHJd%98axQoxZG?TWeTj{COCF{9cM{qc&<-fauC)t|2SlIfoDti zgcZ7J*;PjDG9FD_0v~n1xpKngjgXIKuHUR}u)aI<%Cm1jI9RLWW><3HVL9ouxleEz zSpPXb`E}9tjxzEsIYW2msf@h;TsR}}6wFt`Qqtm9!@95Pf>&#x-*|MmQ_IaT|EM>v z%ogYV3iABN;*q;%D#?JI*2{-%myxEI#!YG1O9ktmnY+u6kQ4vKRw)_nWJG2W{Bg%b z1^K*qM{?z2DpJE^=EzZ3K+g|#HZeymNVn_?E_)v;$%ph2&*gV4$g5e;n%7s$iAVFI zS8S(PlCBfS&rWXu>$kVP4=;oH@E`M5@AqAQ) zMo6gB^OhINs7UactP8EQg!DMk_1DJrElBOXucs>B%1HIa1S++OPliqn4zwiz;~?tZxnloH-f%4%UZ92h^#a3FB@? z=_6HotH_@%GD;Q=C8YTDD{F6QVLWJ?sQ6_HtW#IV+IztP+LFt6MpX?`ksCyU#oOC^RzK7~1A^&_SH|DmVC3*IvMCst}O45Js_&sA`z4A10z3)Xh@Ey6j z=kR!I6|r$BG5KBvOQLvw^ugUPN-}GI)l&=pQj)>fZ%+1D2%$(oDoLfqJ{3Q< zBV=|Pn}g{eVBXNE)aou(RAgo5qs)7=<>dVL8}B?o|EoUS`8*xg>52nyzx`QNMryqH zKK-9#us&?oevwTLCAn9s`>al-Ey)YZ9d+lxeER_V*)qx7jL*=e=a-3QtsIZ=1Gh*IQeV z1DZ*}fu}4;+ezKGsU9gwne+43REB*DWtrp=H_8&SQ$0OuaZ5tVYiHYrIur8CgJuoi z!h<2!)_23FSFs@FI+f`Z{!vDjw)$&N`~nNIecg}iIbUGhJ-h47FiR!rzSP2M@Mt;N zaF--IBr8ab69H+n<^ex%)y${+p#QX+kp9Pf3-UOr^r(eR(t-I99G&Prd{Cv28v+IkO#Q#QJ0dhsFnGWWv+b#fdOK*z5VUd`Z}^c{E7n zw6u|&taE7IeZqCv2dH#!Ve{6of3WT9`QkACPM>Q6sHlw0 zh;|a8K||mD{nd4S>Gl48=bY!c*KzD>EC{fxfJtD;j1%*)sL#t30jFf8hSTLw#=DLD~xO$ z%poWSbCPr3q3<)t4_>RAf%;n~x$np_BE8LKQ$AR;DRO#L-E1Q!S#7*zGl1_ut3teY zvjUHfeoF4XHy8TNwyqzN;1A~n1f$dOUX5nFt?mP^)lE6HX*KF!!iVdBS&j_Sn7ndt zqat_}UkXDXIC+x))}j_?;Ixp$AH%?Tb7Wn1yV$a+S)lcTD9-E0>OkLX*w+JQ7UGMK zGAN<4{Lm`krO9RPE2LNPXpDcxiyvt$vd$Jtw+QBv{J z=2Am~cZM31Nt^S%58p)qs&n$9&J@(oX4jb&Ya@8HLwKI3FZ#g5Gjmz{1|E%m%eLRs zz@hphNB>;mvFOe|0lOHSm&+z`*;yyq)R3QV&KzRV-Cx1&yAaenR(XiGZX1`bPrX5Y z;Il_2@jV(yVpBz_ZOAzUsFchM)<3(&qQytQ=N8T-%9;1ci<`rwqifp^=uTqODaSo$ zo*)=^U)ihd7h(UaPJLir&m(^!z6rZ$JW86u*xymjq8~Lsx^#f^>#oJ01H7Sg2Yt2# zc5-MQMY)z0vS?Cz`r^y$){a{ebaYMNoWQ5&S2pptu{8@t+=0as*p=%8@s!+ zoLMB9t+H1kl|@fZ=y$mR_n*wT$EhA;k?`u1)q=~HcEK*%LkM##S(dfO%iQ2175?g=ztxX2B_y=wx zdv|jw?)8T*aqyh)m)uXeujNp;*^l%=I}RDuo+4jupmI;%s^{mayu~GA0RRzvjEK1ur}!eDww3$EDj-6K=S%Xs=hma~mIB zz5#ti{~w9d59~k2xpgKEJZc?W_v!BoqS7O2rgQi>)XI8pUMvcJbA6Fd0s?o*I(3ep z5*c)NW%28avP^mswDF8b28%XKw5}2bf7FQ`%avWgqd14lo69y6iOEhIdWZdf|5wfA zXgr6fS?;2>B9+Yy)_D)~Moo1Y`oYy@YpeJP6Ml0kzVUx$^+387lS@i7C^GJn{=;vCQ zkKGWw`gX%U>)uxmt+l=1GOq{gIjb#EE`mW)!q!vmtQo`?GyOosCpO(od(zl0$speB ziKoAz$6ku48m+d(fA=Yvy?HH*&TwUHE733KT%BxN0TZ`Ke4}&e}qk@v_u50aJkvLoa z(4sZq=f&ddB1D+4C7&ON;?(76SrTPK&IPG(#=ZFNNgI#T|QS;g6060|ip z9Qpy?v3S9J1K_RJ~&EV0Fokz+)fj>J;oy`|8!6v;P1)HDl z49at8FqfZ#=j{`?7V?xqlX#mhIl7>pijmv85gtW8>uZ#OFEJ~{_2CjH9t8?k-dKTP zsqSH)FZ*Jn8tem`O>!n!u&H~&;?*0j zaOiVbah)3W+obh7%Ct0?)U)xFSL_6IBtfAEy-n~-4)3>*`Oc!t8h1}@zdS@_DWy>B>_|4)W}8~P9Zscr51SXdl3(UBSZh#~$Haa(cTyz~4}wu2sDO^|Pv@*mCki zeBSQdxZibL>b%#tdpFKQeSz8A-q+w6cNho0Ko5|oxH_O~)*a_PI~8drg@ zit4o#zae}6VUOhR1KseWCT=G241xa^#x0pX2YRH$*gAq9oVN`}Y&fnL{Vm$FLy2XwZzx#OK{u}*utY?p&?kB9J^jRPk? znsvPL*#M7Z0#5N1A7lTu%A-2h?|?sl{e1a%I+to>-`*_%j%w{5eq|q0nW zwdh;sU+7(*xAIvOg9ok4nRY^C7LNvYMzC+!aH#fbNZ3L6eWA+hBR#=08%sGUd9TCjT#`-Mw=n+NnnE#c>t39Cy0hnzgBq{leSq^!}icf#9QbTquuzxmvoLxULb*9yg-9!})a z*qNB%#s}z6o~P>iZt}=Jr_O&w8a!JrwUlcF{xW<+eug-U8V%3nx8LJXrCP%D!79|R zKUemC_e5PY`eW7)UMHuonm)Z6cxt0XOavBsp1N#_$!P}l4gS?z3!Kz6JI?$d$*KAlVj@XAoZeG`S0B5C^x!X9y&)(*^X!TE=htq1u z{y4jWPb?eI@QwveJ^3tZ7H~<)+mbMkT;RISdpSGUJStAKRw^|GFHG{NkL72Rst5nv zzH`teD*J?w&f(I&@hw4y{po<85&Ek5BNzR6Z#IS9GvQ?gqrSg6XQkQ9AcGm7uj#I0Q0jY2 zi&<_=x>7tcxLJ@(QxD}Hs{&r-I7dZZas&>Sp7!Xz9D^(u&hGh%KEMC!c{wlWDZ^*~ zYLGw^k1=@jP}KXJeqdmOX2Zo=%AaIJ|D#3Y00JMkx|oeE?g_w zBW_$Wcl4hYv=IK%fXg+rOAN}+R({;B$e~|Fh3~Q_pY>N8Y)!U#C{&abPa{dPBo4d!pFTeoK>X4C* z*Y*%idz@6@jC$HwKa{M07Ik&v+RY~DQ4bFEsE8v-tu8j-;Q=3u%$i2ljjlppOiHpc zL|Y5#JN)qt`sFK`y(&rI*_!G%H_9z!)0y6?jogD=YAzLI&c^ps4m|AB0REVBH`u!x zdd$KdZL>zQICM0~T%-kka+9*cVF5oD+4$$Fec8t#ZRx9vZ@Telm&sZEpcd2-iSymt z;lG^KGCOeXG=rEI4-WOp;@rPqD!H+POH&+@=WaIS(CxyYcyHt`UON0Peej(@t9dqm z63+uqt`xK%_JeQN@<+=ug-K)GwGEK{NG{vkFJutB{GjrN8(Xk1Y8Jjzv}DkUC!1I@ zlUa0bR^E}N{48SivzGoOtHmHkYm;|1pE*=GSv!KQ$ReTq7ex!3t z#196&ID1q`8sGa#LcXON^v6IK&Q(F=Q`-OiDxa7Mp7q`MQ}KE>%~5{SR*b%PSyt)0 z2m0eSIg@}qg(m|S$6lN9_}(G#LJ3!+?ckLM;|usrac-+@?QNCe z+uT}nBK;jdgOodGeJwtU-*5W9CORl^rH&fy{KmzYfqfY z!g+4f>k>j;k-g)yvK&0~YSXJrqSH7uvHAQbg>>vUi$Gl+QPlT9P&^BA4JdA&#hv z&-N5OmCa?)`pYVk!In&N7O>E4E#i_}OWkzES4{en%Ky3ye$0TkNYIz_@a-Q}-Mzkx zMdg9YXVZG1rxwdLYy}<}3s_enIl!S8$_3Hsz}LI0_m5m$&LgJgqs$QC`>uJiDU+`f zSskl9oC_bwdR<_T#y{v7)k6;kS8?d?66U9CznHYef7+s2=%8b>N@YC2U!NHoY1+bP z<`)(*GF0Z!w&xW;8*Xyw%X#k^AHa7)1U185hd6ZcwpN+y5u!C@6X_kxCO3xV$@qBq zsR^2li@^1dA8S|_A`i2}_-dw-C5yhreA->1&!C}`YG(vce}5ja9G;3n=A4NN$!t>& z9lH79i#v=t|8Yx`J|>ek7OW~^_M^V4hva*Nu&Ddf%1!6y!zdF=lvsxIJ4tQ1-ahQl zn{zeIqIx*=>UIB&*?5kl?*ELoBNz3HXK3gCfk~CJ8)LqeGO5(2sjlcYn-ohj^FKPG zKkXJ1K7~6>e4g)B)z5=|5Vv{eC+G&x+{$ZWH=;kbKe%MKj!5fQTgtRt9__ywrn|zG zK}Tmf->tpJrr3_5z@##)!&c$LCBLB0O)T@i_M1WJi#-g!okG5Bqsr`N?9-Z9@2R24 zD+%Z(UN8p!$f)+7(t&fW*je&03GZjEL#e|$f9UO&sgV!v@ksZsdbXH5ha4w;l76EL ze@>bIc4j(oDtng8^IDwml>%d~T|Dx>QnzaT6D}Rs@Xz@OJ!YTF%+l@EJkmCZZk7{; ze=L=te{ehW&M)gDP7E_COiMbbsgFnZZzk?u4?m#MMR&mr@Ud-9$^wq48!usBJm?%^S};=R1gjxBO5(cnbQ(@%0V|wj%#B z_g&u4ZyX-QT9nM|L;j@9_lK0hRW?PhTy$6zc?BWC?L!ByfPX!69a>?`q1VTppPw4$ z(Oi!?VQw4X7cpkUMBwjJY%@o6fal87MY2BuFIDTRu|&Uv)$h{i$Gq{fl_b3)2SH&xL; z*fYiakvsTUrnbJ%i$e?Bj7!U&a_O4NnzxlYELxq}_|H(5MZLv~=7p|@u5c@SgA(2& zzh;I_wmp+(mX)cEaPjXyKgnR-fp4yR?dzT-?C-zPgBer6x18r2tAm%+ifN{QN3LzU z;IrET-;v*`c^r5fdWpK&D>dc<>eY@^)DX@ac&_WowH20vg6nvnwm7^V3pi6(gqPjv1eL(a2 z4m(X(4vDmKjISXlu!#G($LJQ1{36GKjQP1nG5Z7vnM zj=!9Px_R`}=|q|1@M&%-CVjYzzG&$&)gvFcgLAR!bRhbMu1lvcd|BU)?#rKS;XmhY zc>NOf_zh~Jv!7`om$Q!ndJ#~b)p=<4B{H@$TJ;c&^IBa&P^+c+-6!V zEI7cXhnlA3Hk8JI!m^vFXWNbv|p2E zLPv}fT)nnO3VxWkJ8$q6^t+afp9535^kZMC(+OMnaMg3125+H0T7La2v>UpJ;j?%P z;Gp8zBMQ5BBNy?&vLgh1_bXjD9l<#cIvAt${U*-!>56qb!RLC{EQ|ge%_I4{56uPz zxTF){G{Ny>QnYf0)Nga}CvL#NFCLe+Y+hAog?{Rj3b^<)n`fv%U?uRB$j zMVFq8u92C^B<=)#{ebUh%I6<*ZZ?OS2z zdiS%7)yV<=$-Q?u2s+WDgBSB<7odK>cT6kAe$?re;ar+RWFB*qS9}q5_gBln-4E!i zzxRmxqF>#!u2(xSA3xVU@9#-p^eLt02ePR5>5Y5d@OeTXa;qEd1wLMWSK@9*5On#n zkF`F?vxs!_mBb;(_|Mh6U3)j`mZahY7yj25(FP?-@9uBaihLFfCZ$3H&E==2=Uc~X*Y4!yxumCaLtFAzMwJxqW}_0(lk zx12?T&poz1$LC4Cn|nzIx%zpFpOzgAME_td&G1uY(EZU2KjBquVyhlsB(oQF`D@p$ zXmKumZ&is~s>P$S6XuO!H@Ng|g~X!^;K5Ac$D!}wmz@vTajJd~em-i~Xfw`>Y^Gk7 z_a5l1GvqF+^e|~$5Ip~zKNIy+Q6#BE%8x_Wvem3A(8q39ZXJF%k4w=iZZ7}xkEcT%Mr<~R zmJM2o*}!jo@zS_&EpX=6)Ut(H&{O4==Z)x$pkJFPC-gjkKbQI^HBE*|f8PetQ$7rumd+>p48qVTj=qnfRSnYlb{GlN;8l()KRs8DYZQ%7etE}Vofa{GN zPfYB=`;*>#HDn0-*{5dC>LtFw2e-OK;%td-A8m+WOK|C!LCmShQ5I$UiRS`PkObG)~z1?pedijhv#fqc#QN~dP%x^vrH^|5bq zGbLQL1CfKNt1@171NfnjCz^sj^jTH?` z#kTix$TR=@ZjL;QM$R`XKH18kOJYfJLfD^@%2^7N(Rc3}9W~j@$E4H(3L~-gl08-=F*X=$2WWif7xyN z%HHM$kIpo@i2IZi@&7OtKkx+W(6EFd~1xw5A8BbK0t5`nogVn}oV= zc$LSabKl2!5_7rq?(9nc3&2xuThBj;?SyV?uw`q94AByGOS#w}F3Bb5-|ig&UYNNk z*|8dP8~MW;1AjTh9j^V({|J3I+-~G4*8ix4#DYNRHlDw)6m-GQ&ARYRKm>d#Sm&^1 z@(1kaPWOl3;P2}A8x3bTvq|AJzr#Ep@U_p^Pb)K^1J>B+U+6~tZ8yu^$z{;^yN3y1 z<{?L9zlYldf56^X!*yW{=9b2rw`(NwsKBJLB={newh7ICH4i>>px&pA<84g3H{e=H z(3iiqkFq%MN1hJv3zGyd`SQ5>r5gD8>|^_{MbyHtE|?V`AjKum;>XZ#k^7P_jgj94 zJ;qzAqc#v@Ehq1ru};QifEPCJlba;JMH&s^r2}#3l~CP z8j2b5{u0NgA?f`Jt`5MLTeg2LZK8#dibbN!KXmO*AO_I@4)9@%{E`|&sM5hvFKX^fU2pVYrQpb&Fp zsfWWVdoB|tE=<4glE$Fz+EsSK!qDZwoAJIJNr&2NH+j=+D3s?hIfWYg@0Z5kUfU$i~WXW2UFeSXi+S~~s)Z`jUf^yUnF z-kZKL#!)PKse5Ec|1>u33VRv+Qh-B6eYbZSKp!$x98j1TLw_;-+V#E_>!LE_&p8&0 zd~H`g@^gWH-}lNn06vP)B42f88T8JUy6uB6xpcusdbLd$i=5z@ z&AK55+DG7xVy&4~`{37KKhn@;)Qddhk&9DW!EXim9~TIrLrR#4zZq1_TomJY2IOosJRaI|-KdKjN*<68c;(4X7 z;uZ2I`>OL7${YvI*({v40{UlMMYr`(Bm9KUqR;(hs2kad0?pfTKU!`<{{`^*CX-tS zXR=vz@rC_?dC=`meb?+b4Ly>4#>{bU1+PR&{3oScfd&IQ-%b7hzly!Ba0 z8~uhUS(BE%jYV7KTB}_Pux=7E3Hit;L@FH1o3af&L9S3>YbJ1~tQ7wUeB8mSvTbsx zcMrup9%#X*m*|xquhwOfhv?l!CzmnlRj_fzl?PlZeb;t23O<91=o#B@z+p;CX;yc^ zmu@)q=*$-Bp0tXooiWk+UwZ?xW`oalG#KjPecGP3&WS~xpAdL*c6b8o zSowQZS_gP)L20*GCFV4;(u(giqEDEotvl1irpp5CU18|=k)bvt|KEwbVZrj7k>Fvm z`V)#ulYw6xO&|NpGf6LhP1T?zk0!60JKZ)D{*QH@HB$mU$i(4*gXe+6I)1Lxhkow2 z#(QEv`nqy=!$Y$f@UQ=+^64uOb*pvdodg}&){Rq>`J{{tjML3_b=a;fOonG z#6NVlfll*&?`g|%=$ShrudafhJ8qolk$M%lPSj#>5%$&Td2+9JKIPGy7V|u-Ch+sj ztItQTvncE{TgUk6 zi%K~hW0RncrE@RpPTs1qj=2xvXWCs_z7~AdxuUm`&~Pe!t8E&r+D? z%U_d?@4qFI?+SROhi z!I4@2^AW!Dh2ROBbUDww-{XBBS)!o4j7^QZv)5bA#QW;~`#2Bl8nIHzu@*Yq)qh$J zCXZS4H)vbSBGi4Q2R*(ekCBUO@?IV8&7-Mfw8#VMz&oOTd=aRG?lp(Cx<~{0xTL9(Z;&55x-@dK zNCfstZuY)!PZ+e#X4@xsbL4V&)m{7szi*nZ=jo=0$R}iT%O@uAfx4%T{)TR2_xFQg z*c}G_k~Xd;;A{JxS9fgp$9&Wa-4c(#sFRkNv;K52Y3lvSBMP0!aY!mHDMIdLY`4K# zf9Oqxlm1CZtYJ|@K#k>&Svcpd)Kw=N4J`)8j#})j6TaEuNY) zt#BOk15PJrJOodOoNmqyMqfKspta8spY!%o3%}rN)PcO>!z-{qZtXX#Gqc1x&01!D zL<~OI?X&(V2MIdujjJO!;cK6N%Ipt^ZfrVmIK~`)!Q-5>%0-wP6YISx3H~N~eovn7 zAe$WaZ7U1~4td_+WAE9Gdgz)eaA*>nrbo_+*`WYj{{Fz3&a0Rc`FZ5ZDR(wKVrt~9 z#C!LBJM~~M`mvY5#m2JJ$miD;UEr@{kg-Y29s3$CNj&s1@aRN+6E0KUC$dk~1hn)WU*<0M;=T<*VdeH{FGsW`9f~s1~4{nzWzJh%Hp}P1Ym3R(iXU?_a zWpnAU>eSg61X$!8y&}EiB=pHb({0Ntd34n*nOai0G&9CR*hd$>6VEy5#a8%7#_vZL zD#4#Ww);$b4vP$wGw5xfV75%rz^)x9aMzT`&S4jffH(PQ+Z9T3(we&PC1_zM1vt ztJ7xXjFq}$?y2;NFl#Szn}M&rz5&8b27ONAx4lbXnEyCU`+|SWb31>LBl|@bO6awNtv&oy7GpS1G+HT=WI> z+0WY(^b3IJ%CtZ4^*Xi# z#J#Fp95caVRo*M?>*P>^f#fACbrvl@(_iR&8t?n+vk*JzT5}I}H9g9Mu6yTS&4+p} zJ)WE06H6oj7xJ$Tb>Rv zoLnEb*9&^x^_od*nMC^gm*hD*Fsa>d!^z}&qJ*h4hAV5q{~zDlHNrrCqq6K+2kLLi z#bdu?p5k5r#i=_3kQcUy>^vHw$fK>3I3;Q5yI-7a-j3bEd`{t%f``rUVHq#oqk(6B zO$ivj^$j@f>33Cc5_p*Z$*t=K&}UXA%`iTLyy&>V88uI$A^p53MW5hr zm*rW$xC;EB{L|2+4|sO6f}vFk<_%wYZ<*@?pZ-~-Zp(fa<;>ppI~+c>*Q=yCCxLI* za_|3}ycN1@W~`1Qbo%9^w@rk>SErvV8PP*7q}Dw+=N5F%tMWfb}vdbaQMkOX{xr6F5q87mgK{L8o^3_m(T-t=7x@(5RL z;&wfE0uB(1xU~g+N#W!@;pJ&O^6+oUkbw{Q!mB3r0qSYL8n5|sCF*1Sl_zsi=fs$- zt^C*szo%Z490uNwI5_qBFYwG2cQx-xz)peOfHQ? zNv>tl7L(jdy2xe5gnaqS4?KL>?6{4H8t&VOR-e-R0({fWX#G0y-ebr6uRZ_6qyN}ZkNGd7HK>! zC=LN$Z26iXz4$nAyrM*m5%jgJ+P4SJ0JpxmxnWBQaOs(M*2)a*QxD&5=Yye>I<8vH zlYpK*At$t^eY+?@*WpNW+%Hk1^<(;6_&oD9zZC%o-A)-)?l*!zCboT= z7x+M|mBt<)oa-$~TkF!wYVukyr*DjK) zE5JIXhvNs#`)1liE$M-N?Hv{0hrX({cIMuC z5f&Zeb-vGDi}Ua)ZfId7k!OjX+6nkNPps1Jena1Qs_9;Q>obpxII}s9@EaUvzkd7W z2lz|+Fn=cYCx3hXE;;C+f1O8X|9nSusAA8v`XUy|`;5xI0iUSyJhjN*4)=M;yub42 z8;j%?|N6{Be@<-KU7&vtIhr}!^3CUA{zW9-BpmD8u~&FOei;k7kW-r64Cpp7m6j=K zs8iZ$T){fz+@9oBseu1R`M)^2C>772;B#Vs9rS0jx+7Lgh^_>g*mS{XR5}otdKmuR z-|NOr^;j1PpRa$5p*K5f1qZ2r;L)mauUB87qaD7p+;M9G@LP*cYlI7L&A0djFj?g3o?);FyIRgYLLL*9n4eRP!w|~CP7;xcv_Of4phyrdGs~!eV@U%$1zGegT zfxs)K&i!mk^8Pru%>}t{p#|QL1d(63;i_Z;9JtJDi*i^Ae&1rfyz&J2KQRZqZa`daKmXf4VyKB-zN9-*8IS^J37xN8=We=h*c8 zip+V1A^1Y28DZ}PiG=*-PrtaBLDBV}_3jTs9~_G^?>-GZu}NJ@^%a9A|6Kof0C-N% zK1P}!dYI{s<;|D9fCKl0Z!r{u|2XWu_326Yqzk4C&YgtyQ=cw74qTqMKQ>iK3HV4} z;L}2V_<+YRwKx0nNOAVo%B{aKuQF~SEeSnh(AzB za`OJ&lH)zZ9;C{N`iX z=E@+<<2%b|wt(MHGq-t|y#P4C%X?oU^x>AT7pK(s!8e^cByR|OHYW1@?2A$s6|!%) z-Ft?)+M&>xD&%|2O6I)j*W^ME$T*~~o3g#%T&3Iw6JD))w5x3_WY{2)w#$PWA9s1SXxT2}RA1kyzO^-{5PhXwt z7y1$US>U|G;p5OpGPaoN!l>O5LF8A7j3}%cJzyv%S~s|&SMdofx!1SHxA5Mj{1{@vd>oy`S^25CVQfy=r#OP+Zh7$2cgrg^gF!w zK9}+Ze-4@Zpubm7&Yg=Km7KzoOl{x@iPE`(kJo@7zhIv}1AL&a>JU%>d}Cbrs@xO( zz%Staj^p>=uGQrl@;ENNM;#CS9n)N+=;Thob z{Jjte;rsc$@@`hF2fscS{Y@8n2cbh<2OW59`u%5V{^2InVday`*2b8Nd)#qg%RBu2 z_aJ3E9N6K-?*~GFHxC<~UUmpLGycSuhb6ge627~|J>fifX5}FP59BuJK&kkGv&vEcUYcG0^!vE-()NGsy9nqY%D`D?V_$D7i5{IEvExA4z z_h&MLHl!@o3JL{YYrme9K8pV1BIdFQ^-ij8+oA8am~&rYuwpK9pJx0whi9qcegfys zEG{4Bsr|GqHK14g=_%8mU4(m`QY_w|L%wX0M9F@&)xh)bntG-PAzy1)XfG23e|*#@ zrhXCT1h<~bWq$(RxHxK%JAj<{O!d=dHf*}BDl#Hv%pifd+o6&@n5%SgdFdbzJ#6*4 zd^O~zE>|$u%*liwkyw;lAxU(hEy|%H8TTm6+?MwQygA?R*D~HeE~V`bZAwI6DQDCt z+zlf-Ke{-w4tnI|k*c#N`=RUId@S}3xj)5MD|F7HUZ(D~)GARXlHuDpWuk*ei$)Gi ze*vFrQlpGu{d?%MA3MKD+hU%#>G3eX0en}x=kbwukYlKnIPL&FAvL);q7HeC$7?tj zdy%IL6d3)xH3|M_aLc=z8V2orxnWx02Kaq0Dy}gbOj<3CAT z6+qV(8aQ+}5_NxH=ku`jxc9+%(%L`3-}xbTE)IS{eyU`XROM|BNw^A}J&5{}q0(Qg zjrt)o&AqECoI!84h0n5k13x9xnqy(Xq`^SJ^QyqHrS4Lf=RntT-5##{UK74eLUvds z_1buW`QB60qW z*XZ)Xud(2#Y`g7j1zqq+m(^A9y;JuCy*CXZPq}oL((iIEb&Is+i{L%JerpjsF1?JoPAZM7n{hSGWs+tfrz7rliI$QE#K@9`G9fByX&|6kc&kDbXydtA- zHosmW?u(lUkxocO|1^GTSbP@zwdM5v4__H{qssD)-b)@y#H>=-jpsH!oB!(3Lg?{b zFUG!Mek7df6cdc~Fk9U2|63oqn2zHicKdN2ZaMOM&gYWTD!JPC{%rF4W8nHGhNyn~ z0frm;cE=lDW;OIv%@qgFJpxX9S#LEDw4ZidnY+R+2J^WO#${uFB1akg-Tvz=%tbZK zkmRqx{CC3aI2Y`@vK#f*GTzvy70T?Z>$&uCT0x2i>id4-8Q*1NFi+aSe)eq*bl$6p zJ11fO&)8dgc`tZ`oBTBt7cA=|+7hkaehhj-gizkmhELGB#66!~twEmSesJB5#XQ>6X_@`)9#Lv6 zdr>F)=^lo}jRVMAWH?W+EqU<&{Ln}C=Qilli7qnzX>8i#q_^7^>wC7b<@&cUoZkg1 z8JXWPhpgX`^0|dU?_Q3IPJtdd&wJTqS1IJJwX-hFy@3Avak708)}gvacc~!Z9*e{7 zuddA@`fyz2q}z1lvVpdH?xyJCJH|Pc=+O& zjv<#$|M<<93g2AlXWKHWMe$EMeAo2JfG#ytoQ|enmZ{NnlW5qmT`<*!G10gqQO8NFm1-!SSO}P)lnbgwNR37RKTxaK*I2X9+0Y`0i z-eVpe7mGJM1zjuICw9r2W0(V-s597syo%St$R)Q|qHp(JOEkU%-Sous;Gr!n^604E zGZ*;%Vzax)b{qKH<6%!t zOZ3kJVV&l!<>18&>Q+Ua=8&&zM!2FChy0~4KCspR{Eugoj=$qg80Y7i*6#D?^8#iQs_^U$? zPkZ9A{r`LLMt$=lg%TN*KVtJ)brP4Fj2C=bEs1>TH?y=T=$+ajD~nvVLf_Whdv&uq zbiIHjuS>*$S5_4&F|?77x%vG5f+*bAHlx|($0Qc<@7R>M1p21Li^iNb^amN)*Ro@n z>w10M%DHtD^pP>w%MXY{DZA7CcU^^F;2r*Qb~f(4VSLXFjbhUJgN{wY?QGhSA1&02 zJ~ztQ@#xb}HcedKtgekZs4=+n`0=YO8c)jG=U?0W}O*cy`W;=NDsJ%h6x8aY~)ePtQuIgThDxityv+H+Uq zwA>3V)I z{}hJ&YUnJv{BullJD?@A1^I+z{=>YKIlzelM`~9gU;E_O3pdVBF8TkPYcgtuoXFJa zrkDQTZ%@-N6{D}ktY=-bvV^}=5*WjkM;_5Mu-3$oLyy;`FjJrxO-`-#`~x1bWZkaI z3oZk9Eg)Vk=8Sa3pI@@Q$RY6|DaF*^$g}e2J4C?0@an29IET3k;p+=x-=mMrkdhjU zN?_4%r+uTBK5$6G^NfMaDzas3PjFrMw z(DOM7+gb8H@LzXai0xX(B)-KtTL1H2_xnH17((EUy?-@-GU4yf+*HtueqzxA{)}9R z-<;2le8?;R%Dp7x-^Q znpIN__+Iw*J;J`{Ipi=X&@|S7`)L?<_crq5KGyRHRx^!g2P4M7( zbCbi?!@t%O-_y2J7CL}OC{O4K@_mBltCTO`e#SJp$YSuf;i)_Ao}00V`$}-((+`-( za^2AJY67}k`P!J(D}WasJXFYqZnk>0qi*U>9zD%nVKWbWEhX^W!&M&IMzA z+P}%F14qUWp8dkcp9a6%(|Ummgr2yrGr{}WW_KuW9sb>Dw7QoKeEyY|3f9J$Pcz;m zeUndxuQdA} zm-`2PUuT?p@>dBCWem8yefJCVG-1!W#u{-ijQ{gh$`^4Dj(EiW6!_~W9;Yq}7Q}rA z33SPC8248yufH>u;Im}#J31go^mt9qHh$osM}N8Zt{~siQ10BqHx2%y;^H&0+PHVX zsb;lPBK&{D`<3^R*AHWPRI7vEPm8NQTngPs{i9gNx@_!c+0vWl&>fh2p34-^!gJnC zHOz&cR@I>sJPD5^_x`^1xjCx*KGD3^`BM<3KOe{mU0? z^D}qi|KDf#qjm&+_S(e$PGRH_jqe@ph}-5KD=!a{TX^l^^OMaD%9ZvmIyfB(?03VyMt&Fz#N@MO*1 zBJY->4`r`6ZlB7ao?~gx_<=9=a(`qimf{|W2#fG6Jjcij36Z>P9(CQ3o!tvuXt#8C z`SPp4A@8$}zeU}w{9*86?EvzE2DRpsw*&94KEO^weQsVhO;Qa!S0`w6R%;xCGH2X* zShENDiDemrKaq2jVK@z6mtas4E19WN9>xk{*g$%Yko;eB0mpHW8`av6NMC z0v}(TKG}H*=6gRnKi_x&IE9ku?M7ce5wghV(+lK9O0taI(4UCU-uoE%clUd>?pHT4 zx0b7Zb_?_}wKuIv8_;J3l-^{>!^f%q{U^5qb43Am0ke_@nRGh%xI%Iu@+5`VpQLQ! zP*D5pg=_BO9<9)5-99BQZOzQ!X+p2W}M>}gHC+RX`0LKr3~8Gvpl(L z0=`*R`O^{~+;8DvygCze>fsXGZ^t25?(g6Gz1s+#}(e{Tu@i0=pFo!n0UDVKl_k#c*J5A@OHU+l^ehNb=Ow;6n@w;F!F44W0am_3GPg@GHtsgskpC zy}hSlQz|#arSvqff(YbEME7#n>^uQocUi3d*(3&qyU6rx#`*o+zNB{{>c$FdvASU3 z;ntrYXXKcGM}1Q^jrYL4AU@xW{Fh^X!gS#q&1=Zhs)mnu{Y*RN}ZuCmy?W_=Ov=?~lzJOg@Roz3)D9jF6`RXzkqyW{7i1nc7K zagTUQ(DVZV$Y=OlNm;w#e#Teh-LOrH(CURt}r8hz&2h0rA_ z@FkX9|8Ad-{KCtYq%2YBKAxQg56mT@pB-&hoeLeOG|$t|?h%vz2`jz#Ps6=c%RUB= z;m;zy^u%WPzD*Ye_qER?S~R8Y@h$MZGJXF{;~*Bzv|OCKd=;CfYA3lqV*vL>O59IM zXHxIV)xRU*_igUq;O{F1KU?3~?&^N%_?IdSqV9cUxZXMpd}#gNK#5-* z>zI&gAf%JanJ4iRTccbY~9mSKM!%F!)`I5UCmOt+$ z_{ZQ3zVv18c;0uxAx9hwo@<|T zsN4$wY5AG->z&H? zJXw+R@D9AycI#m-S=3%rwH{*~fJyDIo4u%vX1a->RKkm8M>*piP@Gg9YXA zC4U~Cc$f2mpOmfo4gHX*8-t$wkViXx_(H4eAG3e$O;+1n2T59gv7XC*%Kx>Gey;W9 zk0#RKje$Mf@0OC*>^bnEWd-JU-MaUp;*%%i^R>tWbL~*qnU^9buoKI zEd9jNr&kW>v&O6ZZi?hC4N=ebT2Gv-&RFYyZS=RIZne&K}ns?bjzw;Lx zp9v3Zu}^f!OpWUn*7F?NUAL}JdmbWf-_=(mRp0o~vDRhwvk#OWj+u&LIk7G2nPQ=!@B$PtWduD2Y}IGFLw$>2_F z?3nM!pR#?^=bWQDZC#7Tt4*YhyG|sUrZP`)FtKSw6W)6aeZHvYOL@XYat@83$i^?dM{{KHSFpN{w5znfcWA82;lJFZjzb}^6kWOw>ShjwPtvHj!2cCc@?%-G>|%_#>@7kA09 zW!-c1l}%6G{?zi`Y}>H8CY*QF=xo;AKAao1(7EaX_FeC5TD@GSv8AL&pNFM9rM^G4 zs7skkM~Rouhkw30jdb>V`|uFudqL|c|HRR}r!%a=d|!XQXXNgrQ*MhnZ*JR)>r?rE zkHys5p`AE~eCR#xq+6^HIFwy~`!`84{o8-eW>eOC7yjm!eu4ML0zPVg#g21FzgV&8 z81wIy?qwg(=)}3O-5Vxf8P2@R^p?r5$ft`=-t?Mj#(eD55jVQCZnACi_J-#^rC;l~ zf7j>i!*SmeZSS^={aVdtelnNw{GF>|y&9!+4p}erD;1f4YuT{Upzc%I@8$OH;7!&A zu0+&5+2jYti-7@cz8pxrtX#8n9sPzIO`2BwoccG}q>B{Z-AwYY@t{SIUc6ttRSGiM zX(pAjtJomrSFL1oXl4Bk#P7sbp6~r%nsNTI{rGI=3vDf*Z+gN05BoWb_Rf6D_sX0c zaN#ZevVMC9{V{i3DQR1+a`eo-ri z{@~bqqc`1VUZ#(EX}a}Nbf>xJuKi4ZV0Z9?S3Kvjb5FW^vL9x7nL2$YQci1aT=<)v z6XSxuA(=1YHPV6&nI7LWt~lQ}cup$gdiPZmPtLB-e!i&dt3GR8N~-jA&gn0|^`GozUis9qC3nTSqB|g zZa!z8Txpb6`sJ@`YZp+iYAx}1irvKg;H-0te{IOPZ$@~Bu6rcu^uy}ij%2c5sNdS_ zoOmUfbXmG`1nqIy#hDj!8PCu1X&-X2EBmdtU!1a|2K`o_0b^?4VV~~)317_a$a+>p zc6di$)}`KiIIm%Ves=h(DPCEe!<>B4vHEb{H#qtGh8fIvw`t?~Y&-Si=Gy_s4%2>3 zuW~#m_8R9UI@unqaGw23lhzztK!51^`1C#Rz9=Qx|5kH}1>+pel9vt%1KGE;W7QzP zUzo3N9Dlqs>ql*8C0U<8O}TE?;o$*S-YXun)w+C3`WNj6?jO^}OtQZ)u+C;X>fb}F z7v%p$IxYS2R0#7wd1ITbu1$OW;N`aGKK%pefOBc3uzE1oM zuea|l{i-s#SsnV)Pg=BQicL4x%QA*cy8D6h*52%RW?LI`DfFW%fvtwppC54Y&Tn4S z1AldS*OC9n3~RlsBmKR=Lz!(pSp}i%6Z{OHxmt zqbIcI*yk~0>9&Onc&}^FHIo|e*vA!p`;x@`Y4!StO==(Hyxy3m?*jp;Kznt95os__l}YR9@j)u~}#mDzT8aN7Iy)x2-E2~Uw$&Uv8x}S3&E}QIl zyMuGq%M6*PVLssIlYXXWKjpltrUO6!Y9{sE(LVdPQ4W{2eCeITy!-1nKdvdy{@@2g z?u{PHKGajcRX%rh3*RgA{9(!iE&DBfBBCEKKQ#M?*c=iL6w=HKc3`vLYJcAE0$MmZ+j> zJm;jXvyJ_u0q5Ohg-r6;qLq$?%;?(KhIa4E$R^8qp8GW$CRAtq*4lO1hEB|rTr??H z>s%`PWUjnk+io7;lhVFf1r_En08lJ^#CZcr2v<-PP0F@*d@BdyNfWMeJmsOr^3*YqM`?Mw`tm zsx@UDZp&8Fs8%M@%y})Uo{{*zugT>WR44y#SiE=UvZ=fmm34FKq;h<3!=m}_{>;1G zywG?~TN;iDV=QN$Z^n6XcXDpOC%^T(Yc`;2W7cUp&&p~3g}Joo)wEA4kJC!_tIW!+ z?aR8L=ay=J((m24W5Kyx+P48U=66|ek^79ws4}BNDQV@E4_0ITi$6EB?)_1D^LZZ_M>X13dEQvw`*5CEefxRVt?KRbJ;Hvk?z8V+{f>T2 z$7gFsE~1@TKeqOP;nWwifBdP(-;B2$SKhGRY{j|zKKVaXGhu!+@0=zrgZA31=aZwX zPY&^THhlk0&Lf*Kw_X$WN4qbdyzuu}#*KL^E{jrS)W^J88A+|-yoj;vp{>|5dT62?WzBSShb3T2;vZB6U>?4Psly>su%o{ZZZ zy3MG}x=ice59PQ{W8YC!vZp{Ids|1`u^0VtuGUgCvtwg`HuFp zgXLchyVGCX*7w<*(odK#+&6Dhoy(H+y3}V4j=HixdgwKW{?to<`PcrTGwpGMOTINs zSs(l+Fnjaa#>}6j&#ONno_?L#%utV-?01VC=-TIVNqRqO()EX=t5h%Ovp4P7KeT50 z$wgz>2hsINl_Tu0=-fCjavAG@<;Rxs@A)bF^B+Bnok6={w<>5yTlS+qxIbi!V-GXw zhdK)m46^3ji?;g`Rx>^t_QX7RDeIWOZs_r=V|DfuKAbl&XPQ=OGhplGJB$}M2c3C0 z?+EiZ7Ju1)o``zgO4!qH`Nw%f?Obkoy*eOaF@-^t-h9P>UE=d~H0 zSebt1lb(^&>F;P=tz*MZ@gBs;8-G;j#=6A8mStLg&icTs%?r;|r5`_LqgI^L82aqZ zkL8(ndiLt6_?KK$7! zqHNob*iSXP$|x=S3Qx|Ol(?c1`$NlLz`E&VOC#!HyN}ZUVHtYGm#6Q-1Uts)m z^Y~xuT`$s3_`NGPlzO#N^z*Hi*~c`c!u_#l%JH6Rt9#+~2hwi&Z}|Bv^E^Ks`gQ*M zt!7g58P~5gizMBho`rlqhWVUddnB~~it``KZ+g_s?+z|o!+7rEh<#74 znoDs`w>Cvn&uz9I5YlHC=O1*CTD_({pR#MZ)8?mIsZ0Ik_bQ%dpV;0p-&ChQskC_d zhzkvPKPIukC&|M!Qmo&wxX&3Ug<9L^RH0oyyV0rtEcSJ+Uv2Z~Is4$M-to@$XI-j% zbu_Et=8mcYk5NcHWZVeLJ&`dfz;5!(jS7V;a42wPL@KY!D?`f~15r)h?NL-OOoS*PlYdgT71 zEh+SCyM$CNAO1J_e0g?`|4Gi#+jRF?*SdT!#1{XPf6zWWAF=oM>OZj`*5lmU<;+($ zvYl}AZ64o8^!vew&GvAPO3zQ`9c7*3%KcT=k15Ab7erfp{VnfXzFG8D^UI7AgKPQE z#a)kI?j20&&pK8;m-73$?}D(=8-8KD{Nl(D$M<5t`^?8{Ls`chz5n+|KQga1@5R#d zp6r*Lqn$8#`3t@`Ew*j9sUOUx`yCr~^YUhX^<;|~Pv%iQpYCX~n|0oaA+Af>({F6G zVEFY_%js`TI@4=bDEpy4p5OE9N6b$gJ9e-1X`b)tuz4eQ5kJ@0Pu;$NbEq4CcV$^) z=22rMcc+P*&p-I@2Z8J(eETA~%oW!0@7|r}up^mse6si4+jE_H){1M|Z+gf4_>u{S zE1olzesDh4xeWcM72huZW_^9;N$e#`Kz>USfa9#z!;qUOs34!v0EkCr0wU zPc_ZEk6>S?na@g((Tpe7t&1@m6he6{SIa>Uy;v z>wq^lZoAgC8s|0Ei~8d5=jQC2d3Vr%BK3FU^c}Zs>HmCt@xoI2r~Z+hw~hOX{aE&P zyW3UbeWkrF%e@=%9&qqZCu`Oz+rFxPr5yHa$Lwl6jDF9%c@6u1Qo&R@^>FzggSylI z9QxhFdI7vAII{fCp&Ir(-#utrhkoG?D=sCMoy7a&S7*GA_>TSU8%?VorT^vBwafXA zymx)Qbk)h9628mb54Eb)h4cAl-8)~U8uQH&)-FFVj@#eU?_|@4?3-)9d|+kztqGr{ zJm^e)`tyr%Lx+xFecNN~g+bdXNA;`!;{KNTyh{_le?FJ*Q@A&HS}gO>ds3%-8PM2V znzpuUYTMs<&*Yu+qN`@KGmRIwdb83@YP2lZ*2#qT>Ap|vdzX0ulW~u2l30I>vg{rz z-Us^q+2rqPG7ow%JN&?F(!H}&`uxl6-|CX`{10!&bxQh+C|?n4O#y@Pc{9RW>1)%`dTT^kK~56O5PE4=Ml4RGw?(-ux%m^ElV| zi=(%4?$Pglxxl6CD#nGe&%2Dj$M@w_OnJ5`%v7rN@db};FV zwBZ}}PvuogeNxj@>NNLR{Y4kqhq}C-?;Ym-x0K%7drBw1Kk(~IbNA8T{k`_yI~m!g zl6%7CJGI)<58d{3%9~-N>tDmaoy&N8k=MPS8nK`6qc1b#1~4D{XZkPGE6!qlW6gns zV!dtT=J}qr8*n~e!_Q(HzhS@4z!q2MvtGEe_2a2;nb+R>KBj|j(zLH%b|C;US; zn!KYu@*cT7(yAfrDChV4wqPGgSiSo{Uz@@DVuN)zo5ykf^yS@EeQ3x2ZW;aYepAl1 zsTT5PHSdkSZ~Eeosv7!_Z?`Pl$$Y`t-7jrEf5*Pm*++gn{1@w>Hp^CYxX(Ok{n@S$ zd+>c3X%`(r*O!vYyxM8Ifq98&lWDC?d$T_E;91Y=jQ8G$#GRVPI5xfK9lPv@yzla7 z>r2f}no;?uz3affy^+mwPK7Wpvf-w=*_0n7X@9HzGrna1_qUPT6YeZy{M>9os|POZ zt2v|jV7-v_=$gq1#~I&FZE+zcl6_hU-e3P!g?%_%YCoU!n)Qf=SNVVB?BXTE*@ z1no0_f35Uwg&L0|7{?_pZg1x~k8?tOJ{$S44)e@DkM>TP!}?J4k}caa*{8W>VvZ(` z_sMn-uQ-?a>^tVZjdoY#9Nb2C+C;Ihqlu<;L$iMD6FhK#Sd}xpujsnI=SP&&1xuZ3 zuG~mH-@49APukUhRL$CTrzkgp_3qvs$@{Pif4*^yd6G7VuRpxNyhPlgdwE$cOr;iG z2Ib#gVkTv^=(nTB1M0)Zwa;YkroXYf^@UNa?^_@L<)zgbzOQ%Qthm=Jd0+jD#K%rH~sx6`&ffk{~b+#P4aCuxEtmAh-cQxb(xGm&pr9-U1|3BHTW?uB_baD z`RdAwX-zwDPH6m{S;J`mExY{mgAL<7=f$5`jeTJ%{dT%S+mFZde&ob$9t#ff{$G_* zNmp2}xEtK$<8AxRrF#eNv>w-keP*L(erUFeeQqu%JMLP>`KQ{xxBb{(>woC)Ev~gW z2d-VaOMk9s9mR9O^ZwNthj^rUWJIx#^45|Dcb=I@t`&CPAFzz|p`46a%Xaa;dyT5) z-?IKrSC8+25WilFUkr?N_#p67{4y86Bub?If5uF@52JlP@^9H8o8M(cwkEsRo0L8( z)a8q^$pSm_#s4pUky|9Q(YojRxA&iPY+&@U(wsw*zy8z?=C8xe_C(G6iTQ`8J$yW+#A~2U8~BBokO}!I`XDH}z*2G}Afe+;SepX~pq=M!NQ;SymI;Sq5m;z7iL zc>b8i3p|#3HXnEKed@kVH}^g0cf8jZ&&xmW6FhS5 z-Lhv$|0Co7+WlMD7PDL5g*^Z6*s&4cWq;fL$g@-5ANweMy`{rgrw5I;hlg~!wJp)_ zM#S4m-Mh7l8GWkB*0lQC#M3kT9DP|f>s0%tTds5)a@K74C!g5NEpwp0YwhZv=8tyz zx?(xk9zGMw3_Vn4;RZNJu~>)F_TFUNiw_;mJ?kg-EHO|hAh z7H*+A9r^C>BTErwVE&i|R^YKo{Uql+5ANs70NQcHPzJ4sy zBIV}%St31L_jPzF(xhresr@2dzUx|bmq;7iS)*@=^zqPWH;ObmGB&uaNT*ujrMM?`ubU$V8ONb|Z|$}AV@K6bV?OQe197^^ZO{qq}NZYT0Uy)*UvL_T=Z;6z`M z7jExe@x90ozYW>7P~?fNdnUVyd~t8*llCHSv}iWlM&yqG?Q<`YM@*bOQbaykx+*V2 zwTyK$gk}n-s`v0htNLfnkEhl? zo&4>knvb&1U!8vA;gm~bp3dw#{q@1IRmN{0o@=%_CT+vX=|jrwEcf<^X-w<#)!W-u zY*uz$_3-JYbzV=t>A2kCwEMIjXPc%RIa8_3k+p7K<*Z{*46pIkevek?j%1$nYA|DH ze(WbR`#gSk^~)V&&kd~N+rCp|RnMURYySU#TW*%@a^DIl?QfAmIlVINZIHe>99LvchA^4&-$5q`knB#Tm0>{kGuSu zv95gY$AAChXXcZCy!`jfr~l!)GThB_Ig62>TKw4XQ<|T@=%2jgM|^sW7~VFZX|rZc zzOWxN*52^vkg-8QBPNU(J7xkq2S*H^Fg9Ss#L=GJ+jGvUEoYDM^LG`Ejs{NIG1 zar|`UrvpFZ^?!^1XYy0hrv_`i75FjdCx4?xdd|;1es1#ffB6{F(L!&ew4Mg5h8Dey zUe|T5*yo`C-_SntYPS55`)&NCY%i_!*L7VkeZNhw2^iW{gIzQa|Fc^-95ik^r zx%k;I8AiYixDe*RrBJHDo@r< z!Wd}6du@r(5~jflFbmqkJZKNCYw^w=bc79{J9L4*@JkpB-C+c52jieOOorQcVFxBb zYkS6miOhS!%`gJm>?TcMHFyo$!(3PoTGZwlp*_spLt4P!;1t+vFX4ti!(8Z@MEE{t z%@?{uZ|Dnq!C>eQBj8XN2S>tWm;!TPuYKIB4rlqoKzJ60!3-D!ufjxl3#P$8U>3}Q zdGIN;c92*bBOEXvxfiN3} z!Sal2<6vc&47WjxdYmZ&?V-eY-5uV9Q8463Y`~Y$qCVk+_Hfcc!UxyEFen|8q^+Z@0_~wUbcMdq8*YJt(B?4q z;Ibq5hbgJJZ@^<5=Q^Bmioaq0Y3wz`UmDlpf^)%>3&><0JwlFc-#rK`?x1Zz83_PaCnH zs;MMRg^utQbcg<*v402FZN~YYuoLUA_Mc&s^{QaluQmQ*n7avul<%%;%lshh+n#wN zxEZFwY$(pyxW;;^do#)v^o7|l7>e_RB493zg8|H^=D?9q`kZHlwr~=3hM}+njD-I1 zr>>lH56{3)6MDlBFc50JO{6eb5yrr(FcH>*X|OKL zf=)0GHig#AwYow_*b2HsPv{Ff!C>eOBcLygg9BhP90D_7Ak2ZIq4WjyG_-}G&>7B# z9bg3Xhl}A97!9M~8n_k4!Bn^zUV{lR7w&-;Uy{$EJ4 zzzmoJuR^H}^*6MIze8vE7;PS%KlFrCU^f^A2f(dx6ikIv z;59e{=E87j;Yqy+?O`-@g{jaN&RtIUUyasE)Tv!KMbf&)o?O|i+3Y$Z3*b)Z9uV5JL2xFiROoV-5 z8uW)*a2U*kLD1TZ`UE<{DbO9dogu%#W@mZcuW<)$;RNUmXR$6F1|wk%Tm}A0jEqnu= zVLt2tkERo!@W6TE%^P>n9=?IDFduqD%?08OTEH-91!G`&m!8$MxHiXvQ zcn1wS!sgH&wuHX00}O^;U(Mcnb!?Y#0U`U*~@C9kljg&%q7C4M+V(d4_>mYxFy#;8 z31-8saC$cPhw;$5H|-5{hs*AA9~c9-!nH6J#=~oHJIsZN(88B~2(*VMpewupy`dfJ zwPCP3+zM~OYp~)2p0f}6^AXPle}qx+DBKE9!c=$;UV~R*F1!vc`eFy#!`sjmWOo5Ug_FE&5ZQpgq() z<+X|MyF2mN6*oC3GN zD3}Dd!ecNM-i2APO1=pPve2YMd)OJe!k*9@M#Dg8{ekC#k?GW9R)A^H z4d%dP=s1+|i7DZL-Cz{#4Y$JnFcl7k*I+Qrg_EGgFxoX}4`)MH_!xS_g{24wbTcCy zupNwnyRBzm;?7gi{a!WbB*K<-Qg4%0HfeYxD|%ORG0$uU<(V*WeDUQozmP7 zeqM(A!J(X+k|A`M0|%AUFu0<9u_k3p&j$q~opevjTy`d%hhvT3#Oosj8H8>dN!q?D!9M3hK_=g=~FzgB= zU{4qa`@v*52xh?HFb9r?(s=qm&=&TXLHOWf7z0PmB>iCs6nl3vq2mO`TVcd6ben}c z*bXK_Z?kbwjuP-p(|W58~d>J9Q?tHFb#GJ$36TTx=y6uK9}c*Wndt*hGDQW zjDdDA5jwy$*b!#Io6vR=&-E?-;ba&HPs13P4in)emgagBj3eA@#&m>Ma-stvUB55qiK3 z*aPOk2x##QXYnoOzOXwChW%j#^oMaU5GKPhFaw4_an@BRl%`Q1L0cFBo#A5G0j`Gr za2=ciH^C^l18#-8VJe)wgz$!vzu2Ga3cZ(df7o{!_k*us9?V#Y-RX=sR$&JQt|4CG zSePgN|BiT^!T-<~PJ+R(QY`m_b}$uw46i{)m8{{-5@$Ium)-N|#qL+snx3U?$DZg>yceoH&Mn{Q}-Ix58Yw6I#qC-#~kK0J_4% z&>Q{)1K|Z22Cu;wIN~?#!z7poQ=#<&^5bp%!BiLsU;a)xflHqfztB1tcMGxelIMY^ zc%N+w^tELlBn;-gJSgU?@H|I!GqpbeBw~SesP0G`CfHzk_b&W6qT{UKBXlo*?9odV zs5wTG3hhn2mDm7|B1a~mty_EvG)Ip&dO zi%KmvU84O~qpfdZ<=V!|S$2Rk99y@svS@=d#!{Hb=11ha{!o%H+Im{K&(SW{Xuh_x zm2ZG+cX3sI1{?0%4EN*z<^8+;hx-R$r#Ja=n7D!Q{d=k1Urg&P!u{Bi?w@G<{9Q`8 ze(u(1slt4c3Q+WS2R`%lg2Ut0FvU2vcawR@GTG{&=LZgcZJF1!U_>29Q;h6Rx z!V!eMs+5cWCLAJPQO!zU;?GQkU;hz$3c90;o{3%=oyRZu2=|ZCO;p^Q;_z9derulI zhj4F){s(%Q0xSCbkDiIH438K3aTPrPJrNxge1!c_gzr?`N2AY2SC*Fq^r`4Y!{db= zstG9weNRd0lx3V>mX?rCS=e#Ho{cGWF!A(n%Zn%O-{bz;zr6o}f4IL3_m9Tj9O}3K zHlOesrxcGrWxBAwu;YjB zreY@qy@84ziEgW6KOSAQ3!va5?57~Srrl8Lyhb7YfvybCWAsdPW&E(sTsp3z+o30_ z=q~7M753c-53hMkQRsa|KA@h{)!S{X96ha~Oy-n|G+nG+qS1PoSUFPt=;~ zOBFpFU9{s$_iXc)?_V?>#dGnxq-25ncx61dx5_Py=lR9rnQ0@r{eFf2AliRrJX?~n z2cRKXcn-(^P5dk4*>GRuc-Gxl z&j0wcSynvWGSM|E`eXE5?xT!n)6&eLqZf^5Vc!lt16^6ZT+k0IbWv}5p>Id;&ff*? zyuaMfAh#R(8UEs`DR;89F(pbIc-3Ez)K2X`<&t|EFlNiKF_G z^XUof)Z}@U@n#_{JZ?k4AheEj*S#FGsX;h~~Cp*ySSp6KHK%6Rodw^Y$X(BJXg zO81fIIVyTQ`c)M@1^om%$y)Fc>6VF}q@q7Yk4IOgr)gQn3@W-E`V1A_1$~r??uG8F zq6eV2RnbGyo2uy1==KU-wDSq*<hRPPo03*Wl*$DSAuI0#{& zm9>B!KQ@-MUFeO3z#(HsnpXVjUVH$GMVQSy+0aF{E7OhzoB}P^MZ{PbN09!B-{~yVz8vq^wf{4+=VLV zA2-~2<4#$ge9&7ebdfGW=nc>p3Il5CVw`_Rt0#-U@GXziQm{Ale`HV88aK_9822ci3_=;7$?RPDH~l>8eK)i z=|3VrH)p3x{p2&}}*n1qyypT?ke~bGhq0juD zx+vre{xl8=d6@spu=<7|*)S~6Y3wLEV@tk^h zy77;pKc~yz`u^Nf<7kuzE~0xb$5%9VCSZqcW@`D;(<;n3U#idlh(PGlHye8kHviwl zR?#Tm?KdqU-w__sj)!7zDw+GN2q@)`MkdWr&c*duuGdM>_ou~E zGhJt>+eEsiaJ?tjbA*3Ix{A(FVLN-iSagegnUDVu_zx^8o*A_kEw5ewp}Y!vUX_^3 z-ATJ#QhgF;Z)C5JYJEbvwAa>b=k zA6eK_q%T8wZD9gyD=NYz7pO4OL4+$CJMsIOQ!1(cN&Uzuz6O_2|D@7hl4T^9DwKg_ z_8s%L;Ujb}^cUz622p7I1fUQ8kufq5rYn492WgOR$$?9M8wA z{=NqrL@H+yUq0AdUY6%IDz|cc z#hDxCgR~zNjW5b89{GsyMB{&oCEsmcQh1`wjKVXggz!Yskr(w_Hulo3O{CA&)BrfXuDSo)WihB_!O83FW&gF1M;yxSq zuZ;4UysSm1%hf2HSyXuP6?@%8s-Yt$%0(u2qFBUIj$DqtvL>2d5=xfnMvt#&(^a?;< zsG^6WPf^jM(TA$&3FzI?nZ_*m2>U0{J<*lVdkej(iv9}SUPZUGXOFFl?tq@JQoh{K zAFAj+=+{*AAoNozdN_KLiXMx;0lnz+in=!mJsQ1kN&P8?T1ETqrT?KnCF*t4+SGrI zI3tw5_5I9(@ua4=@qm)5Lvq3W_qg{E?wQb=BIZZE#Xq`njStt4a($=}xUT6}=)esr zgzKiCnn>@&^@4t_+&&U={W_WEhH_m>9v_POD+&Kc@PA17FWz5M^sh9V)Vfz99QoL3 z(wOhYGvS|-!lBhD+UYhdGU?h?w~wj+oH?^g_%9j`#trfywQ%0x3q}82?jMEWPsD#X zc08JxNZ<3fup`f}`V=OiW@h0Gt8kx$`(3zasHN^cs?fbiuWZ~mVi3_$?_Sg1(A&_J zXVW^&%W>UBT-Sd@xw1nKQRs5|qer2)6>bSH7AUDA(;7r|1_nuNIjo7jF27{AE*@b{c;pg@8Zi z$>q5_v0_@P%*(L>NJ(3=VS`j3deNc6hsbj1zf)$Mzt zJh8M}s!04j`KS2H#7;JLzGA-rKgD0;a_aFX>Ib`eyyM_SelZG+fju+X zrS6w-e+xZJMSq2UL7|gXB+L4YDbZ&L6Jk8s)5_IDY>aaD5f!+zkcC|r+}RKgWjXRf zR|{VNx?1=`(bd8ijjjxz{QT%5e5FJ{^dF(0K;MR5w4D^sa|=Bd-9@<7#j}3iGSCpq z@_LV{BYPil_fP9WqFgxPPTZ%x$PX&@wAR6-pyCzo{cxX3JhdyyeVs!0;yEI5f3<7z zbc{zop`xdt?@`e+(c@I~$LNdEEx4EABkpU;gNLcOw?iMJqPw8`spwwlozRu(6M)`a zMGr-HP|>5&%d6-K=zkHPO8Y0!AF1TWTj)2@i{=aQysywR&@By-0EKSZfOtk1)rR3C zbO-bwRdhG>ohrHy`bHH!2t5W}Sx&>zzg5v=(L+@9B=o`PWekCYqTNkL_dy48{tPrU zy8J8h<6|!PbN!_Ly4=t3)=l7Ob`)e?aaDG2*O2{HxR={;Lp$Is)=Q@u%8$NQ(8Zq@ z?yX6;k+KEdFA;wM=!4PA2#Ind_B9DT6x~Omi+VR2y&Za*aL;{(}Me{w6`gAc1sn&(hs5R$yG&sf^Us4&Eig2f3=VlKRX`Z-W@qR)Z<9SBS zIJJJTNC(qKw9`KNev7chM{fVnU!a#Z3a8xuF(YQ^r$04r|JqoIX)rne_~HLhPs*7F zL9M=gT3G*y`$gh@Rd3#PGfD^UCwHdx^NgC~MebM7jh6FMI{s(+8uxQWxyVLOL@%2E zkmZjbzfC`-o#6UeeK-~AFSaZc8BS>ytHmP&AnjliE8n(O{v8?d46^d|kpGhNKlaV~ zamJ?po&qBMLeYKDW5sq+;1X9&wQcq!ZZL+Fzd!jLNBIva+Ch;r*lwYx;#S$k|jr$GVR+3-b{{-%D<9@YKzL86*m^bvaiZdP$hyBC4i%2gU zdOD6%_4Af&{+O(J%}o9f|hZ>3ldIiwoi zHaOGOyC<;Mh{{gR-`E!)@f^3%YbkUQzpv13(0ScTj$h??Q#(pi&=?3i4m@!1^y2N7 z8~Okh-3Q%EMGr#%5?zZ;!$;T;N3W~mJ{G;Aik^gSqN1mxKMO71zsW|wjjn8W^U=?% z=r&EMw^Vc|^lj)On;SkN{GRBsD(?Nz7pUkV=u=emNc3SUdOW(1ik^b*q0mKrmWl3+ zenJGYczIN|3tnoa5l1tuI&`!0_R!a4?!uUE4}l8{f6>@~D}>_qmG$LHE8jL&{vK9= z9#+BBjg!@H=Pius@@+Ks8#^fVPc1bsicvK&OBuUBy&kG@1jPeGrqqGzIy zLRa?lAEWnEac{~%yrYV4hu&O8cR?5BRap+a&}~)R2cVm&=%MJZ6#3VN_>V^aLq$(O z&rs1%pdV4_q8!{pPe3oyj_CSXx_;fiEeF#}DhF<#b5;(|l_&Dfe=Y|r{@Zd8i~TLw zSC)e$bhUhyjxO?*GJj^H$E)c1=*v`e8*Uh;qC26FL09HmPxL-2?)}i)tLP!<%~bSA z^g8Iud>fCh)()hgtF;4}=%O7^#=~RuU(uEM*3?x!U)iB6^OeY-F6bg(DeZfquTjwh z&?8jzQ1nR(U9`{9=mF^N{4MfTPcdR)-cCOd>S$%%gBnry5#c$3`w-kK$HlkM2cfg< zDen^&5dF?qdi#@wpzC)QjE|Tb7Vi(r`$z0M8UAi-Rrt5?q_gAp1?$|{|G(G~;Sa~o zaqJkLN!S;9EP9fPo`fEcu6*8f^rb3#Hu?;7WqReK2Pt&Xp4fazJBQx6H2)MY*G!-q z?=Ngzy5t7M4HE&_>pj;*I>+CI{d{>G#iX!d9JQ~=xTat`fE*9;`2Pd{JA{AzM}#v4 zed4z!|C9ZjB41dxU>;?@$^U6zsU3EFuoJhCvrnYHJsiCOx-vh~pTflb(srQ50TPfa~ z9a6%$LcBL?hdsNNjN>C2kMp;P-$6y*gAn&~w8Z_9WO32*5k*fHEj^?=^n`L3*VC%V~B5ge#Z@W8*sOv(4FY} zi)D;&3=Rzo!y;XRaG#I+=K67`B3+8T*IvGaeOqzlPhl?wdv}&_W>QJ^6#KxwDZySA z_C)+yy0fQoS@CpsK(DQ$yP=D-5|#PF2mJ$QD=PIM^hfB*{zo|aZ|KT?RV?}$6+H<( zNkvabU#FsHqer4E!;_Exjf!s5hCRXP%6#X9?u)Lhr##WyqAT;GAG)iG{Sfqe3SH#W zNOT)?d0(F*pK1d%Mj2J4R|@WZmKT4nOmq(w{V}?;if&59Qd32@L$_4XUC`f=?#lS_ zLVu{D2cX|TSH@c?`e_wC8a+uxPe5OFCGNmFbd=z6ZTLdB*S&`6nNJ z2YLmA2!(D#XJ`|;oS$hw4C@t6=&R6+rXx+R*it8a<|4<}fj8t5Y*59vz-v8ht*F}6LalI<{RkpY3=w(&(Z2kR2o)+Qx zhV*yg&wO+T+=mKXH@#4}&ay(D(><(YSkryCFg-aL0zQBJM=~O~GBg?-&=D@=x*nTkJic+9mCi*XZ)E zWhdq@*A>sd4(Mhox*PhdwZ-$V4|=wW9)zBWF6te_N2F&s`Y{zf7JVmr8G~aer$2fe zy0V<5qc2v`v(ZD*EfjY0(Sy*H<-?}4B>AH&%ZC$sPjqGZ@I?1UFH^+6$mf3O9_S5( zPWlubpNqU0%5^WU%lS{&{utU#b|vVJOVI=vH(y1^6DjzQ!2e>seZ_b}c^*KpTK&b! zgzzoLt0kH06!yx>itd+)ZwK@r(UtM-hQ38b_d#EQu8i*>^ttFo<4I0`^eHNKV$p}G z=t<~4DtbD)i0_e#@Moh(qpwrw`RLWj*Si(E&DYd1=*n<9p>IZ)t1{A4yp1T**%N&& zI?FI}I@7*zHGr$Scn#qCZm!GyuOj|J(YK>l*Zb=w*K@ii)CDb;>zlaVQ-8g%{nWj$ zk4y54ZcM84rK_JZ@pl}5#mBEh4c!U+>DpbxOq)mt%Px|Xia)vD)}IFF$CJW)ByTdPHUlT=ay*Q>{I#;|(7Ky(<3>{HM# zQSBB8+kC`x)i9)vJnfrG24#AAP|R_X)t>qK*1} zh5Ro*LJviMsnEs!qtW|txX)xQ{}2zw%5|90yppzEN$-mhPa9h% z3*uk#+#y^K<$6<*j{1+#BhgoGD?Sepk3I|C+~61r_bKSXDtadRKo$KldKVSlv>WfE zpeySuJM=~>?p@IBRCF)&vMPE2`a7Oi8U9f82P%3r`Ze?-(Ic111oUI*jYT}@#tHg) zz~P2+ExXIaT^jD_=E>Bh`MA5UxQ`QFY`U`^gidtH_aXnu{UT@mwrT#M zDv}#4c|O|{_qi%|{LrtX2bW-Hkit$R?yC}ip9uH*k4Wcu^akid4I-4&AAK_Vs3N+^ zf0^iK(Z>m0SC5P}WI%EK71yh8FU+4)i{y7v_t{V(wBUL@;om5p3wD3Y@$81XFL2kS zn7e{{R$gxkz?}!~CW!vs}#Jau5F>V-OXK?7tfo3o!}k%@zfA2Yw_}J7 zcyav}*I8zi{jopD=z0*>U;e}ONUoP*(6?OgUlUoFFe2R&xIUfhA^PjI591B#YJ--} z^-QiS%W*dP33O%qm5;thMYo~BjYAjJui@jyA5Q40M@%HP1Qv;Bc^xaaU>!@_%EY+G zrn4aY2jM^SDE+~I^lzi;U!-$_xPPjNbWr#wT@>v?vH9b*stuDaJf0vQdrrqqqzCHu zj2hD`9}(#%Xgs5A=CX5@s^EV8{Lqv6!E5L&;RqeSuVY4)3H~ypCt097kV&yBXMiOsXR9; zi0ji;!WWJ{@_!h&GIAA5JOw_0ycZYTfY zTra0Sq%oU$<^HLno;BL9s`=-0y+W`v2RlXM&xtTZqKBaS>%&7M%UZk19I@xqM{eN_ zy?k9iKLz*kxKGl%*R|7lG1F}n9cpM_@y6*4^6f-ZF#u@BV7Kt)U_XxxR1lV2%{)Ja|)|>xgVRr z^(3xWE4W^G@|(C{I@fn{eT%rRt52vCi9c=_U3f!A5W0ESeB9Ty(n#A?+^H~v z3Oi2y`Hm*sE92J_-9|;L(re{97;Qp=r>jLc=R+CJq3NAik^wSK}COzz64#F z4@?KpE~)5t=%ZA07xX>~-HZ6~Lhpb+o4*V5udbh4q#ruOxF5=9#IKAM;oXg&SnPd+ zJ%Vk>C(K(E+S9K;d|kwMK?NCrms|K>h5rre{hMO@Vjoy-HSr*uwy{d)C)Gq$9s|@T z&Ez^n1j~*e&w;d`r1LN#$n_SpcKXIk#7h9ztMHvUZPmk}SZB~S{)cXxe1=&P_AEK9 zt;GI}@%tJ+R=!j_ZRP#P?XA3h)SgI$T>gl1VdKwvFxc-P6kR<;`P2>mW*7#3;u;_M z`Tc2^ao*d9D{YUr<_2=uIO7JJ*Etcz3xPDAM-iqx*`%X3D zNJ&#&{rDJrkNFOvV)=g%>(l7Uc~3j^^XNs#0iqsoK~F|6+CLGx7y4Ee`vK_UyOEUl z4Mh)Eu@j9RqT)UQeXxpt0^M6hzlGikUHM$E(3_~Zw;as6kc#erUQR`KLw`^D6n!o~ z;=u>~0s1Na*4OX4a;w{StlS^pUA$%MJ;TbktGr8|mEn#hXHgN)N!ag7c;xvkaSuKs zzoes!bo|_ef8_23lN6%9(A~G#dnJ`h$S+y=7vm$lA(E8JcS)5|+GE@pEP*n;0VmU}rYpJ++3vMYwpinDI+jc|8YHLY2cGiMv<0yQS5+Q}l1;TNat%)Vx=V zCQ)(WU4;J@_QLpXs?+?f5+90sN3&baoQPM40Qxc5xuj9GqZmJFlU27Fi7@aH=@){% zFuq*ETvl|yM0g|7$D+R#QqlC2YkaxQ`FI4|>sZA@m@04}~u3+i-Me z^cnmu?l1TIvovzQm2;xxm@w2e!hI6%XW*W0e4%?WPN1LLS>ayXHyig`6!#T+KKcrU zF4Eg(7-2&HU+tp|z+Q4qzAFpcB3%a+PV30|KAh{RT>oF~qs+u!X?vCNFM4HkGZ7B` zN5q5aaDG&DJMS;hN35+cNFDa(avgHYmHi3 z7n~&EKJ8WD6{T1W= z(gW4nNy9vbNKYT^#b9rWuvZWsU3!YfvS7Yn?%zrs<}_ zZa4k?6#W%t|6-MTytxbC@;D+Adpoe#LI{L!4#x%9bW0@qJ*eYd!-h}R;K8dhXH zC|3-+9+vQ=i`Q4!ac-!Q+(m~$|M7yBqZ!9E(nwD#@Q+&jq#B=7eY%4B6Qxq0J7B^O zd#_s;j-%xHFL%*Q7t9vv+CSV?A}|9g{=56SRxJ6xE||!~UY#CB{R1(6&PBG##wcOuMqVv%S?dezHtEGP0bhevedf5AhM@GGHw8a@N`n!m;jovhn|QPffu-n?Bg}-0dF1`axkkPq`G0lswGPjxs6I zf75UD^1^RC{_+C&4or~|u&=0RmGfBQ&=gmOO!C0jUUn>Y4)T47`u@x->;(sEq^IRY z$aEi(?v~?8_ivb&74@I~Bku2jo*JoLF9drLd>864 zk-^mLMSWrv_npd=Y)_Q06WCk3m+u-C1&Cdb=GrtfLjiL^%I3QFLCt@?&(m%KdvX3t ze^zL%(iCm3 z@e$AGf_u038tGXn{xP`M-Y-?)NVwt04|k>}THU&^%KqAbBH6v@{@Q5#wZq>mZ16lH zzsu!BKL3P$xuaD4iEyRkZwdYw))t9(AGs9%Bs4z4-7DOs<8F`;3ij7}8@UtlW;c=V zw$W&%-$glLSHGF|LU}6-PyWz7pBvZHDr$A-R(38P&N(H7GX#H)Z2lkC-Uhy^>dO1i zB>@rzZ=zUfYbCe6wPe(mRN7%`+sTy#&XE&f#@A`BWm-#3wPF>j^^G`SC&zeaXzTQ0 zX6#eu`TIQMw9b@y#y?W4HkSYipb*3tUK9csUv zCH^>G^5al+Z)WKQ;|fEfb{_Chs_}NlErB|27kg96J_xblFzD3J({=YBs za6ai}q@O4KMR})(u(MG%?iMWql_!eqY|}bZ429(W2Ff3%{LepF-@ecOoce)|BzNzN z=y?KsU#=@H*{2$Q7d`(zk{))w2-@W4UCMV;{!>bz{E|`M%8P~Z$=SEEKZ^WM7xJCw zf@T%=wbYYW58NT(UKZT%o}aQK=O;Q%@bQ0Y&;8(8mML}j%>Pb2r9Wqbi1{_+Em(#~ zhmh@&v73yHssrg^ zuXSoV2=|EsQ4++IL>uzx`pAub$y*S9YXqAA;UK(L+7$hQm#0cVKpoL{mD5^Jd+%*q zIM(a1JzB$UyU4X|(S+JI@1C{lrmtqM&U`I%P3G%gYmaWCaOR3jy(I@Hd*LQ;$=m(6 zctP0agl>)s~ht-g}Iim$X;<;W<>Z zWbNdyX0BZbPLLF$X<@*WS;;pkFj+TaD@ z8`0&w)rW5k>|C-h8Dzh7?#2^CE;G8w;7%T#c+m1g^h1Y?A=MC-8?t?dEXHzlib(kY z4tR--lZUfYz%Ymn=Pq6f!}&jz^WPoLf1+^FaE4pG$8*TdpNbv-WZNwb4DBB}uHOgM z?-e8HhohNzAg#Udm(eNGQ-yc4a4#19^T?UzpKO#_n6?t#lGbry>Pci|4Ms{ zMKgw&Zl$kISKIsU=u+No9C(jDq|E#X{R=PQx~D3gSVzY{tuayyQB~9KJ+!c@_LwU9 zFoM%4|ACWH|(s@^P?(WilCQ0E3=JA=1c z`28h=l{ZiJveWy6Z2gD(5#Mqz+~|e5p@r#b`G3(XB6G>wY7Ju&@$9eNaBrKJtl#8^ zr;%PRA^m`Hd^#S-Ex&slANfPZv7YLK>_Uy>fX4CB3yQ|^FACx+s34?0jA$m7x97~F9u#t!ivB*k3tU8gkTlHahBca2D!ZNN6@P_;X{ zhWB{T2cncR^MfvWiw1qP^4>S-$D^N-9uGRLfh+UFJ*+@%&>MjJ!w3Dv^Z%QJevZie zPX>K;HH_T8S~g;PZCm?l@pZemx(&{fs%U?zn%|yRAt8p;d{zY6(RLWn80<;FM$X0T z?`CX+ba`XA&f_mL@nz|1O~(^`=JM7D)BQk5D-7~?SPakxD^wKOpPK2=735Ae)S(p^ zs@e_F_o&Njoz6T{pDxpMJug2aYgP?=qFeurJ65s}rdOz_o43DoUd(oy)a!W353q+_ z&@DpXzG;ZTx|*r4HwgE}BbyDAcd5~H~DBeaTRhjAD_Ob=KYe)wWMJv@?*)c-Jo z7-E?EB1TB(89|z4ij!*?;W{euS{w3=a6^F+4#NmRc*IAtujjs7FN^JGyg)`@R9jQv zg~QQQUc_10Wa3H33Ol0erW|{_I|69}0)1vne(?}B;s^6t& zE(guiu|BF6oR=NFsqMs2d(R!@^!$(?r?<}MsTgi`m!Mr`l-{;T<_jp3)7kV#!mfwi==qTJBfv7$|@?!+&6CQl%TBI8*20ZqPArpRIT*3&%w+?1?Ynr;SKf0xC7SHyo;^0&aC5`?<<3qoD7 zAk;nHOp#a+zCp$QJ?k|Ll7;DxjtAR+r!1I6)YbjQl&@iaVH~nyhpF`GJ;#$NR7Eg15x0XcLAIm{S-vSk}~%LB*lv*<#u4bd)n1* z(+jb%T&iR0>;OXujDWPFV6&iAm~vDOb6Kg+`AQ7T4mTXtg0WVR@3rVqu9}DPj4zt8-Xbyn?Xg zoBFrZ_Vm*u=8e@w@=`)i^c>L7x!`g-%R_Apw*-Y%=gY1?7M&rGM@+`D}RRe@oH5OCjur4~ow3VtZ7=Z23?bX9WfQBA91bKb+NyvBVAo>N5 z#Y0f-7)^chbFyg5@DRLTUyY--5%aN%=XKY_qUTC`wqGw^VlcCHu$D8Nu(MT2zJIWWKLq|61iFdM?cQVJ9v% z%!>Y7l3w_RJeo^7DtrD4lyjqZ!8F%AGX*`q z>^kCs7$fVdZR}YqNbFeY1>tM>IW_#pgfv_`JpN}F%#*`Wk6y&e*z(a!ybM!j#?tBa zVK=N{)>7W}dK9qBz3{cXB3|+;4%&llrV3v4!?#At<cb} ze-w2wg}&6-iw>J8ys*oxIq9mnG@b=b7kTT+3)e?E&@;+o`8Ox8p$pSuJ%~|gn#KR+ zWHP)(r$9!2()bFHTI#qO3q!uGfB;x|&wBn6JZAKHVZSqThiRLPYVl-)u8A%IEX-NQ z-MeAY1TXu!tDexB5|_mu7PA+fOwHs)W2j-uSKFhmk09>nk>B%qenvc^;7T*SBXlN{s>C+lhIj{AKF<$G8abB*sG)S%Sa?zL|)#kO% zKEvDE6Da@t6TMvDxFAK>qQO zLjTm${MIWfK|5Y-k=uW+SFxVDJ^~CFI=tNLANDFz*uReQO8CFxy~Hq{;qO6O0kOa6FWkbLMhQnp|#l-^jK{4q}AhawW5&OCmG8ZofX51;qL zw#Gz%ka~vl>&7=GUT#cv;!~kVE({VU8dJ|8Egob9iC2OYF@POjuIEB8LCkk~liOWw%X^+LxR@#{vtdWF}m^OHAp%}*{E{mQBnL-Uiny53AK zK1;=(6&#rxN$ezXPUR)p`cXqcs*`~pR#9Jzd*9-YZS;>*6G8R~TkgmLA5A!0%Xr)` zw$wf9>^A(vQLlSM3n`AYo&6dVu=!?Rw2?Pdyb0-vNK=88->(Vk-z<-n@&1T=TS}fR zvx;#f?vA+kuVm<%MMo$qpD2~0TR?w2`a!VZ3=%db-U=LxSHnxda`!7nzeDE zlc-~d&WG^pQuDpZ`b5Y z$RX)vABYEiAmZ3HtF*OkVLA0$KOIOJw9Y_~>(kvq>lG8xDAoS;o#zJEZ$H<= zcpSjkz_jVmY%;LdWNvLhm{szZQ%v^yHNe%Uw>Ku<4yukY*cX&ECiVtZJwZ6=4|H2; z0^t4r00V>XecP;T*|S07wV>)vKU;P&h$K8<==Z92$}2w@v|bA>VYffPWJTC+o$NDV z!ZEhqPxSd!yX1A=?hO#AS=X3A2OJGt*(eCRDCR(|*sEUnycf0yi8q6)m%VJ+G5*c4 zk`CK$zv_TdM_ret2_JVD3Th*o+-6jOVza4~-ywU)&&sdlq^f2ag zhb~0!H;?yHJAy=?cg79r$PW+txr0hRO7iX?akR1OrN;0T6wSf$QjkHSEvTY92E8+= zJxFxZ5Xt>I{d7`p4VF;Zv;4a_NFej3M!W=ZwXIH<9r04zy%Zfc)@lDam1v6`+G6zb z|9fHxjWKg#!H~&oiFkiP3tYi8!)yWz+z1QYkbc-}y#~d9H372LyQ_oNk9(~*qv#i= z+k)1ME9EV34qE>lPx58y|0e$i*+z2tuq@KY4HieCx%$bNEpvyu;ip`#fx+)`vBH> ztv96Gj6dP3Z9yUms@@3_T|w0*54~LVrdLXNAt7lOaD-88(BD+Y$qs?RUJD4Htndf+ zdx`#-0qIv`z#G!b0x|!!kWb1qWg{93)60!lx|L{5yWMLI(#=dJV%ipe;MJJCu+#Yc zvh;N-I@e?YooO*Ai%4UZ-jHTMBempVnkHEiVG*n@Ku-lHTXittgtT7CaB_5+=u!)j z14g7?&9G9pDS2L?-mwON7DcK=MsHAc-DGu1q(w5#>{c^d1b3C->TF2p)yp)p_2htl zd5nIAQkGk-D)q3Snw9pjtIbAko$@=qfro6k{qSWU$q2|t$8W^|*cX(t-^3%kT2FKJbe*2My)y{t@Gx0P zUSndjSG7YsNF-*-hmKHoe^9CjIRZOHPxJJ2o1RwcX|F-W>!}ZG7k%y0U&#TK1i{)M||g$ zBf`GX&e)5}{8t`rOb#RyLhtA_`T62W=b!6$6Q6jAjb@Xj(4E7Z`b`>uXWmTS zeW`~&#Jn=dCCwn=*%8pX%)L>+3ad}1U&YU?>&(ZrUtX>xAQ-q;74?45I!ek26VNNY zxLoz*Un-dreJsqN^pc6j0C`nB{$E*I4V(7i2IHvGORD`;o1elJv(cA1h&})K2{R&- zB}h_ZO?yy!4y~C@$Gy`D-QyQNa$>0Q`Zb4GdImL}Ug?a9bF%dlU-C*Z&TBRX;aJEQ z8_lHauB!%svYomrn7*>C;#m)Oq3c?9sY@uGcYrE>)ByuWUDA7S*~Xm>ut*uJaq zX4b4Ty+q1mg$$X?|Drdl>k_A^j@{8e7}k7sEdZ!#D*!Negh|G#_lAa`dO=xQzidcg zcxizeHJ0+J~h4M4}9F>r&xs4u^ z6SO?~Iy4lm^c`z1`fz>4YeUa4Pu{au99$%b(Tr2_i+)@8NSw`+eImcki7Jn3e6=DF zM~$*K27Y%m@Rkic%L|eI8UvPRwVlz6g}0~+Ffw9A_>|)op?ZvrVhjAAc`vLe+#)M3 z6b={qD-|kQ@7x?0!p|PBcf{?{l`2tK@9d9esaVl^=c0UF48pwO^-i^`NUi(uNflM( zOK3GVg1Q5)OH}QvZ&FRsdgnRb)ufZC`?X3GQTMMZRF5KjK0FZ1YlR+GZ{g1Kj{MqZ3z8%Sj|ZbwU?3m42mJIq15FZdAuuHgke zS!?U@?)k}^Uaj|1Yglz3oS)niVKP5AKY8GJH0W78zeL(z-e2MU+m#f0ze2qVcKiT^ zI#=SEMWL=XRnAJm!^qD2a=vf6lzLfFjPX+IV_oVE>r$^+m)`Q9>(cy^p4b!G0NMWe z!%mm>OHiFIErS8_4Bi`k0nJK({1nJk`Xn+vtV@5HADO=BA||QqiT$I8 zqyML(v;>d)cNpdR^b~&CABB=d>n5MmE-+N>Tp4iaT7(HTJBEL=QMEHjc_ba9jsD|c z5zaY=Gr9C9>Xhu6^Zq&BmbE+jnGHapm_+dhlq}YO(>fPTmR6PW6n3hcf$m>C#_O0- z4MJK$7w(LHYV)FLN7*6M!Cc!m>}bB|{{lan_l&^ce7LTmdUuoG1kz3N?Wp?Wr`*Ppe!icvzg?A*WJZ}gRH~y9~ztN9g`cg z^Z9opB{7$JqX%6wuS{~sqpV(+w4>tpFrzTS1u}bX7Vd&Sn{bTmIy3H0WoSC}A|vrq zvs#(rnGmPTLL0VP30Glo?2K+e?s7Po`QeP4Xx42;LiWtp z|98B9b9dfXeyG2wfr@lk|Fc1(IQ+OYy;{lY9z0p|FqEUeWl%>b(&N$p0u}Y(0e3M6 z^jw*n{SovF_L(T|?4+rET3~GgD?v8Zq&y!bMdKtq3agS$lMOX@0_s z;~*Z!zg!Q*5nT^r`zIH~ravnIb)hr-*_kGrVq_P_hQ9>yTr??0{oL5lH=|%PTPkf` za6-bV4VFRndS~`~X7(SBen}!Rs=V1BOXc5@O3kP8Z@LT{S^486a&0_de0#0eSFK{mgJ8=i>melIcIv)(pVygV*@8)aLyfTH@m z*i&XY>5DDhOZ;*<+3*B0@gn z-LwsU%R$-c2>9`6o@sywW9xg542xgedXYLY_+qr9gtk!T ze3fw~S~iC59)^8k1pbm?*uRWnn{o8Ucz-bh_BqL4}jnSv1}sdb;7>R~PN+ z`3c=foOh@*+0vpOHH%*)XoRyDjQ%H0T{mcfjllOszn~{CPOf?|{ik4Dy6f)qXp$IX z0E5BXdH^rvKYF?D(Ri549FN#;nC~L(2Wpq@`oRS;cqib;c6A*{u3|%ES@Q=J`D6OX zRRqCQ^vSs7-^3MNzwNdl!M0|@|1MPZ{J&7VbXPL`SI3*8>Mxxcvot-KG^Bf}HS5?e z1pfZ?G?#XNx{`;k177P=H<_0%O?#vySM74Dh+o$Ka$(^(zY|X%%q@K4<?dBnBzxIKOq@0g9E*NsDqUq1n(vK%&if_Vg%{1$AWP%O6Mq}HqI=1~_Hc7H z4@+(N8!JZ6T>%>_$9NlD>x1qPNA93WBD}N^Ah#xtF$7e$z9}$T#?-vz9)BSD|`_p9nPhe zVI3=73C^W?syRPG3V8D{&};fM@nHI4a?C0_7Tt_J16wBl_D3vyM@)87NsCTrvXj;- z(!kNT-yKzQX>D7W%k`ArH{rA}*SvS^v%Ssx5-k(PYCqnW#KnucGr#6fNkeU0W4Oj2 zYP-1ki)WQATY@&gMJM;uh~S*4OjL8(PEO#33-=932>~qy#6^ zM&EiCg!n`4Fh*6v8_EGAqHg{>e<_%Wg|nj!9O^y6jHYuouy* zOjgdQCS^*p@`}1-O_V*Z0woY>|LyzOZq%7^ls9I0yK>#tJ`cttJ}zB zn_6WBM3Xp^=%(>SlVOl3Y43M1X)nSk8;ZXD9SQz7ou9Boe!)iP9mFWbMaFx>G<<{} zKEi5Jio9z0b+9&M+(@TC_S*0gVx++)8%)L;jtlwR7SECryA&CTCujEF?u=GrK$&JX zU&t?HPQ?*N_S|S!X*>`2$kHkbSed(%urJ!mSv(Lt(;AbcI`ekUwDw#Xdpl?1?VNeC z(erJ(hWYAvR4Xz@csqNe9rPGZO$V|++UPp;HuG&}uavJ-=G=b>s&&C!c{WAERaD>R zG>YEmT*rICw@Lid4?jct;+f{zRCGS?*xVOAa^UwHIqE+3;s0-rO_bFe(dVg^t}b?L z7WFgULOh?gm4os6VtQC$*&5hJmQ-9D+|9Ou=yO#>wXXc_cQ%RxsSai&#x^q`tj4d!rK&BdFZvhWYhlC%qyJ>Nb`mTYU&UWo@9qh#Y!~dr zv$1`C@_Wyg@qkx+9tn#dtZ&wcE@>!@v5XxOLU1}dB7Bv=Lg#@4obj*fD^@tN!n8_RYV0x~vd z5fGZ3teQE6e|0?1KfRd6aGpyhSAhSa#h#R#$4~D z$e&NIWglDN(nsaf>51smE~}2ArATRU))_9V+hvs%XAOSK5H_PJC^fn`>t&b4K1^ke zDb8Bsvf5nM*y5~zR@OZo^AO9r=A-3x$yLuA>5!-mCM{&+L70pOVH&fSC*`KmP1ek8 zN!H9+PWL>VtSlv)mFx6sdSqp?YK}&#tJv`X_;$b}(g)e|8HDUxBIr>wqcT}DM*Ojc zNi&mN^_+Z7Q`9|4D#q~9h!wGf)5GS{R`2-XyThD>`rS^N6Y(n^a3cO`{u1i?eG)FG zd_lsu)wb1c2se&;piIfxo6Ex^ZEu&=HSh1QoBT$LOU=vo_LBS4TYy5RMwg@2y^eOd zHER!PM;Wqx8*-wr$O15cQanmiY$~VuZ$uX>^r5NtMD!?LIs7A|hSqVq;>$O)Q9z+r zO{V*!z2@+KBt20?%Dy-jO$VG@>De>o33I6z45tp6x7%RP8cyvY)hcutAXf1-5&QZu zokJjPG&)tg?0|ouin!Rgljt1odW2YAzo?QC)3|8F%;6k8#jP|WCQmVsww=7=eRF-# z6p1B+>?gmCCT8=)`I+!=rtR>5NhlFS38ntcGZk^u2njsno7z^f@RPTZIzs-Ae?u9M zep2fN@Qw5MNM6TAw5FaF5hRu_F_TU`u@^{O=D9eY{h;ac~lv+ z;UP!bG+oKz5wEy3Gyi5M42kztvsoM1n0BInRvO;aq8)bvT}E==BZQSAnRs$<%xlJZ z*S{p@b^$8Ms&X42GU(%&Y-yQ9<1Gxm@jXoW0w%|R>`b2eEIB7Xa$WmtYjv{|Sh+9QBR z({&mFrzjSfX-GR@A=BN*qSb{mYUsY*!eB~edJHS!i(&5{0lR7#_N*9I6GRL|Wp(@oz+h+(IWfW2lI_P2S%au~LJ1ng&rVSf_C)|n;87#)jVBFXiK+BRkw_S**g zM7kST0saT?s5lgF^zW#$-@K6!^iExIiBkS>3Uh>$(mxhZ09FD>!$GihaeJ2<7{ur-1i{ zHYM*}gc=qH3XHjtj*Gs&t%w8PIeZcaiiyl#5{DHy5PRv*4vs3hZ|0<9UFpTYK8JSR zHz9fK+43%LXv3nnlB?Qqb*)N1evpisjj1)YZOO;?l_!7F*4|M2Eca5R2OGk;3*Y&LByFs()RexxWzvTF&MbFmV zck3i($;DoF{4Xe6`|N#*x+(qT^%Dl=9$1pA<_N;rMZL8fsCLz5;|7N|RzOz{N5R-d zeYvQ7Nq1tTsU}_Ig*aUKn|uswW;WXU?$X@r{? z1_44H-#x~Fa(gGb{7UlCwzJD~d&?_wnQ%=ex34l&ah&7|6{A;XpF*)ytym`9oXPE< zn5kG#{y0Xp?yctI^)B_z8#>CLJ)8tsn`?lC?H=A z#K(l3oU^@(?YUPfE8fw5!Y)dj6QcqKtlbkKz}$PuRTr09k*|!Z*uLZy@?NP-KK5C! zf_Tr%$yGO(<@Q&qLvB~s0zA5+BNOH_RGO(cLVkH}zmmsRtj~mP8R*NXWw%#Ac*Owu zr&|6cr&Mgtgj+JX*C{rXTy@Df22tg2SJwhIzG5H~zM09rLjET5)wRi0-$_>Vgngob z73sosGbvTM*D5QXp~lnw)LPn6!EDFwGm6l!d&`50yBA2rC^KT`2_cmiG!01F-Hq+>4W!4= zB{)iVB9l7|C>Y-s0za`?`%=B2mCdPODRWrJV%PuG+FE>=qTnIhVbTUsS2HMLw3*xi z3bOToM-aYjXv1e?((tC_4e3Lx;!F+oxfT5+i{D`?D^1|9X_S=H(kV5hD%X#;vg+%8ay zXh>W}>K4^R*>320!ArczjU=paHKc1HKsbOd~L`r+JxF*ayAC$XbI$(?Mp zWV`Ef_PCV>Y{_NBRwxs@B>>?xp0|pclH0p7q zU&QIu0g2)Q(6W~-VB0b+p2C*Ov3i@L22J+D>yNS_UcwpCj-&-3S)$0-B#?$tI9v{(h63xrc1BF<*=Hv*E@KQA$;=Cqq3 zuT%n5wfN{MQnrhtxmq6D^Me*#pbeHe1c+|b;RX{ZvQ*{;&W#EVMrM%ri4uXT-`qHx)U<1u zHBOY+#=m|ONKgxYH@qv=i%r5{wQ(IlCsLcpAKqrZ4Y ztujs8DU_YOT05se)B*Soyd+T#PiuIhIGp@^V>~uanx7Yg8ro+y&l+cM2@)KiGv&h+ zXF@K`@-V7klP|$rqb}3PKFcdBTPl3PodD1y-f(Nqq-* zk!E8NAQK7BK|JGNRLIniqYa%vL6m5}9n(=g+aPDam)_gW)3!!+&zn5$hGhP{-k5j^ z9Gq@nm~MHpq@)sc7a)4s2{lsDx#&!7{@U&l6>gC(hrAk7EpsI{x3SLo zBiUZ%`2wEamMib3e4Y+bf^4aaeUiOQ*=%*5@JBi=GldP_X9lHi$`Yf@3$jxuYa;LF zm?1fNWlTsmJ`WY;Yn!Ip(2P0`l8E$D?d1lIa@ZSdTv;pQtnK-%L1o!o*UaJug~*A| zx6cd`$k=8-8(ctRIfHPVl;aZS6@Euf4cAe~nrAr5bDnM~$PJy@n0TEuuV$0l(?Z4{ z`Qg)+;;cXV@-tq@`IKL)IMYmtm)h#pm<`8tA#))+j^5TuppFjf+tk~B4YRcj1#m7C zPUS!BrQT*2yQo=48S2?Yim!d`gttlgw1fZ{hsLkjOvz6dn$fF*p5ZWQ=oj)8j^Jnf z+p?;&rTX#J%9x4EVWs&-9y~Ub5`yPyh#~y1W{jc9fX$wX^(5F+(~IAJr-FnvBbP`$|B#<(BVp^A zqbRaPRp`Jdh+6!nEkYC|jx;t6sDMtNHf?cbw)#y2DuYenH$A5`k8?6By{0{eDY4UU z+T)Pz6hCao_vzZR-K*ia)YY&_;(*ggxp&U=1pl(5cT;22I^p9et>3iH;V{P9F5SDr zZ#rhp<7CY=ziG2;(hk3Ay`!d0eAXOr5^gdWmF6eN-7P$N>S!}EAgMaww1fH)bsW<& z*@G6Kl=d(Obr_1PIWh(C6ajavwX!u_GRf3a&*(O77cG8bJ5P>!oij#$u9hK&GzF>s ze$AVH(@_V<(=oyMi8sBbe%GgZvi?hKc2cR6PcUi}*T;FB_zB))h#aPkjE=*^(=!ee zPn(6w$I5N$bZy@Vqp}MS)F)`!ZXv6|jAZ3T20|6H;?ctR?C>R9cVctEhF#!sBY+_; zflo1f9g+q+gm{91<8H7aju?6!>(x0T5kOR!DFWG%sUu!ZCq)oC&Mm44`f_ayPcFiz z`dU<<*}iou5|0ytJEAg8?k(EAta>z0nb;hWE^((HQ|mqCB|8=2;0Nz z91psH;05FJ4vE_=5ew=a2_DfYr(3p=?A5#}zHDv`_oAuJhgK86#B&9b`(Yc+HZA1S z5$v5lPOFZ4DKgf0O*zM((z#7Xj4R;PhrOn^HA+EZz-!u}Q3@~#nsOSYMx?lDgZepu z_Yge_ZglLF^P1K;7Vr0(-f(Pk!fQINVqRj8*R<0Wv&p@sv8h*e2c?=vn|8W_Omng` znl`%9IlpO*E8XAdO8bd-{HC{D+U8iz#5!O(hus<-X};7zheOXUWyC+5mJnRNZ1!xXtDSC;IUskyui0(_6lBk@(L!^D)8^|OH*lR!n`3ixovb94>vGmh z{&X5}x$hKvkm`bq$V3J^#C$sK*J7#dYAe&w*-Qw9`I9Ap^jd0LTwYDimciv~IZiAF zZA?53Hs&90OrWX+CdWd~Q>vQvWPr;uyo8ap+%h`yVn&54wC6w7rk1S;;A>q~lWL23 zzA<|>=cu{!G4-a$|1eaGMz`4(2M4^=QLn}(BK)r?^QHqf6mTJ2|E3#^7lNAgS|gaK zyx=u$bK|kmt2yqQA;3iI#8}E}lVgUSpayxsFv7erZm}UjwXF8e(`v}8+Ed?X^Z1D#G%7UGb=K6Zl38dCAjngjOY$7YZpPR3ps;i{nCkdM@mhT z4oYi}(_}9;VkBFGu~#^pEn5o@%?8)>Tq7rfO*?kS&23B^%!DsIC5tJO;$HJd%?sRe zPRrd1ZidPosKiBCA0Er?A6>CK)3RukUC_~2%3~>aLY$guxx6eq9sF zqr<+`Zr5|U!(%cncZ~@La<7lg^`2I7oH8ttd%dl_Je7xQ=+xYyicHIQE5a9Zub1We zswz%^;uPcDzA_$9#ReUhX=xZ&A8t2NQ~kN#3E2r3gJ67pcs%vSZ`A;%;IR!YUpp;) zA-8`_E=pGPv-YD{QfH1?zVleg+V_-(mbV&uqEzL%E(xJm9zp_l>UD*m4D4dL5c9ZJ9k0@6)OEEwevt4l2B5x#)~+ zSxd`|k8mr;nEI9(A7#U9u6t~*=d_Ak%j~mtz}-$sP&5#Mx$`Kej}i=Fh8m|g6om**b`{cJguD{^5+?4pjo}CVx5wFCJsg{F_Ht^viv1CVw0G<>uGEd2GcIdDBsWn6N64CncSc3V%4?&X2m9KT_1r zDdf|&3LM-_*ABOIBB<$Gs|pz0^m`{lfJ~fe>^zyS00@7-IvfGXBp*A~tJp;1EZ4IF zQ`hqM($N)N`1vcCDOl+WM4hXQu@zf0;j=Erw1$LRDy&xoqWKq4i6lHtCTr0u5|iY;xsSgz!Ybq8etU+3-BYLM762m zTy=C=dY;f3BlB=6-A$iVx<08>xjZimj1KRn!x`qKv2&VL=$+>2#gAdL3|1OWUwpDo zpW>amAx${x(CADG>sa0^+<~n`Z}?oWKFS1r{lEt=af7J zQK=qyG(^h-U$l4mEB4-dVHX>-9tn7&+!gzVYIT2%Z>Yvuh^x zp6gdf25SK(y40Xyku%GT*W6)3GK82c+NAELb}ffvoHTKnMKG|QiS^{YoeFjY9114f zQXX)%pd6Z%b-@liGCb3(bPODALu&9nG)T@H%F?~e>=AWa*H@}h{gm3EB0OKEN!yCc zv4x*h?neqK_|z}or)XKo!p?#^D8C)}VtIkE&1x7!6bIyZ#V=15-)bRzNW9IF0Y_~X z-OF(|uEjYb2P}>?m4b-P=(kzeaaP*P$JCv>)RQ}UJCf%@UC+qdxm~qLf}oyIArCKm ziA`$N3M`Pk^Pfv*ShAbfU%f&&3M;{4kCt(nOv$b48+9h^NEERrU{9vCi;@Ir)M|~s z$`*o-mNg~U6UUNFZ%sVlmdZAKwn1z4vPY~eJ ztu@vNa^J=CQ+T8!$ z5Z+HzS8aiN-?niR6^iuIJC1d)P7hK5-?X^Ms90uY;2Mop3rU+*Kpc02`TDJVxS`R- zCIu`(C6Is<8Fp^Zhc33ncqSUwWe#-MXMt_T5N zIkm0VHCehP=|#Xy!I;dsP-M)SaL6)1X($3*;7@9YhaKfELIwdSzPP_TMJ1JV1s3W> zxtrvbH-_&@r?!4koM=q@u*fjng!)j4YO1YpUOoprWFg25> z7mY?W&uWBN|6vR3o12Wnns%)RT&>g)*HsWZhx}UO64To7ayS&%B;=h%$YCi7?^nwE9UPad!6+{-8*S9vZ1h#^_47w7O751a}tpHFx z{39;LL?ncC5l=EU#Iin9vyC2#Q;{1YdE`oL5lThhj`ELr$NbQeyTh5^xbO`-LoUfq zm?VnK@0B-@xaA$i7%x&8LBbb>Sk8;`J7IX;Z)VUX*|HC-uRkbc3|EoTI zo#0oCN9G33jMLK9vaV9rpt8I;t3RJLPg&cQRcBcQ_2NR^$}z@niwm(fbs-%ToW+*l z`8ca3pY^b|K#*%wLi4QbgtKE`4fmhnl;UE&4|5@&{3ngXkez?ne55(DJ`%fTSJMSC=cvxf=4*E1 zK>(uDd^}Bk&cX8x3HH>q-uZbt8=Jc9$$93vYl{SP_cXoW&|?l`8wO1;I7Bb1I7V`i z54rROO)ol65w7J9=P3efo6-V!q1U~LMCB~8378rHGFd96DF9QO@COb+z7O!)iKfKCRnjg5gmaq4kI&QaiGD^ zIrp+zOOW)8>&4jVXqvkjf21RHos>FURmMOPe#A}f(0M|~y{&{5pTS}2+9DsN>+Rz< z<1qe+DV|1L(D?dk9##UXIPZi$j3*P1wHwqS&2r6L1X&2HZ1-#IBD$_&sf5Q8>txh4 z2h1_~_}C7wW;2(neyl|7?!=I39OIdoiagY*m*O4_YF=lao1H!XBQnR$709%K6IpP} zB_}r_SA=Vvw8h?E!Zj!ILtya=XG{_=o1!9<3j&IOSrMP5MUm{bsfuZ6B!s5jyuG*` zBUh31RP4=e#DiXNbSqjJj!UcK<7i4_Vy*K`%OGjt6awXrxe(QfAoYUhhSje*BAO8B zsZgU01qvTEwL7-NSnKjr&jd9n8)>hmO^!b;z@}NdX_GjW$e6%01bKz2KH&VO9ga$~ zks09aA~GJPc7+>b&ZT{bL8n*Ku3_s^d;9eshkpsS#j#l|Q+TSy%ZEhCuxO0tgWH6B zIk8z&9*pHgz^pe|W>N}Y?;-rdkHpJv%{7V(tcznZuwfjN;fa#gZH_fNiSwwL7Up$f zWVo?uo$FG}ODW-a;?s&)^jGJJCr+Jj20@?oCYsnXO}Gb~4k0zxXgpa=TDFc0|Hf9& z!?J0X!#aEz&4MVpNKwSIrmzeoMfcp{A~4l)M2cs%$S5yn+cnhW6cA5q-T0$V*E#jH zhAAB3CX(>H1j&~V1ItYznP#C9fBQBR4o8RMf7`+!4}LtB8b(G*CM-nQOgm^}X`xZ# z-V|eIvSKoJC7lF&U|w-JZgv-II3GzF_Yt-=xVYoHG#+8IK!!qo*beLth_@~bLY5o` zOo^IO6*XWfP88A%X%|E#jH5-f?s2+-u1Ps3WUO!`l#=w+_F38U>4U=-;n>lbIMB$o zx~W}_HQbj;7}Z6(6=NW>Xt8eYu!Vds-*vjD-H&HFn%)_p3oX>kR+l(`O`{8QGk$&z z_8u0CdYat>k*QgW7M&*oEz*IH0mDUcA9%B0-5#(!uR){7LPVVHhzn-yZFIp5C!j^q zv^WG}Q;|5e*`{v9W2JYVt)PttGtR89iGi3u#ZR?+`hSg2U(s#EkGXr04FHOetx@zD zQP+ZqozR9dRuGBpLDLQ=Ji7?;IvLp(H1&wzG#NC#?Piq2LDLb(Nyp;wF*kFY2}u}R zA>e0RkcWd}hg@)x8y^n1$n~3c75E8kDn8{K_W-Ly?iH1}!_Df$0U%-+gNQv$p}PoN z^ecSP*`%ztAGJ6_%b1q=gm~V{MU_jsCu#HbXttEMEKC#Pp?~B{*`MJXKyjGovUFM4 zsZU2}YjAh&@EO?&f8BD$=&-jwwa?r`XoE2=v&V#6b9=|;qSGomTV}9|jx6X=ULQuV zCsCfdmK!U$NnvkUuD417l~c3^!D-hr`&4w*xcZhGiSg`k`z*KSq6yhDuVn@yp8ix< zA;eSPa?NRq$c)MLBrCSI%qF};1hHpS%WQl=eW%p7e7`CeDY^p*M0YxAjEn9JD!S7{ zbZ7R2mTS&zx%)#dyd`=@SL|q+O?2mN5V`2iVWK;C|Gwx>*NEs&S3bI?7%BQr&THcD6-h4fX~d;SwM*xah5C1b72BjU@?cFG==gkYT9J zg3>1vD7IfPPg(*xsSo#W^ef(;yxXcGX}3-ZJxCI__HiZ112GZGiS897r<))u4|#JD zP(+d&vteA%32bCDas{vvz4D9qBm5r)NV{;_IADpuMz;2*4*aMv!-^AV+q};KqD=M?mf+`6S5A9}M}}`yn4HKn`=( zGJ%aG@~$GV{IE3%Y-G<|kq0XbTfKlrHlsEV#O*uPald>_U?Vx@lmgfYiF|Xz`)chb z$@rj9>t+FsME9FK&`4%}=>3pCDuP^57}4l&yLzjB^Ig6Xg^oL4(rUh z+6oa8zI}{1_8bnXU0IsjS6;C(?^Lg_S(>=#OpAke0W=z*F$Po|(4MLCiX>L#h`v=| z1lFgCyw1#rXyPbk z8`;v8B%h;p)8skTX3h}-`*5@p1 z@l^JlgoB)wBgjtvqR+?qmrt|&yZ*T1xV8&$dhTmq;2kOY)v5nL}btlr;(b8M$HT63C^^n`Zj%7g{bBsj{GpU1q z(@V-$IHhT$vk&n?UY+jd$QNyQFMKA1;;5*1k-tFL$^s zg<)yCZX2=9^KPL{6mbh4Rp3^yn>eCIfb=j?TEeI7xwBoKfmXnW9SJ?2TP73j^qUSk zQxhhk~X~A=3t3+(U6H zh!4BvDqq3E6R*$$MOPCHt0&sn)amGllE~4o0uG_*jEkzs%G@E&@KI#Y_0nOAxWb1i z;tKO*?m9m~?m<`hunIq%J2cj9VS3qf-aqzN=hr9NqiI{Vv>CDKnCp>#Hcq-8VS8r0 z0kMnQ@N8#4t99;Q`y^A>8?XV!d9U9zsOsccxM#m}TyaenaC5TfpDRz$YAw_o6VKog z`II~!E8QxJwN5_^yp$HYta2N*k9ob@`^XYf?$nRxxA(D^4TmMGRW@1UO2FhbK2rpl zr71ha!1IZC#~9n<0M!~)`(4QZ3qF5KTQe(LFVgX47&;tPawJv9t8fLKMyz^SgSL?m zi7dpm?H2c3r(cr;>$ydqB9^BtlJOhhq;_#_R{rtsQM{Vl)R|hZ;chf%jgDV9Kb$V$ z6FWJ7@_U~1yU821(n}roYu@vl4!AYdA@$@k4d`;h_8Dt`eTuad18+MM**zCDz2o?& z1Ame+B!|D6wmDYO21F;4cIpB)X0^z9uKE;_e=;|_LEP#!z2F9)4SJUmr)qk^VKTQ7 zZpV11DSn1{b9$EoVGrkbc{?8W?s-ik>DRy=2VDKV(COHhr(>>B_?z51nbR;$gD$P3 zv8g9+vhSoo&QbF_bTRPpDK$2~J1SYByRFHDY3ct?$!%9-({3jf`EOXRFT=Gkx-n?u}=Qi~jR;@}sec=h~V92#(betaq) zkN3fA!>99(<7hVD$vC9VR?yn;-=+fjsKS=nlvAJzxeK)OgWw~93RSaFRoi|R_|*aj z$n7||-7;eDA<}~vz91|(pqG28&3=kVnc^z0noF|d5G*@P0)x=9FMeFN9;SwT3MXFD zS*X;zLCq^xVbeYhleVW4HCW>YstrfKqH}a0$2np(FaLQB9s&``UXM1{z4+IT+X%?H z71Rvbm&eraNP^oKj>Di!`)ik*J4&&f6HX2F2k~}uI;pdfV*;-CIq4Sfu9f6&ZzLdU zdu~}I;ss)ByvZ{GJyTumy0tS0+EcrXb6@en1oKMxskeL-649R2fLv~=H~rKbzMlC# z;%i6JQJ>wZgp|Cdm#rHTuXs&I)d|{b;rx<5G0vvfoG88PH9Zq^8Qwl|VeE=+mW7<( zQ)`^Zw~zEiDBE4jmwgU8@7vS*Jks#)+U>D&D>zix;9|RL?VQ+__!L3haA|x6h@X#J z9v*kTmp8oDsp)uY?XlSRz*be;S^It5E_8PvJ8Qp>%jGaTYws=#*W2uxI+5$e-|~Mm z=5R?JcT+CAZ!#@2#)RgF=sQi$oA1XS7t(RLbUT+zMlP52x&7vHc>^5yT=p?Bv9b0F zoGu5)HMGpf>9RAX(VQ-G!GPDLE!A)HqT5)D*9A0Va=pn4p-Gw$a>Tyn3hliC>#>Fw zwtJfErR$`PwS#Pu{!cd6{tnj*W=3IS?IAYS-pIz<&JnJc&b;eIo*w6V>B03fdlDB5 z@-52YyOizA615v1=WrO#mC;XaI5C7>H}0&9ldGnV0&7iwZm_&whU$ijTz&24d)5zO zsOS31Gb!$aTr+g@*4nmvHzfbAO}A)rO_$xG$^Ac-+?a;7IVt2akd~Q~JbF_9!JDmP z;p?Dv&KUeorLc0)dgVC!VGQi;wPNvawFpY9jNY-UHk*cV(NGeKb7t-N6V!$P@Q@9$4d;S))LRF%^4#owrb)dO=OW8$ z86M?!x|?wSZQ{#=P-uu_3JfbQvfgNb9*jG)pAjnlB1bpx`sPJ}Di+yO+^~tHCsmSf zU(Ah*|GSD8eVOB*3dQwdsyqScJxIPMU+eDZ_LFM;PNCTEBDp?anDJNPqR(_(P$(RC z*Ge@pRiT8Bf{?x>G<*W&k+yxB&;z&cc{sMf~{#U71&`N6oOtg#Oam&~dp zyz2OOcXU^wq~oAGhp5XX2y`un2Q*G|KoVaTbz$q!P(yOnoqR}U$?J*vT$&Bz!RP!G zF3pxVmHW4xIH~hT%3H%vxg%+SYgf4kAM>)@tL=1O>Pp_!Rv)AW5gbHfkBQ8J%VF$Y zU3~sSvU5futBzFFdVmk?EuPL-K{~nCwmNgq>tnt>-aYO?E9b63;#2xQbX5aerK=hzs%0fo zGa6s|DHgID!B*fjHQs58=pa32O2@hs%fN*1T{_>ov@hxohlVgp%QEHl=}DdxiXq(} zb%2piX54B60=7bz$_afen)=U06^ga{qM!bZBnj>A=sM-P)aK#TKPT1b?Ta2E)$X)9 z7X8)#1eTAR(Ws)yA}aYmvDfKRuHM(di<3Xcu!6Mu`@ZaDXH2Q(j@<>LZ_Mca!v*E@ zlhaD1*6ttI3jUW@^60fbk-lGlqIs zu40m+!B=_M8 z`i3uN-xHsuaaSV#az(N0kb(5zE_S93J095~Uq{+~Gm5YBI_>1EyiO}z<(2Ej*GROG ztL4`ulK1|D_}X4IY{g&LxqJ8vI~pk#;WskhA5vUVAGgdMpj)|@exbVcG%vh@fx4S< zx{+bJhI#D~`>+b^9BsRAXehoc^%XBHwfj<$%&O@?!uK|p9F~qk?24`je2`*j8SDTg zxdBO*>^@|7@A+X_8ewLp<(EwZ(tT}op9OsON8eD%?C16{c%ow&IX20?5!K(XYkg%a zRI1%0E;}^I>y5r;DpymW;zU;(T?^CmoY*O;1RTQ9j7-PP8e?smL7Qe6Eh{DN5_9gd z_p>TFVuN53M)M0vlo^*`Ag2`B7ZR?&}m*HzeK^&`7O_hUb| zLF!IPe973~`fclP*Cc8^5zV?6qiEIFN|wBm(4CIDgM5Ulr&qcmY`7yRbv)Ai=}aN! z+4oRirs6Q@_C=>cg*Da>XU@&5+nHC1fSK3%*{|Pb(+#1!eNi{P|0Kvu>T8Z_NJUo6 z^N%hy5jY33igI+p-9M1?RJ9G^K=k>48dXveRcs&FKH@S(vAMh8o`+&h_rsr^BqR@0 zJzsSBfUx8Wa%A;Y>TigOeIc5PT-xv$^&c1Sxa({`N`~W5HLJp9z^@wCchLGSFItng zDabe;?JHym>^Z%uvuRnZ+1LHGN;>}97ySnS;%Y@$-GriId;i8v#;=v2gwN)CFAFYb z+_63FO7<~g1iP=Y9Y$b_@?997Gpco|5H&S}2n&_@T)%t-kHP02%+fDQ7MR#g5ROF` zQ7?GyLoR?OW23ZD_2`|FLEXbN+cx2JU zhKjdXfl3|oTFh+||M4Vl8auS9cx`z>=m;24k_&$9;HEkaY;1fK2d}P6_$qZa4 z4|Wy(rSo`W|I~C(xBaV$VswpOQa@KRg!;7Tqo(-~Br#(fIw;SxZ$vkWrRd{W0T_$! zi>@M7#U$uXdqqBK!7#w;Z$y7=#U4#}QJq(0NSPhQkEt@ZJTg`G_wPD{ZR%LjVcP4+ z50&~vd`t`UW^?W$Rs6=>K-puGj7|f*1x?|Y|BYysrCjjsi^Q9J48#cUjeZ_ul$B9Jw>cvj$jV`l7Ob#|gP|_DoX_jhiELpNQ z!3cbmf8S*Bc1JZ2`aA&NNAg-Pf~i(()mZzy!>9sS z7FuDKEQQ_%oA z+h$%H3OaXxwC!$_NSk=L{Jt^#7F3M<^rcE@mba11mpmTzNmCB&(sy;e+DILZcC(I# z!gxhdEvk!_6me&$k*@9eMFkl%Av3d6!Kn)6aPv|H|ERUXbR2Ha62B^BOVz? zGm@*$L$3tkH(d*~PN9!W1zAkK>8IZ4GoUou2VVACXVHY5ny@ZzLXR~eliXu|1=d0F zng}}89Ga&*v4|>RRYXPu4PbX*BL**eMO1zNu9Fm%^ovc1(m=&3YSB+o%~xiw$k^rQ zw~>qO?-z`7uk}NL4CuSZV98!bNnFmT(T{vzY3`b&*t9!zhSuF~|pKN@4E*+c1RHn`eOB=^8% zllZICSH)0E&89Iw%FN>o^gV0U9qKF$?2*1GhkGhFhMla)r6Jw71Xz%^iIlM1OdPZO z>ahFjP?iN980}pwmipY^d|n^QKKBNGzke9rh>uuZAVrg(0 zx9|jd<_pO+wxGq%Wr_WT4`Jyh8e4CzZY02_N&Rmg6@FU2Ke`_LdCBs_@4{4WMciNr z8YViUS8^bu7b4up5={zvqwmpaR5|*|sk#VXpLOPK{AWIAZ;;3WVb#9PpRXQ`v$|gr zAT29t;2(Envv!A?n*bkH`6r_7C|cA0HX)p*aWT!WQF=moIDk<38cV6_i@0(=^8`## zlBvOBaI+x2$LM>l6Vg#=MIJO+wo)geZ{3cGfSfwRG__8q?sOVwrtYw~R)bX2qig*h zv+R#YcQF_8N#<&QSYr9$xRcntNb)h91tX+Yy4QqNgNLvNDMZ`Js}v6MI;Z-B4em!{ zC1l)?P~8JB$-qbbUyS`W$5aLctTmNk)g~e5zji&}Y^R(!&%jNgRzSMu4gO;O(Qleb_GADtzf7i*azXe#uyH|H zzWeMeS6We-=GR}wu2w4423K~)9<(R?Q2l@52TP2eQHnik(6I@2Mkkgyff$cGRLE*PFCd7FQ&+)f{GRSBg;nEnysG>TIZLeb&)x{Bk{(GLF?>l z|N5uT4X*DefERfKM1Z=8scYNlz+Rt2z+neFlKlZJY1ng{fBib(bexK7WU5%d*I$58 zzuj2Hx%GB`;MIJIPJaNgT+haG;^~I~IT2Jn?`P{9Nw0mS7qVjLAhDFy#dzt zI#3b5Kro7sp5b~yQFXQ=RM}zW?Y<}?8h<`I_6F{^OmqZQY_ul!rjsB8uQ<|aM$pP` z0Hc8G7CCkBW>B?`ApHhETb3~-e65r7gS-8zgVxY%)6Df<>@qMs*K!hp4e=a2Wh?eT zw<5Duy#c|sDsFCkXj4MNHy9)z+LrJV8yY#+-%9YA_xBQw3C{dI^cLw{GyBjQ{J9Q1yZ{b1)R1A){|R_aYtR-wa5#2qmAgXS2N>(4(>)L5cwH8ZRV9 zb|u^=6?6l$#IDiDE|8aM@yv-utaCXZg=JHdtxMjErr4}_*JOQep&k*fcJKJsZ<(w2 zO1&>x=f3bNLETL%AFusd&oNZhNL;Uy;$??%J*W32>*ngS4JPD;vX7JV^wYyT-!!of zdiQQvn5=KDsc-#@veqAzw`Rs2_|WQw->Sa;x1YV>8$ZbW=EiHQFU&mot=n$;OStr4 zed}lITW>F`Z~aDj>sQ9LUR+6HRNs2Zg!wT4$HF-dNsx#kdZ(jcCVZ zc%mV3w7xdVwN+v|MTw3~EjL@QAD2%pPjo;?xW)d43YPV!^9RRwd za+2zao4@7K$JQtI*B;HS12Sr;U7N|R9T%qn7^jS-#)FAHwa0U70DHE+c3ZA}oO=hz zy;J3T^|ieQ(bZ7f;i_~=0L4i_y;5JhoknC5YZ_{wQ+4?ypyH&liQTnFAig2oT90)f zWfB|XIxQW*jrGV^L}Ej@u^xy0Te)@`GEn=THKeDZmMiSn(~trB4OV6%tE8@P@)r>>?>Pq`9dLHHl z4vmN%+Qbf3^{xExGs@p9hb_h(n3(yEI3n|uvBa;9B_0<`v=U@yqfhI_W%|3a^iPYsINsr(O)R0#Phjz<7;h)(_nq}+R-I+{^@c&Kb*;yRpr{o!dDjU`Q=)cI1-dCPg#s6{;VXM5z#Zf3 zYlrH&$&Wz*`k732!l@8aWQ<`_)KkQCOfVqmph#cu`;#0 zd6|&QjjcU$adv7dx4xp5S&ef|2{>YWt!)8XZJV*`vlD7FxiwUAcAtkz?$W8Z71a89YOSx$&B&&~ zySAeKLR4-;_WW_Q`Tt|>ec+?2&iwxj0ZD9dCK_#MQ#)hRZer19s{i+b@ihWlj7lilo|x0NkUg!7;%f zPc@WCfX28JiaXZWxU fw^q{F9|twE8@=l%DA&&G%0TTFj{PkwN^kAuJ$~mZC@)~ z3qX?>qyy=Fj%xID>r3Ja1+vKT-WK&ktw~ zaLJZ{kot(;pEDU=LGAw1C0(!rxHgX_$C^8W4|GB4s~JxbwXLHo5aq9&ejwlK>;kh7 zJDaAz%=3m8WSmm4DRF6b~A$qkU3CgkLVTZA4|ZWwhNio;hQL=8IKw-F(`TL z=Y_r~+6IC*Qx(d#Pl!Gj&rHQhv=fSfLyp2OSLKPnJJ11*3bC1~=NZc13t@iIBg_+I zttBhe@OY-8CcB{&9(crd`ZANoKvZ!N<82okMvO(bdR#C*`Wj;hh;EN%uKtKP4~50V zqk+%iK?qDd_*+A}4Vfz1YKP!Y!;{yd1=9WKjv1U_gH$0~EJpYaL89jwUPOuEK$uZ( z8Zu>LU;~Qw&O`v@$#!ODY6*j-Z0Gb$#dtU@I-~-qGjGNMnjyxEH3l0vV$Lw3bwZI( z$4N@G-U*w1l>YH;bM$pet!Cqh9<06=N(er5BeV{>@0M}qOPBrD(8*=H#(?k3_KJk= z#**}<%WkWF#7pTh^mN$)Xyb0yBwxA=@3VmS_i-<&zgU)pHq8MKBh8Tvz34r^qTzM1 zz^1tKxjTYG2T>#L85`(#7FY1LkGJns26j2O)bQ5L+qWjg16!OMrWT6&ddTe@q8|1t zBgOp%RztB@>xbtnQNADko_yQ<*~F_ROp#op1z)VpxSKyUG~C`QJ-@y8I%iA~o^Slz zsGnQ;F`Ep%Z>=0t^oP{v=kew-Q>Rz{G0Kn3Wo*l}(jPejrmxgQP?AXBiphphpBPa> z#`O;SNTp_)HB#8+C_KQI8hu%pNIy`gqmY!od9uDhbT`-Qp_Kc|(D+~o=bq3l;b7=nb%gQ`*0Saf*3PNsCR|;H zQ;S_kQ#r3z5@QY;NR5JRCo$Vk$@g5YLGm0}^XPuwW)u9vPxIDHdqX$$p!3x9cmALt{Xpk6)f_bSk@URMgj*=!hJ`2;3nx}~qIX!?}^I}d1BL`KbK0SA#kkeSNZwTV-k z8o`bPau~44f47C>!MVm26VaHWbA5B23|5KBw|9AZp~A-o=Zeo zM5&J32m=m|iKiB2shG8+xPg)_u)P44#8>F>5&+uvLR3PdAs}i8INh3M94vA-OQ*~;f=XHdOPDDA%aTdnxC=pgS)Ch|^5@0$oq>L0;quhLb zoM6xR*b9j2lE~l3p^5@X@IG}sVh7$A1iEl% zRoki;|9{hDAv+pCfWsYDl$;(8y9;q>65s+4eL7wo-IK!{gg=5glK_|IxO32sat=V4 ztA^l5m~&8c1mfC+ILQ;A2hH#cu{M}bFtB41c*GwO^t74S`FUh{WR2AtAq6gha0m{} zCkvN8@piz33jGcCF{iYjg;O7$Lf}9i<23HEr-w0^ssLZ&IuL6|2`#*#26oA(sn7b{ z#VL&Y(c3*b(0KEhGq7J}2+crB&tDhVT=`RbXcXi{^U)77Jx8j5>nGQ8Jc}ughagRP0leMpT(kpf3gwpm7r& z(l7vXo+AlBnCC}6E4jqu)*L91K0=`I^LQRVjDMbF=!-rQd=6{{wBa7oV986*ff2mfUINo(wDTN-Q-gjSdmP&cWRS&?snQdlVuLQu*G#SU#DLF{ z*wd0DvNSY;OA@4EJ*-rZC42HHE5s$k-k}-Nn=(DAVif%mbV4CHbeah%8F((46Bit9 z%BR-(3E&cDl)SWZ(v?VUit6G?K_$7$Vp2h*N$|ub%#gz#^IkH?f$!%(GmjI<5C&Bm zXagmKd6a-FL}H%pz~_iKHAI?cJL1C|WS=$!nMaVBaUb@vM@~_ zvKFM1!;S&SD#q=j!pCfzk2^oX!`+TNlGM$DDQ{gqA=gb`-b zFuuwo>A=QNL%f_}3(PW?GZuAvu3; z_;4OXESp8eXobeZ=zxz=DT5;ljgL`QHok6(&@yw0M{^8t@GK@YrD2UdnhrrD2eu3j z&xJtw`)Z;EB>%jg*pvEXAAtc{)l&D;WseE@&pPL$i`FDrb+cA;z; zcI)}@mBX45#Q94KR0KB38CuDQ%z-2!n>7KBV9n?Uw^buyd<-G!3l|YEL=JT%2ni35 zT12?HMFb=E)~{wR&*L-)3X~XWRfgp9Jmx{sEV9h<#z*WxUX95?QHw$G9?c_onjW*9?H5uh%yNTPbV?6#0d6Kc>T4GufF(fH}K&q=eiLTGLmykNJ&v9 zKBg5-d?P|q7K2Cp1^Z~@Ord5XyAeI!VU|E#W;u^&*dS9Dn?zdomv$xsdlOo}a8^_c z>`^KpC|6iKCV8_83wyc1<_?h%!xX5{`I8(2WwFabKaJ@l5!jz22d#Ic@_6f80gOq^ z7tnQi^utLXU|ZK`+nmDWWk^I{^Oov4UN$QRuLlxC>i@$gFmQgE>kCDW|6yfLusbHT z@Tj`d>LW;N0ukNgMlQ%Z!;^fjlzSLzkXAjj1$H9Sk3qAx&d-#5E3n_t50oVI$Ngrh zPF;oU1}Y&sA_-%8XlG%s^%PtFFWK3RMu5@#1HSB|d&wy0U^l{Z`lgD_D#J8Saj9EC zQ93SWqNhweF*|^7&QsMbSaOqeUkXeYt`qm;N@g&mftP4Ei}_}&(8N1bPOM2|0m)$s zB(ViC*@_aGwF8?g?v%0(!xcQP(j&Wch*2`l2W-Bq?IC8F9o^|8c4S2<=%R>mepm+8 zCg1QA5TX663)k?ZEPKGoNQf{XfNSsBUWZT4YzUJWqk9S zBrn@2LwLdNz_xAMsKx8p^|;7 zRiZG2OpiA3f*^Anl1J$$p$ zKb{Z1pDyCZBFJav{_*qeDgF1|A|F8Kp!>`{P(fg=^4QB}*0-pd)Ge0h(6xW~;xGSw zzS}rO_Pc+f{9c_L%4)G4Q#~sgcqQrv%Lw+y^` z`2C+DcLBUqh}>JDlRR=y|LGry+{?ZTawqWPAs0vE)S*U#D;3Z+!X=iOX(;#8!l-ll zX;=bZp{0#Q!Ij4hT<{A^3Gmi+%XnY(RcqOFgI6ncqXl=}IUkC{Z)*7BZ$Ao~rhjVk zrZ%)#j`z6il*$EDTllpyzwFT;j-0I)Q~Nasrq`R=T7I*DhKia9uR49M=}71FM*Zbz z#(X^Si|4N|Qcr3(L=Pi!{sBmME`Gxozs-@4U>(7KQ^Y+Z=sl|N`LE`>3d2S+{p>grPNlxCWw~)Pu+Q^Y4*sSv|d}XaX-aIbJ z&-aomhnp5;ViJ&l0{=CSYgnm& z5C6u7kl)FR@||R7$o)25=?j^DDvkqRzHoMLS1^=(Z|9sjS8u=ZoiRm??n;D|IFRk* z&x{#U)c098HS%T2+kv9KiS9DG11*l_cz)LD!I0>k}JN8UWfhw(h!Xr5+P3e=gb zJ>`YwcY2p8#|KiLZ+^$lEUuBWz6NXQHVlYtpL;vm69gZw?YC1y^@|AE1K+USz!Y;( z=?$dgB3W;zI@-wbmBssD&ZY~aZ4Z_aG9@v-20hB2($PEsNk5};xcA&9vO=fQTb{)V z{gl{YMO(uefNZFEJ?XL^1-Ce5%RQAW)O-XF0O{9*as!Ztzav;~5$r?NqSC6%A?mRPB#P`{NOOTWCaE$=%b6%YFg_{C4Hg zFpm$j8j45v2ad*yt*TghL0RDWn6scPmacU6WIHZ(@F=>dA#II~4#b?@_~4u$i?%nU z<-0Y&?R1fD?q`fgULXKW;JH}fnB&qHr#G9uxWSoQ70v2>d~|c%>5WHEM)>KC2lfTB z(~1*68B5#{{{DYsV}TbMj58QbT^d)b7ik=Ovz_NhPsE)UO83Mg_@&ZT=|Es}09QtQ zog*CJUOj_fIYAutpV^y3dk3vp+Aw)5hcv#=t%-Fz7zJC*`2a-Bf_r&@62Xn=#?WdVX|!^bBpqOMByy zlMT-PhDbl*9b;2G(HoQc;mej%PET?eS7kk@I{!@?I(A zBPTJ530NDHo`gT6P&{7@bM6ygMo#iO4PvO7UflH4n!pPIc>1_tEGE8Gw04oeaDFsP zL)~J27m?5qc`jDkZbp9$nP5Z_gfITb=g@pHZ44n~3~TOZE}6d!)T9%CHA#X1zqH=K z(Excz1c1-}9nljGhsooS?wE5pCidBcB%uIEkQu)vT4t;iZh9B5K=trr0bPlYAh5{;J(#7j{gQDM1LsD@^~WXT_S2Vm^fQcgZ3!zr03N zeL)ID>vo ziaGKay`UlbzWI8jxFLEV9ylBi0HHI}oV%8zOvIe$ke3Zke}mTx3R7Tv%sI*3#S|Ed zImm6$^bWPs_60En4Lv_Z8uYgS$zzAiZ7`KVsCZe-IaHg#tWE59+0p)n$6=A)> zd4+nUzyKCg4ToG2R1MB9oPsCDaEsQUyEvfXbyPBk!Vt;^@VC{Yt%fMEix0-}vU540 z0U#On3`Q|mfIN8q45%s0`L4LLfjZ;PrtBt_jlLY`{0r5_qOe%Ifk`kPARFgTCPcT! z1EBXXkR#s_=QU?nc7uT@ZO!}TyjWllG#_Q+`>k`5t6cMG_y2M}uAbWhXSj?yx*d<= zLxGb<62UERP;rBE+b?g6o`UYE`XvdHAcNz3-~eBp#4i^J*j?s)4HF5asGROJIQReZ zF6fO?uNu)yUkBr+s1g&uTnJ&2NcZBuY+@pBaGHL(#L0@u7&kQ#$1l3W>E*^%a^H_# zFw|TAo>}>UIy`LAnA2s;0y!PIr1?-@v;L-8N+?>A6mBngNFu#7tU1oC98!Z{T>P>1 zlTqXeQj5WW<5bt|`T?;jKK)G=jW?{XHz^5D0ur;*PhYR}air@&roUqFt!!7lYiu|K z!m;=_nSV7hO;AZuf`9}%t7QkbC!8P5A6?cxbxZ?Fm!*O*O4*M*ZNG%O3UVulYvy8g z(BetzmJu?|VUWdKvt)EYsCe~4ozCu@9##)nW9|JutF78%p58W3(?hDR_G`Xf z6?^<_IX}ht<&a9`(H~u`glyl9~Oxb=9 zdyior-|-&n&RXEL=_rM4qr0iDV1ai7t7wCyrBh-*i#m{B^a;lPqHo!dYX7ixUtbIBKK>0Y zJ$v2PSh()f@Z7~W`v}upo;uI9?%V9G`!-wYvJNYV0jF$3Zs~WZ!1-HCz#iiP?kxf5 z)&mHD<f&vv*ynaz_9LNdsQ^HSW! zORVU7NjZhJPqd?b$@HR-VuzHzkciNW_Yws6Dt!-k6PsJ8xZ^OJ#ooV1y-Ye^HybWG zb-9V2a&qfrBC31ZEq()8#R4x*yi~%^%OymBPCBZ&+sd}lxN5l6j8mm2QaV8>@6wJ$ zgr)mt4qaNM1KLXqxaOLc?B{J~8hbEMm%#Ia_tAidwZ6b|oL{^6{+B}hyd2W~uz2Wk z#MWVax>3kQ8U^lFjvC^!%?=`zU5j~NJbn=^Y4%o%> zUJA3>`f`|!WVw(Ab_*xwZk#MIKB9K%nFnCwqCgKyvz(uowKB5NF5PAa4#_dxLo5fz z)MnE8cBN@o*!J3`#qEj6UVf9sO|Nq1`ZP56(tR8PFK&7nU)CY;t9^WfB)KQkyp9WK z*w|tGVXI4}^#6cvnr85&9Ps7|uMJGCOcz+RAAmqy@ZZggD z3YvAVXW#|l$zvRvANEEsH+ewL=CM;C+{yg=4M6r*1R zNBGE6^FkIo*^v|ab^5p=>E+3c{*`8po@W~eS#D?zZ1T`%kS+qrjXsBTnXF0=BqE^h zWHPePE>*9Sy4kxI_%M26;Ri%*h~k$`%NH$H zu=|^ahHX8|mldysK&SBK5hra6Z63Bots-*zlMuGq&V4=+dCw|6qYD(ZeL9E?fT6z& zLrcmrV1S^Hw7pqaiV92ovfKM&qpcs^(8mUL;J85#_IsoVXQ?O+LknuOm^EW)OO$T5 zA}$gw8F|hwZ8xCe=6Rh$VZg!$1O7S;O{4ngH9C}t?l)3ItK3ufB2CkYuDOWR7w0OF zH}X`NDwJLxx6m$f84`9ArELk~6(b2En{1Z5?6qaatur;ncg#08&+Y`tcxQ>(4U0>j zD(h*;;S)z0*daDcHlXABPa+*S6a^3;d4eMxk#%>)h!7QHy{noa`@dvigfbotaNA^C-D63r(;s>T9L?llPzcY>g5}k7h=A>R zVUnIutRsPdju7mshaH*k(v#Wg+um51EWT~SLd@$VCIj!<`v3dpI@S(aH{>thjwo{V z1-u!U&xW|+ELn=Q*-pfCyL1<`QzFurD8(}on%L`M^z*cOWkLmsw`dOB-ddB0Zc0SB zI{4NSCdQB2oTAB$d-Kmk7V#ZReaK(SKp4Q1MCUm^OXQk&HXLy);&24IJSC}{i*<#T)@qMi5 z*4gB+h$25Leb@1lS?PJl0Ux)ev6&&z!NvG@!yH^i9vz%jTydQHSZ6t_k4sCMP3|S~ z!5H*LeT7HBRE|qr-+2ttc3!i)w#-h)k2iWKot%iG-$3-LZ*v0PKOrdiGt$5&C~ z2Rf-x7pAJ`Ae!SuE8-Bz_Sxyg@wuKfr#^0Yrnw{IZR8CexPjgHd(CnlJuZI@@s9H% zRG4%Kq`sZ9kd?|HUI;l(89sO73uH53MyvTif#OvgH|D*X#GRvSvp_T-q)kq8ww8Ms zaEI{{bi~RlWm@4>s3MdLwEzzu&u+Q`A4HrzitQ+q=8^LR3F7`_0ZJlz#M78)6z1h( zjb2Lj8kao$tAPJr+j-sQ!o_U+6-novSbth;_5dUK$;vkDF~42SeqEqHnZMm2F8y8KRs$bKM)YeBmJfrpMETR4#;PljwY zkEt{$_6njb7-)0TA+s-sIBgGEf`ty>was>(cx9a+6$Pe!0`x2O9F(-X*oixcpO~6Y zM0Xk-A7(5sGYPUmM9LMw*@GNddX?)~g($Ft$TwSVn$-Z)22xK+`T2TcKiV1BgWr3FonXE#zPUvb>ZG?DO=WZzLDk8{%(^+j4T#1wPclinbgg`;L_CKJ*@5*Qm?nVXZP}&_wQ!)J~PSc z{#(XnqL%o0KWOw;_e%e*(*KBbt;uaV87w+OBP)Dd z#8j>PPMkN58&S=;kKLIw5`@hYz7aL!KJ7hf9e=s^Sf{=`VCPK-DIP~E#)(K3H%~A< zRlCN3@b5EaKp1sSyM(lMFQNk$jGB=uVDGS%CJ+K{ywt*j?;}4=ibkconGCrvEUVpCzl!ksdP<3)f2}H7u*vD=Yg91p z!T8kh^i}ce%v1feRb#KUhdb@maJcy`H4`@eH|~{WjkXow5DOgRZ)T@*w9m>-WOVEK z`5%LE2rwScgYkH9#c}$KW`JL6AsAOf?ge06OQweC;e;cf-*bWSF_1hOjQ_}&0x;ef zF9h0^8=gx zy9#-n^jX@#rf8+deeFKd(nZ5PJSWX_eTjLg_g+HgQEBr9B1ReW+ zi6yt4;QK+CA<}NM;tf7AILUTCsqby1_}{-(f*w?9wFc$nM~&Q!O(fG0ayN$SEU_GU zs|ki;cx~0rtmCCV)-iJ~+%fE)B)eAk@X@aU@d)oDVjm{Wh}g{SuJN43-R$~lM#vyb z5toHG_!_B*&lmn|@-)(%cHI3TxeM5dn0(D8NFm~mVeTy=(Ml6ibasigeq@}uW_^@# zZl0u%xk2*r76#cnYLIBIW{}<(dBNB?JA}Iq&grx1-VKxaRgjE$$%X2n5m<%-6=k*kC8^ZIL zHqkif?3ZF4@$pu`%J46BGPt+`=h&dN-cSb)i^tt}koKa20NzQtZVtOwsG9_rOr{n7 z1O4mZBtM=VCGFx{YOH6$)bKDNQLP9|l7p99nW~@I#owxA=}nMD6~Ka?5VhhuPH94M zL~sD>0(s<}>X?h&v268`??qWyGB=Dfnw|>olI0=WKgoJha4M4Xpq8B&gmI4V|B5xt z@_c|>#kiyFD;QdB+KlYrDu+brb}RCnRoc$|qO8;H^kP;6-7>|p+?P&xaFVhIpEx#& z=z16%b!N`*ZMGjHGZq>g?Jx!Gn}n5-wN*uI*_(`$MbQ4rMCl&exxjYrD|u!b{aQRAL8$DdV3ajzkET%XW zZlyn`znJ5{MFbc;u2|u^0O{u%Jb#~6N%Y`Eb?YV1*{3=kyadbbt_J4_tNS5c!A81~B1 z<-4sD9I`UEdJ(&EYqFe`EFIRO;KTuZmofk9gp8^pwj#xPljWSXpxE15ChMF=SE3ws zpNNVaX)+wPQLU-;%PgTVS|rOcovRLY3%g8rqWoYo_*hp(;XqC$vAU$XiinN4rGjhX zbQ>;Kh}6y^Vjyn4gzcN3n5*e_pq5Y4(#r#ap-?RP2W@lpNJj`v1cN``ga@JKJ2XDU z*O?LKx~ZBxCw&tUZS*c=a{cj+u}z<|5m2yGxs_g05=-A#2|b+eo_C%6#2+X@F>0E? z*DAgiy8~0bukJ??Ylpu7hNK_qSHJNCDR;ZPR}HS-CYWNidkUa`BvsvC1ND@ z`qmd=v2p*87$107qv4KObj|ck;)-E&PndXY|M_fWtD=QEF**QPa0#&IuFXH@d}s znvQF>F0#3W6wbhI4l*&_l~p%5$D@Y{IgSZ0Q95Mit9OPkzD?&whBv0Cb2|61J!Rt} zw1u+jzA+4V7@9jdw)ww2EjoY4ny`AImHJ9i(}k^ce>kyCN-rBEPmR906zlf*4 z6)U$qsWw{=D?^+NhfIdaWcXvAdViqAKJ(4u+jaVOx4yCE%rFMb?_2scb0!|-%MO)* z+YxL*nnG#nf$E~*iYEked6f@EccZq%I%m}Lg<}r4#tq`1w0JXW$2;yXYQ-gG)uPF8 za4puGp7X8ZSPAC4bOjF56`KY6WhYxG(tJo&385dT=GL>SfhK=vMU3RydDYdy<=V}>o4_yl}X(C&pdPT0q77# ztGfQldd8Dm4?TwvNl%}n`z@x%xQA*z%_>pHQ=T>Qsm z&5}de|AntKJH|9ym%ewhyTCL%*=yGNU_DE`deHMsv*b`c-_}<>`K!p|?tH$CAXDd- zz#Fu1)>?21%^6uF7m2we1(=^3pOzFb_?Ip%`;qX!f@h>vdMWe9fnv8r;B=;!Jbln) zZfp8ZJpF@8opbo=vjU!bKwWc+H4oL>*#qYrr-&jJ)Xva)rn#agFKdCIjI5DmV6z#C z(fb06*+jqA{gJ+ODytE-nsz>l02%2kM@t%;zlrfRwQ;Vm>09ZKSPqL2eq$xvkCq^0 zX8OiStY0wyO1FPslZpWL46?b%edii=@`#K}ui?u7j5wTkcNgEIhx>l&mVZGfC$6O{ zj6U<%qne7#9KyPOz0yvV>jHq$?NIKi<;Z0{N#>;%0nJl{)vW1D%xTMOj}dNR1{Z5 z?6>rWgDaOX7`&dUWp=!2XF)xi5nePrrIS1OOgmB zTMCWfRz+J0qTr({YuTg~hm*x3mUMc*Tby)W#uQgd7C;};5ZU+Du2%t6zU{ZlQjz1q zg{@j6t#ZCS>3q>nEA04Q_wmVwvZ48c=1zXMIChi!b0zt0m3*MB?+0@dwApGFC^+$>aB8Xyu^Kp#9|Ec>hg|?ukGWvbN4Ha*XHYj`3a@VW!NO`^M@E@y6JE7;Y9p*x zQ14y&dM_WTcT!WnUYNtLSEujt-Cdch_g&Nf_7Busk+0Vr{|uP^PFk3+cTT?EUDS}T z_ljJ-kA6tKPhD-`FlNyMxXRpNfFS+W9^P)JZw|-OvvE2>w-}1GN`$$G>4v76M!|5M zURWpAcDC*VO@MREqN(fyomI^x)KW64mVc%o+S|%DQ!dz$?HgyFAh8kScqLaCrZ$EP zl=^|sp_v#*!%FTSaI}x$XJ-K%5^6)yow3&ES)w^vt_cXPMa6SJm8mMqRQ;W^y>@SX z%l5kZRSyiyOpy6{Aa(NmMWxVxDQw&PyfK0Aa{u)z8tE8&Y2nO{>8iji^`~@W+sNVq zMfZ^qG^QojMVOGxeFtc^Y$M`<;Ubk#TbXVqVb#HJYECr^5zN_Ixz{vDxZ($i%$e_o zm2U-CN+80UV}hwq@x=AvePy~sJeS8})$|Bxh#od8HH z>Pn7BnBKHpQ^O6><8kM`)Z0s&XX((q^Jw*EHS8_bu-Cg!Uy0S&dp*MIzw?R~&l0ox z5i)9{Y0L!uMK!?`c+h>9M$jtKD>kYbO>}j$oUupkVWPsst83B=syME_C@l{S+%#^h zo}WO_*B~FN=uHvc^XczZtqTCZDsAD01;o{D4J&psO@y+*Xf3oP7rQ7Hhf~&#NpD;0OwXZ z{I8kmQWb&?o#dQ{YkkZ8^rxvDTOUKi*T-9*^p$E1byjBV0G=x8$%^I+J*eL1YNv}r z!6G}@@B*D~nvj@sv^ne?Jh3zIPG6V-G<`O>_6gG=rF<$g=gQ%}&u|1ZFmY$?!FXUR zR8rh@ad7Qj)pPqonVW}cjKtLIMb1I?_aU%_nQ6m#7y|s@THM8sgq@u{$s!lFYIkr5 zh&|&IZ1ueYbpiMVC8V;Ki#cOw*SAijiI zHNy@?v(mq+XyvanFf08~g{dP`ae?K$$E6#xE(X`46Lif=KUy)U`lD>Rw})q?pQ>16 z3a_r{R^e`oknvVvr*6Iou4R&ZM|Y)VH*xerwl)NR(}beJ8jpH4)d?Jv&n`Zjp0rUd zhnnn6)f7#+kxuHx1hscodPRkd3%IM`jS!|Kji5)J*o0NIjypl*ml<5k00=~(z_c~z zs>dr&`|;{}-TavutD;sOE>@&NgMOTfXQ!X2*lfCUIGMTs6O3bbVZL@6dtFW`WGgW} zlZR>;NqKxWU2`cJbNXgy?!N{@b3qGsq$3$zdn`#@*XVmVk<>Ieedny7n&k8%Kb>ed zgEpPUr>BD(Ts)TvBCd?CIKlYUAMFIr23b4!o6L;;oE11+*mWHhqxUY3IBv;MyKVkOp^MSt=@pZbsV0^_ByobQ9lFWR%9No1qCCBojBEse`v?oe1fPt)Eh13SHUJ-YTsxD< zRZYEEYPZjFJie1-DKT;MDz0>JC_3QPC*a}YMogU9j)y^o*y-9R8*(EaEBflu@}Qk5 z`y`~yt^u`o%jKJ{)_Wutrk|X}X3L#ham3ZoAX@@kaX29u4-ECe()eT7u8;R&C2+$km;Y4H;9l2;? z%pbkA@@A(Fw%8n&M|=iXzKkKy?##BJk|A%(SVVggv#b)rKpd8Z#rfxyoU6+!C4s$| z+_TfXqEa|JW@WCvkXwzC?9(7Ixu_`@I$ZLSKAuBj$}>2^TYD8R? ztuY;ctZWS(M_jTucDA_e5s7-@vTP0g_Qj=!v4&3DnF{7?t&{_8Bi&}Z3|UE^+7-|# zskX+KQAEtUN)9 zl>7idsR9VF-?KOAg-tho{M|Jo5e?y=OH>-LIJA2bKquL1q;fWO*dfnJHH8>M+4N+iiixDpEh7!pdm-5*BMm#AQ$`w@k(ZH12HL4? zD7f+7M&3 z)0bdqYo4J^tP-$H0;_s!sDJ6Td1QIJ>ztrJsjUX6`Zz8)z3;d zRV_jILGVT+eKuE{#qKg{2Yco^ItAUUHCThG!mqa=>q)XoaW@h$KW~&k0jTDP?SiaB zbY=j@;HvpX=kOKWr$?IYBLmVD1$RZ&8q-^8p{U-kF!5Ej@Wt!yWab>JpxhDq!0huX z?y-4UJ;#&P1-bgjMeT&)&g-_ER&GmV%1nJDnpmV0AMq+{Ht<=%$!R+?>AbV0ELB1F zKznu7OqC`+haJ;fdZ={lD$F9y<&iz$$?G#6Qm!0->`2|Lo-{9%;PgTfmfjJzTgS37v`rG)6_zjBo z3uN^Z6|&b_(dV_ipH042&8hCJ3_>l5cT?mT80Jt9fx)F1)G#L_Ai^K0$*TcHnthgY z71vT+yPm9HQT!@J;gMrNKvGhRdUFN3xz~Xit4kmP2K zKu&nFzB*^EM6e=zKLWT!q*GASQS6)~apV>AzahUUl(z zS19v@D0f778b}!7xlb~vuzn96+mN5K1PEbCg3oqs1Pb~fvNO`|>JO22$Gm-0Pn5(1QU;BwmJ0| zT>F}>`)gj$FEf5em3c5rhN&kW8=3P`Mz|WrmD65#URqFny9Avq7dbgMTjPh$jr>%6 zeRHWA^K73Hx7UuyI$Oe+gUV;54XT*f|iR03VQSk{FI$odB zHzu50LY*@!P{N0u#g)#?s%*~~XJ**Bp*lT%E}jW-XE7cXd)%j9SDVeBOQFRTHBH3R zUycH7S>g3l@fxK!UCZ>fs9#F~_LKIyuf1wQl%zJ+( zyaP_MIa!^4s9HLm?`aTwiVbH{EmGN_sa~Tb_Ag>j$+axFvX1W@WaNa0^RjcA9fz@O zG`sVFui4UHMt0lTNWsl2s8J`JKgzY?+`!vCD9@O67vp!jG@NUKL9Ch>67HB46q)HnjN ze0TTY1VWn}&BlX$$o)8NnXSWqH^gJ?DQ$)Ju`6Lx&)~;ld$k{ua4)jGLX&$x!W~$-x>KLMhf5 zyk!e3L>*G1WUzc}zNAY4%#i}Ww=wv#pt1JCvcIP>m2`iSD==z@RFICbMItwP#ga81 zN-L^c_^gp~Xf0knUq6ldskb^kGd{^ht_@b?90KhP)83-^C)tvuY6Q1-u4 zGMN5~8i#)I7$*YTLHFNw8v>X`NmlwxTwD2gn(KbWf12!GW2)ZU`(JcPTjihTT@DPN zFyD{37xUM+bM-z#4oGo@{&?Zs)2q!Mg=l^*h@H>h`Z(%OjRBfDhNkUqMhT~ntrknE zl7!ErZV11tT;Klf;#}YUiKmr^oAEQoSRjJa5HEl{8R2K2ejT{#!w>!ZlihoHLOw6s zDAW}YEUsFwJSl?g{Wx^^q;TF_&J&yN=W=*#Ap`sLW4$wP?9NE;L&{Sr2k^}f`EO_( zf$|YjY-bzJ-{z%1Q{-#dqjL7^h6#4mb@zkX5hHk$etB-&D_U@W1`! z|1L_**!F z^Y=D{##!ZpHLI)FkQl6a)CfD>&bm;yv(69JCg81Fc*~q*^Ib}jpKtib1^<^Jh2W}` zDgGhdiKRB>x>LV+xgg(SvJ*g;TVZRs6}EzT@FCVZlMVq4!|7D#MPZxwK@ zCKN*cm(N5_&qPemL`oBLOP4N`&kXY~L=0uA4W&9`5pKSl^NJ(Av!}G(J5TyW>SXbv z`S!A5)4^N3xj;rw=j~^N5;=qZyiD!_N6shmC9#A3F7G42i|zC-Xd%;$-wo66j=_R{ zf5QDvC=bhzxL-Ffc_=cB5uc(E-nr&Uun$C z&S+G@l;poJ-vKUcsvp3MxkW!AP5<-BQ}m1oTcG++)lKi_>YxqN6O+NrF#nht#yj`a zIQLXK_mp_5l&42cMwLR*VcqH;e8~)~+Pxx}JH2d#a9@r4@w2{M%E|om9$AZ5U3yx`i;&-#)W4JWtS@7Zi zXDs-=53t}j#Dbg;`8^!?@zOtt1OEfZ%zU>$;l2&u`qJzpZnt^K!|?ZU;KY(q9Qd~* zRZVmsHU6+U4qQ6AVx5=uiN>RjKbYSB^B4aw=&cd$jKFhjp>j~FiJw68$G#iD!}wMD z*;o4AF+5I^&`)g)^@ZFllBOV1z}MP)KS^RtPP8j7_MQUG<9h#v!i{dlc#^z(Zgle0 z>mEA!dYzYLHOT1 z^?nXo?EMlytzic3pZrG89P#JpkP%477ZgXaL}o>G4>F{|X)JDVLW#_T;3VP#KUj4k zF`=-WWu{&pdvNTOy6zHAylx7cLqlhJsJQtpdw2sOfIr#1^TBDKtX@ixtam>0B@AybJ*f>sU0Bp-6o}yZeI>!=52G9? z6#sd#Rb}US8N$s2v6jya#vYvU$?C6^)yG!N_@tG2)btrN;ELz|bstfw(x2jdObKBT zk>t|$)6=~*-IGJ~RRSF)nuZPKTj?8-`KznLd{|F1_*`8*x$s5H^n8j|lE3k?c?zQc z!rfJV9$XLdPwXk08d2xCO`Y{djrS*PRJh%-XQ>TeRIR`&dBh2~jI~M`rwerdPt^r_ zY1ud4da*C{CUG<#MIj;o>(+_a6N-bzLCsU0lHDkeh?}NPQZWs9rVmTOhjNd!vBH2+Br_mX@-9&6 zeb9e5fZ)AI-w|k#(~9a6|D{GRA@j1rU_tL~en~-E@0T9~m@wAKRNPYg8y_GzAt7N#>~PHdknXMeO>VU6oI@NqtetoZYwV={T&WT${q9^Q z29!m-t=%M#cLeWQQQblz9=w(29l@6{y6~H*o}V+p$*X4J9l@m@s(ENx!dDndHbG8V}Uv3zKAGnowl3vStlMdoiqyaru?T>rr%v0>^?Ms ztK)T+JD>KjN#mgUWBVrf2e*gE7uk{b%@OZcMlwD^Mx9j&KK8-{MN>=_q^%+C4l8)~ z7X5VC!N-nIxFdMiW(DZtl=vON-4n(!-`Ts&iuIV36-Kn`y~Vt4Qe7)3}ZqF0TKWc=iQWol^o)p<|D@~3k%$(Az z)6SBumOh@?l>lY}#2vBVJs0Tb=8&D95eD{;n&I;Bm?3E%`tArG>E-Xc{C!74xko*V zW<@F+?g%byi$fnS{|GD5MV{xWZ|Ma*yrPGj*_k0w!ffh3LQPAb@asQ9bxXmb>Jn%2 zmo}0Nxk24PV)46+La#|EEmV8K-Q8Xb&rvj~?3?ch?oEbBVCi>9u#YTD8`PfVB&p;G z#h1y|cYnC5mTN>N{{1NA4aM{5$TD zGCG@>+XR;DrNFGPjo)4byb`(Y;8nPBd)|r|DG@O*CTrUh#g}TBC3gf*Q`t)s?)%#_ z!^t~0aPVSBqL$#9Gb(S$#4CSm72nKZ3j)}UKNehiLkY`pG`U*}jYR<7%mC>NOq84S z-OQ8Rerly}B_|Z0NIwuxq%X75#O+1Ov?bEhm_FjwEs6A3**2NOHLB@FVF{pzO`yI+ z^%{2Qwj?rDvzQkTLwt#wfLemf%`+9dal&B7$urtrpSgON6AO#g%qnaW_6b695M@|# zJFr*SC*EYJ;^B1(j3X!ZnR9?yL0IuSTrcj2oF>}j?0@1-R2o7ICdvsux+76eOxDeb za&C~Pyei=n8YHETSSR+|9CIh$3nv+zo&=X#G2gDSPwbZ`2U!QKa-(w%>Zs4d3iwEP zkXGYLtYq}zCN8p74}0{{)yHmeQ41C*sferW6L0z5a|mTZ&&-)CWDSRN)DG`ql_DYv ztaBIPRcM699%pED%vQ%-zj{j9laZc8F#$sp7bOUv%2T(V zTs>9lX|f&Il`JP_B`eZ2tbveN; zO<5W~O4?~M@rmsw-XOtk~Lc&5%B7HMtdSBSSbMt2scXofq za0px@bZgH;+{7lwMiblS4b~Q-x;rqdYdP zUc4UlBoTNUHnUMu>=SRu>53W{J%^sTn?jTYgTdOUXz((8-DYZf5fZlp{Wd%aJrHpR zmc;$7P1gc@WnGw_Vv2byZlD;{k2Ra1JjW8{L?|D7oPRS+Nw2m&b~!5-dPiH3kO*5< z(C?kxPH1{T6^hby71-P|!9*@I^k)+~*@P(q<%2rS1)X|o9Px|;{nkZyRU+1)k#Rs65vQ zW-JmQl9+Qto&Q@)7x(Bjy^u5>6oIX3~M+ zugN>SIqR0BdIBe8Hw}G*Bk$vCDQcw^Yp&4Df#NrA_>W|u8COCE_oCAQnO+n$u3iP4 zaYsot0S^3Pm5^sHI$p>;n_sK5O#xxF)v+`qt4ir$ps2TkA1^}PWVBy))1=N^LT|0iO<^0D zNr9+KWQ-`4x`Qpjy@VQ-f1z}p?;qpEtHG?F(3cOoFVR8es59GN?(ND$lZ!ruS?F`z z?#%+msy&E%S#>DZ%J3Nt`-S`5Z702QApol5p+5 z|4v}^hQku}nk?)y{z5QSrn>96KJU*D-v|b zT~1YY=7Er%xi3uAjUH$VxVgWf$8d@^gCQKVC3tJWP6uMBW&{TyoSR7V)qm5(4c%sh zKTHg{auKL_j599|`&|M}=7(@vGjO|+7WcXHXbwlCPs!|HmYEPi(iwE$I-c(aU6~Og z*yu>Jpg!DuVI2IWHWtQ8bH6+g$k}dxk90Eq>iv82Z`hn5M8Ny;0p zkv>1>y>q%oR@5;)93a9OqIr5XHxEtHx7@Yv0=Bm?N0}SXE~B}-uuKltUc`aP$oi21 z1Lr#bIvm^CPtZ*5*4Glc=!P(H{i?O5SzklT-h#|_y4{z6Yb;oE9{*;uTUs0}zuv4# z)n-B0N16bpbtdS*WQ^$T?z{b?_bUR2ZYfH*68&W4zVLqEA@Y zVXs#9Ux&ZKt39PNn34kp2a==@S8$ahHZLO|O~3cKYiU#=R^}U#aNPYQ@40mMG9@DS z#Mn<%uc0Ez*($zrjD1(?4dNhObN9tslpb-<oT#!KM{hrPmY0NvQG*l=ssSyF?;A3^X6)#-ILG#a8CdfEZHp7b6Kg6Eho+DmO$v zua7dHwD896CtcIG%r!eIh_!tuA0^RI*sxBRQ4mzC#Pr21tY?wI&djX06l|;D`{((N zH|Dhg4X}Y1|5olJZV4|Of^My*k_QvTugB`j#(G-7q~;^fU>DOc-JQsS+!63@lg6!}Jh;3T3evh0HjrHuN~#gr)mfS3kr9&8C!(EZgQ-iE zAF^<14#AVi;NVB#llg{v4C@L}?rgf3$UIiP#=r#4agY0(KA*2kSoRrK>!+EOu^9!M>i}|Pl zTcRoff$&@-#IwhJ?;z=^O`o%z&lY~(qt6s$VxyHkZa?pNvic8RuFo`G9WXIt1)duK zACy6eOALj^hr)e`OlE%R`@Z%F5J&1OQxNvEN-n<0@y1E_4YdVvHQLdc)rS03HB|TJR(^9R*Qu_z- z>c)AVdlM7ssh8r^u0uu%Jn&g$X4^uzQ`-T8ZM9v@0U&af>kKNV(Ky4BE9MpX{rQvZ zmJv?Op0cMoV=fqbV{&YGYb?++_8yCQtn?no@EGzQ13Z?P$1hl=?~LvvcP0G(ZjLVU;rTcFkkAP)AAmk2 zmJJMp+z&7L{}+H~HS>oeXrv=TqcH4aQZa)!fJyFU;{R9@f;lY%`jpwXy|v!_h6{ep z7pt@FS?F5pu}#ZFxxKJfulTEXSU=}8*Y#ekpRj&Ds~^pOy)peH`1!-?4~EVQhNNrY znO8m@4hn{5g!zI~QSM8ldj+yd>x$m1dB_=qQ->_wF~p5BqhkHDR5J$I{q9G}Y~1;f z3`UoK0}rj3affo3vCUK<0GJS(%TT2(vA)c-?&bS^y$;nCb?lY18=-9loO1v3fIsKw z8ev{XgcP~&;et1+1*;hsw~dXSvw^$yZRwD?u`E0EIAy%CFcGZ}^TuUpY9PxfMp?JD zq|m%8$y@%8Z%*IuHtic4j-l=GPk_6gf9!9E&}0mFuLq#h!)6LrQ@L>(p~DdCJdLwp z!bNa0M5E+Nnf({~Yldj7+`nbw$R|Df)~E#}1)IyvBB0J6>mD+Un%?m-r!r61KjHqv z;Lxz~>r%|LkB%b=`+eBVM*Z&A-wv5rYQrcbx$o|i@0pJ)4r=#~`P(A1wv`%Hi1)eX z?^FIR^8K3M9yPn1G9xog;`}G8dat%M^5%FBQ8|Y^ql~QcfkDsGcF%<6 zDQ&^+#xQ@+YX#}udX{(IRb<>shUct1+YS?W-FkAjX#(?0K!q+ox?B}#SLHPO52w4V z47)vMuphyK_l**MZmi@!0)Q2^%veG0!mPg}o-`xVN)qtZtayF;;gO(-x;o2ND=kG4b(>t&{RBxMgFl z!_cNZ^0_pn@aVFFu2AC9+`pCQ=}S>3em4zg+^=3k|NXVl!2;%KNIGGInDtM?aM@iNTj>@SdK! z!t8!RoTi1e?U9KmrpD%phOEqD<`A zl2&V`K}!_sj7;E+P9Rn*pjJaw)EY|6he}H&I9NEw0or=id#}Caw%mKwax1phg4f~< z$q<5y2}C}OLIMgW1V{pr5Rl~k{nkEbW`g+9-h1EodH>I!hnzWU@3q%nd+o2a_gZJ~ zn&3dwbpeSebiya`s{wYRScFA>fS)(xMaqCX02knr(P3NV_Q+Ol*!F^Gtv2vE_3g~? z*Od?f+bN^r^pAjRLk{2IRq>n>8PG(8xSwy>JG^Phv3jp;`Ab=JQ&Zx4Cr3S2g`PUE(eTLNNTWi;RxAs;^JBg`mP`VEi+dVtT{-HxttmwkMgw z@%Sm!KF0CIHOwJNAYA5Nq>|O~-7oJIf92u>v*uA_!4A@dziZfXMWGM3@m6qFk9pvzaULS^8Cv?st?k^$tNMU@fRWY} z0MyjVn;TBRdEHxz(FHr=*t)BZ1j9e{YWhw%*2q2`kC-)XM-mA2Ql89=y>HX)|3wfK z+4Jk7ubC(Lw_QYNU_igvbA;$afv#v7SMLWuhN(u#eFNXWsSs8Xe0jJC%>a9!7h>18X6x0;sl(cNO8h#K@c`lWT?ar5WaWA z7LXJ37d8~9;dR)I926#?zi(uHotfUwQ5E{-0b>c=$sr&TIk;2wGJgLDhllu;Wo#x7 zCK#wf<1pr!EJPqBVQi0a2ZPZ3BVS_%Pf7tQ=QN*u!q-QS%w;}k1f14zQwDfvnWc7H zjGy7`Vr%ch7!Ow_v*#W(zCynyjO>}RN2ArIc#++wx|O->e^!?=E=J-)9?5+J%0fLn zq0GS;pbRi4*y6(Tz0#I3yKgZvanh}(ACUW=Ae2K`*5jiNl0l1+?s@KahSQTH(~S?xjX4<1*{3<3G@h(9wBDxf|aLz_${UjMEA>EeOQOQuSDK* z<=#MKE!$Q*!j5PN>S$e>$-$kgDG>2^nIxHy%mO z>fd&n#bgmxHnXg3K>wD{r%&P&surY57WPCIBa^eZE-8ydw}ivaE?^}(IP^&BP5!FE z$Ni4^GgILgG-Cvf0CR)zG^(0^8BUqc@mI~5P<7`-EGR~BrEp)>qDlC1&hnWoiITC z=HPsArIYG7^9P5hYoT`3!IP%atbBmVzVCNrFL6i6KVQ~bFRQGVm3ZN{-f)<+#|~Qd zTq*;2sblnE?4Tzc{e)30N#HWlb{^*zd3W)nC0-;#4l?}MiS_%T^K$D{^J9$m`mqj~ zmp;ZJ1u*>>l9 zHv6IxU{?E4d3Q@>B7CslcEa;p5)4E$1c-+`?*h?hYt2`g zBLpSLU?}i#RuM8(QQ)E`-*b>9%D0`)_v}&}m|=E=k(X3NFx$HkixkKGo?R?kt8v=MCSS&KmHJpt1sElhIPq-0RrqB z$cQ8IZrJ4KC>z`*?P!cY?&MoJRs`xdRi)`3$O^t00)sxn>@p zI~2XM&wSNkbB3(+#gQ@bc)S5>zSxk74JAlt%NN;^CKKVSGz_)``bsWDc?eam12{udK={KTgvtcGI z6ReuXrh^hEuiiA7liKlP9D>aclNYC|rGq7S7lJueS$k$MDPvm#N^gJtkQ)l(kSUuC z^!j+|U5>)l*gJuGcEVJZUc@Y*tIHK>l{wvT*2>0JF;pA`#+xc`wUN24-!2xi7oP^G z+HgkXN$LqPV?@AEgN+6(CAKQplW)YCz+&M5W+_pJI`F}$;YhH86h_IXS>Xr7q5d}O zCx8WkLW-?@NT2LnV^xF_ZYL0}yJTIgC$;0t0Y1VZa2=Zp&f-gi&qZlYg5*-68VH;4U$vmmWfSMP zz|rEQw_?NJ$MED2QrQ)710=t)gChAh;MskyLM=2oir19#0ki0`^<5a=pyR!SAOpvN zV7y5C9p0gGimA3~HuPAdRz*A^B#P{X#;Yn|K@#RbV9u)M0`Ii(jEcThMaz2PJZo{+ z*X)UeP7f&ks=limC)0Ny*WWenRruckeqW(I&nP`25%uO8P`Q>+*EA**6PL_g2tH2_ z6h2*QMI^YsJD`wr4T-IWWIdVMH++%8BYQqR)7Sdjtr$y;g?Oqi0a`DS7RHkEQE)K^ z4j`Yr>=|2Jl5;f|BxcTwKR@TU;8Q0jD1zBVR4{%N45y|C@;b`qPy?9(Uqsxkx&A~S zyan)eS+2e-)a;11rA`fxut%HizQy}ecBiCV7kR;C4YJE$g5xos#tZjdp1@6^6#5Tw zNdhlTzNXymEdA%Un>c6XXnB}_%jRV5%-WoO63NQHa-Qr<(nADO>G)--=kdEoDjRL~ zNOP*Fh`tj$1L3JQ4K626$79z+{vf^9)`ru1#=21;N+5{I*WNY-8R8Czwrh;8dbr%A zTmqhmFcuRvkeHz}(6`mtA+h`dxXr#KQl9FGv~3WpG}6-p4BqZ^9EQ`SUXao@TFOxF zG=39Lrd*`ZaA01(25l2gFmZ1(y(84z6T-)~Q?&KJe^LG8-3r|;TEn4m>i4p1^^*-o z`bl_MHXIEduyyZQKMlC4AsTW=+i*Po4EPd}pk49C51JgX`%vt*<2!raK6t_xJ&2matcM1aIv#UEsxQ4( z3s13!st4fgF6>u_s!#d#KD~8&d+6Y`26kpraPRU2)Lm6(llZCwnFL?B5*mE*3K3kfms#;LJ^H?V7CV%Uup=CsY1>Az`QfrnunFPv zN1~~FWFIS?_7Kh~hYrxaVKP!1S8Rc|A6gI`q$iEl!Z+EpJRD#;?OiSVJzP#Q46*dP zKWqN~C)}8&g(pwD7faOe$mir|$S>xe>DzFCH2)bRMfjNm=&aF0cHF6kFn`uYe|Uz^ zm(}3+Yz+V9Eyf+Sho?=;>ge8)RUdw4qrwia_ypKl4OyN3ELg1Io{rCp3NcfqO}+n2 zUpj&ws+;RLh2PS8JHGu%yB5J%jFaHf? z-D>Y{SoafPWOrbw?XC|$y&gc;7Jrt3`dD5M9OSvl%#$Bl^$z)^vXDB1jdr8qrW$2z?l*9Y+VUTXU0 z^o@E$_ikZN@3?XU*q|-~8~g&PM^IhOne+){b|7tFRC>q~eUeO|lcvC$Zu z+kS|_Gd0>WNZ*8yEAZ~r!afW)C+(1FYUvg5H0|YJZ`ZEj{DnGjIzsH+ddGHy_?gR6 zhv5=1u~N0AiChc958H6lj^nXEVZugc9ynF?wq1m;Mm#6t(&o^wrZsz;n^(YM=E1p4 zsa6d?lp({m=S1r<@Q<`&1coM{cW&QjMtM1vv1@m4%fbTQ@i@;kf{zr}WX})4kWMXU zG6q$An*)Z*%BMIslwX+=>YZGXruDtqHu|reRd`z0ofOc|&>JbB@A1Z<$D4xsnTk4G z_Vzfw8*3}S4FoLS%6`E1k;^mzGtK!(6U_U#0v|uXg%R^6W~oU?*Y=&ia$b}1K_AbJ zFMQIi+Aw0J9BtU)K>{lnLL|tId^!hRg0qyS zdocWHNt2uL&p=lbtM@Oq)`w6XhCOCWxykr7cruOo<*E9v+p0s8uY%iqO8NNE|(qc^WL(h;BcR&(3`flH;pNXG_FRFF$>NB#;)ZcUUvr`x56pZc;X#A zhT)D^qpq{BuQu)79-Hi|h9;lFTS|FVZQ4=3DDrRM)fj4$Z!Jc<#6olO3kV?V1W7{*ue42k ztMLs@zi2GbLX(G)SowvuX=!{>dG9z0f|r6S4@tTW?q_d_a<}xjt6u1u@%{#J{&S( ztH=4`-Sy88s`&b*v=zXx)u!o0#J{%jN*c9k51S#LzP5XwNV^|UZQ5OC*d$xUjqC6| zvM_j>JfDuXr`4uSGvh-CZTjS^0hH&Qh30teptI~NzQxVWNc{%$^esNg_liOKgV_B=Xv$RZ%nFXae*}r_qD%*?uEHtZHrIYXqun)7`srr)_Ugq+%1q#b$XL_5%N#M z6EIHO=f z;9(!%&KPVrKl;h5t~lK9o1ebT;L537cRq_Cs1CImdrYd|#7f6M4&Fzv1~2Z@w`6aG z&T+}j?xFUZ-40K*uMRVbE9f4IfwAIU$qI;Whb_wYp<%zBVlXoVVO&-ZsSV?f7Ma8~ zc-Y9@RMAQ7KI_9I>?(A?*X_HQPX;|a0{!zm1Ksql)W!Is6U)TD!Rpv6Tr%+Lh{5=P zY8js3inOp+1i6FN8aqgjHf->)8Fp@7vFT{&AGX07Lh$F5J$ow?8~`^YdN4T?T&Zpw zj7H-vV<@oF{*U{P+q(Lj_$=BIO8I`aQUp9#>COr$R;5%x|of+_3H>p zU>VPDun=CO6RmM_lLcD|Mlk_S6Ed%&#+PeVX+I<@;f%+T0^iJ|>UtbM&p=gyJ*VU6 zF1(51F*p&M0M%MI4)(@^_;zR&;R#;cSLRWd+OFqRnYdbbUNvmIFkC_yI1|b7*e1jl zgy+L1cjYlSvloOXlw%6UH9wwh#=nA1DCQR@hw^%sw3qKhOcI&niU17q5fsCAidY)R(L2<+8^=36?PK>-FpIAFi&Sd$LkVEUn$p#Y~o^7*Q*E5YDgp$&H z)cNT&7no_J%4W4b#$-eKC;P+aCF3H0R_hH+w&TB$n{PdZPCe^q_y{!^p4}IGe0K$$ zM&1i%ZEM4CJu9R$kd1W;TsfJfZj(M3Lnn?L$=((SFZ?!i z;5sDJcLZ_L4z3Z69-ZiaBGuu)1UPz!yV7ruEK7BG?d9&lRI&T&Dz?LDg`PbHEZw9* zmp(~x263;X%-(^#`m$T`z1k>@##?ZRl_!D>Fy3e8gI{WuC;PVgv-bGXcP~C(iG+P` zW*v{V+2uf`JzDpkVAc*T9a!nRc!pKq=3rh!MFbPgH}U>o{H-Pe%qkeZG9sjjGu=0N_ zf5{x{LVW3_GJqE*oF^0?ElvztRo9QmuNqJ_AiwHXCl*Ow8Y%gw(YzMSuevVN2Mc)B z_fmN(2w4PDq1aM^Gz)u!xBIHT$J4G{z#R)*JHm>9bT^Ui!(XvhyYZe!O6F*_(I4OK z$_>;;zJ2)*7eD~z_qZMaatV;jiTnuu76umgP)Bw=#(PR-W4r_lR4yh<>R-fT7nZ~& z5yap;o=QjyFUmC&FQ_9GqKvqb+RM~TSkHu9gqB1=45=elYMQJhb+dX=$3#hL>`Rnv zX2NvP2xN1iy&*%tLsMASLi~EPStefsYwqzU3IV1R3IOB~NXk zY^gjzl5n~#0t7pC2?IkL@oAS8akq*n|5U_%D&mn(MHH)ug=a<3c#K-2hbOZRBDZFu z)NULhVwk_gU8!EIGm_>jw^z}$`lx+yE7h=)FR+ciOH^$fJ>Vly<07ebf)Ve#%R8sLilDP;Ak2} zLJ+W7Wg=`LiLJyyMhasH6T&Q8x@|b$4iV!`Vjz`;VdgO$+bO3Q{|@8dw&E{fx)xFx z$~TyLAw?;=-?3=5dP5=rHx~V z@IDaGiu)U8ufxPdTzd>y%882fl<>R zBa*-%U)2DUa>0>Q?S^0s$Fuz~FlvZFe-Fh6F**_$U3isjVsQ+Xo)u-5o-G1xSryJ| zHmGX01rVid(O6guad~_~qTCPL8pj~fh6K?@My$3(X37qUr23QEpjrE4kopk#AkBE= z5P`9+s`j;wnUbw|-3tPQY$8CIs&Q<=i?ngdLfQr!51WQ`fp`;_)+b#+THi5dfV7D| z!a@ms9_2*xmUu9xiNKJ6^#wNr$NYM>0%?wH4_0#oMm0!+ib9|yI~dO*A48}q8)>a( z!(xKuhJ|*m>U<2_&0!=0Ipk?oxya$92wz$jd>v5bU@KAQf}$#2P*?@x8&MmlBGT9; zRE9GjT=edkA0wG)5{{$YLXmy}lv<)Bn)#<%7f{GOnD`yN=D_FZjgOhV=J?3CLblwX0M_W*ak`MDR*YxG_ zbsJwl%*!2>J3ZB(JJs&bot~kO)@P*p^=Wp$J|p9ApmB>gce)=$G!Vh%9A15fA5@?c z%n1GsRG#Mik-MCeoIm&H+}rf$E~h0$f2NYp6%wN_l^A^mW6niA_vr{?a+lZO2|AnQ zXZc(B(VvO%xk6&}r4pmBU<{>dP92V3Ya;74Cn?04Qxc?lj8ctKpaw-7r6^BOlo39T zh-f2uxwklTr;mU{G9i(%I2lKu0bi_XnUKg>^896~6y{FH3DQ$%fy(Xr%tC#}&7cB@ zt{J!g4OE_9i4x{6e+o~?<5~Gx{v3YvXBeZekQjZb#ONy+b1v$+PgC*9UEYW%=+IvW z_47V{^k*2OuaFphsl@0j7(=<56EWV*soT+OX$X)xQ!=+xeC(!NH}la+xvGZRM8Vea zaRPF6{5Mc} zdKGxjUA`Jm$m4nWS-u88`ZKHeTp=;~Qi;)5Fy>s;bDwTTOz!dz@dO=1ewH7`kN!+E zpDQFrUn(*B3dT^bais_1bjoZ60ejVpsd+)9hnQs@MY@ZR2Fg{nQW2>LcN^rIlRJF^ zBr*{anWWFm(PvD6L?%KalStspQYp!uUJfdcfXYIBW{Exniu$xiKxN_IK;`MRC}HmM zSMY>9*2&NE*YTr2!x(*q#OO;UMqk00b5YNIx&tw}%e(Ldos;sj{1g1>&oD+`Au;+= ziP6Q($TM)8A;Q4o))f3`i#MsCTK-r|jnL1!VD6En*;Xu{@#Zaqhw3SO(uU2Gy5p<) zf(;)4iW=q?_+{dW^%9=Yr18Xe{dl%ul`{g&B(!_SIByE32h5rC4gBFq#L_NIlBGMw zV1k6=)xHO@I5lzpe*Armh>z15I~p<2*-Dyzg_j*b;q*=wLI_~uFWtdOAM;$vw&{3* z)=K}s1QpCvr8_vU$IR~5PJQm&Y=BCfK+8GVsQY|2P!7e0RhT%Her&LHehwS|=Sf2g zwWgZYn=FxbEDRHsqom?ky5kJg0Y|SitzKzbz0$OL*|e-#N=8$DNs9h&PEykGW%_T* z%N>gDnuG4@%AM-e9q6ra(VXGJg$Q4og3NPJA*N5ro$6Ne9CU~o6LffUe_1Z3V?39+ z(vBfWpMmjQ=1Mz;pmWi{7zO;xkmuOksTmlffPWeC9IH>uu)46d{{X|T4d+7z;1{l& zTM<~qs=Wzz-G^tCoi7_M_$m&d@aLTBe8ud;K4?|0VP2SeMP}!2dtJawGiw+Fskurs{rMts8gAqpU?ix=I!C+Ih zoYRRGZMiToaQP~{;+wfy_#h&nI}pbq(Tw9z8Nj)G2;H0rjWD$8>0J`C4>V*_2Ohq< zotX(-PBJEiX5ykTXwhaMPA%k@-uMVR)r~CgGXskPRny^fPj04{1a#R#hUq*|CHk8} z`gx@gf=d;GpT)ZwywVJI$qsC+SHNK9AY!}y1dfaE_C-Iiw z?c&3KqfGZ0M=qxjrq43@E<|~-^Q}ZU9VL^}6e-~)m9FaPWx~9Otx}kei%k_vDn%8` z65F6;sb!i{gM6lsH}i2NOKs{z6C;PAkk?er4Dd3*lGJ6$JRzw)XdUK^EfF{bXMG5*XdMOtZ(@{u7=7aOOr@Cn>&h)*$ANDiyrt5hNRSsAc;u(4|L zC3iX8FSLsB!G}p`pRq%skPxR-V=7Vj8H^BEXT|POmqCn|Z19nYIyHv;{)3gr(bv9B z0%>L*@NH8CJ!F(xRF1xOH&OPbCg*Xp6}v|fsENn2pjRbgK{&hufH0-aiVLr~uaW8^?BeIpV&fPX9vTs5D}@q z(1*4_^ux?RI_`AhIjX6F^cW()g2)W@inCRkaq7yE0h+|%)RpF;^7?2x&zcED_l*js z!$vzDPHV6Mgqm>zOLJy0Jwo>z?9`vc*FI^%a4IaFQ_n}#`H%@Xy=9ayv>)HO?H^u{ zz6(*K5tSA?I8KWm9I2&aoKGq*yW|j6^s%A+EDcb21k6Py2crwp;T(?xXWf;9x&abQbe7=j0B-C0TRh|o9kSX@Rh zaSczl6o4+eJRd{=7j2!4nQ9jT8w10Th5$*|1csSWAb~UHhar{3;o{?Jjd8cwg`4g< zE-Q0<22M`QqyR|BOiBp0YBQNcn_Gmizq6|)0Y&vMDFz3sGS8O^6 z%b^~Feg!=yu_RfUXn)=>*Z!)822scG6mX)had5yxn7I@en*K1F%Z>zbu6MN1QJ5?? z(;3-TC%1;6+?(YLh-zGWAW`?C{l(Is^je;67)diYm%2B zp~AK#2P18DU>NQ&nT9^5NUIPazE4C3Gd&Q=4}y;}7+p`W5iFcJR-Z=j$YuDR2WP%$ zw%viOhCtT#0^9aL*1H9^j{;e^X}eo{;K=ZTa7H$c-U#r-3fpcitG>VjS_1@d@H%69 z0$JNo*%)^u0EalK01QG3yqS06ud#k12@Fzc1BDlA6cdr1s%T zZXa6JC_0XyDWIuMmu3Ky{BQ6DP%vD0G*DZOnLmZ~&#NtXP;u7Apbe)yzomd^fvp)X zu>^3mJdSlPP%(ilT(J!Q!!Cukso;SRhqH5p+H4R1IZz8zHm1V7Z3T|tetZ#8;K<*P z%k0vOc1{61jm~ooTAu2F)(k&Br)*Plc0~Y!In+KX&XF|M$#N$0Bs|1| z?Ft@g!SIV={6!Xw&qfJfYQb2_5WYOf8LMT`;+BZy)Ua$uh8j}_SeQc;e4YglRqzEC zjHbXb=t2v|L__!z3&yF6guk(D<^}5Q+q?>(p=EIkZ`Hu*Udv_-=T$<{LxZg(BNXhg z;E@U*ZNZ}yJkEkgEBNacj3JElu8;#(T2dFca2rQ*8iN4~F{u{jg$mBFU^u-oeuM>& zRq$8~h8GLt-4=YYhA;D?M=$d(dw5);JJ{Y&ZuLp_SZjP-T z3aB*ECKByND|DraR$>LLQfQ-*@txk9DcKp@GirPbO12GPvRf^zwZJ-i+;gniVhcLf zL~R9*HJfdLhE^?il$MKu5qmDdTnvoiSKKbHf@&jP2#n(?yg%N=*jIpqY8nn{4XuF& z1L>fW;(Ofv`1=rlAK3!k?*+P>0^RQix&D}5cOlBx-d5uq)^w;Qx}ZH) zlhHNN}X&(!#AO{Z$2_qXo^W_x>$Z%%u! z88)YVZ;da#y&E-q8M0XfcX&yT_JrgmHNM&L=tGr@K$S*@K_|!U*1WOKr)ah ziDfm8{2jiIsqtl>ZiJ{B-^XL#K0J!I#TGQ~j`cLAg%BU>IUR*K=e>zXaWxvxF8sBk z$HJJ3tYe*xb+IvB9q}%V%o~r!{;?}6C=s^8*2XvSH!`2pT2F6}wa(ieYb~yez0lQw zTsGo&JCL7~jj32mV-x6gO6q2$Mzu8V0KGQ_rGxZ#H-3P>OFxDeeQfvXk7B#$wZ(Q9 zH-XN6u=5svKLYX^H=9+gq45al9hcO&O%?QJHy()9HSWdVm476Oy3^gUx_PH#bwc7e zus@dME=k^X`9(w`y&Op%Xgq-&+7W^ibBGdc?2G5X({*a1H$nm}T^D`0SrR^nFYXzd z2chOQrhOOWP+_N|vAlV2#?~WKmc4|O#&p#R*-9bXHTidn!0Yan40xgIG}71BM6QoQ0mX(jw#8lsz-Es|wOs&d zWu0hcj3Gm49{UB5_EOh)TmZ6z_Miy32;?l2TH%Bt^Cpl1h=hO-VflpVuU5 zQc|oTucR1eN}8;z+KWrk5}ZiUl9fo&l9fo&l9fo&k`>vpWHo^KQ#>vPTCyr6U{zEl zfgV%NWJPK%A;kyLd?`f^h(U~Okm6WS{Q@akl2TH%BqdUew<#q>Q&O|wDl4)f`yB3+ zq(qt+v69+kyq${_vB%SxnZ z$*RzjRlF@)Eu5@K3r|Qf(1;NeQskTv#NZAoGQZE4Vq8*6il(H#MLyYzlr$|#i8SMq zBHM`(L8KU$6d6~Ninm3KxoSip>uN-ZOVJXXNYRwli*PX)S&1|)S&1~Qb|q4@WJPx3 zqk%}#k`%ApL(}CKset+mg~Ohvw6SIygs{AMO=;&Tlx<@$ ze_^g{8rce;bmX&hOzh>dwVxGn~*?4!yqD_-y3a8;hDPL#PkQxN^XZMc^ zB~hYZ2ufBl^rEbJZ-d;(-w-AHH0BSC`>||HN!i5!vb)|x<7wQ62Pcl=eX*W-8&SlO zi-f}cryFBq8k;c<%&WnpxDiUhz8cI$t$1`%&1!5x(B{~%u44?|8hfy~E7m#hEfnz5 zNkU@w=>xI!#!k$~^S0tqd;n8lh8yu153o{j#yY!({1%?-0=Y2zy%oD3#Lxw|g7O46 zNPhyYrm;H~C_aM;{0OS#$`&L*`@)QFYdnLOdF^-+DjJR0WVMynR{MwUu^xnzL>8u z?Jnkysl67t_hG`H#|2AqE#_TVJ!5%YY1`1A0WA@m97@69?5>?LU)SWFh{7D+)u-n8 zVR&h2+zZ*_B@5chFS>C4JKBrH3*-cU?ea#BYvm2(8h4_|NHnJLAjFCn54df`Y~9-R ziKJ-lQZ_--he%9-d9-#-atosl7L2d)n;1-78n z1ib)n2KE>XXM~FcE<};H0LE&Qx(888!2F?DD@P7WtflFquj7LX)MnX^F%p&DbY+?u zvVDxu!{~Ax-)VZH7$!^HRID_z0|-^u79;d^@qETW+l|oI#jgsJ z&U4}pNLBVUI@oh^N-cudh!Zsjz7K${JkwK# zwpu)~sq}vc5P1hn4G`dyB5na1=4}RhLA33jlD9GD;v)nMz|f|N zO+}{%KoQsxfH5fqIGHl0(gGOcBEXrAF{>Y_vvH;|Y919~oT}xEcXl<X4l%P#m@hNR}M$ z2#5kjZJB^%&4H>8^Fg!`8z=#g#W=;6dX7Cc(R7fNjPmdT9GN==Wj1hST4`+LB-aey z-UnakcPtS{cHIIvc`!!Az#*G}@HGrGL@QYFG7VW-4`3w$jA+cgo5rPRg^e?vPavoy#LQ2gtCK@Lh;V_D!fGCofd=L<(I9ZWWCCRc>1WE{~>BdCc zje^9fsflN`>=a1h**t_aQHoTFICmw53Ue$2LnUY8N+_9QsIU;vgr%aiQb>-{;*^y` zARfvogrSlnLxnDCP(p=vT;8Zg30-SZDB%m+O=}sZ8qO)0YOYwPrZ7x3jKah+1R+4d zv`4y_8bA4qLczqshK7mo6heT4iI8mu6Je`~0!A5e#1HBrpj6Poxd zW(b&JOT*OoTa^g2r%Zb+ZG763YHmuKZzf9c`va9IQKZ`$(1}^EvzWV57*f@+aM4YS zXgQ7DEvV70#hez^GD@&S?44zuHi4WJ7Pf2JUqzZ8*+6J1#-Kc}F4iz_Z>*vCAkfU( zZfU&SPSOph4+G(&SWEE-hgGaUOc zJN_(!G1XHK)aaL?We>wV^^4*ND40q#mN18jnSC15g=gMIWL3Ncgy73cLd5Hk7t$xh zU1liVBOg-q5zX4mF5Vn_VO}KmLfN(psot4H$_r)hj#1k$XookdkcKhTA@;F- zUyBedm&)pqj4NoUTay%0BSPk&$zvh;4HdEzgv{1zS0UR$hv04j{~ZXqk%Mm2l`Sfy9?7zxxMAevD4Pw{jS9$ngwg7n(q2$_Nt{2ULXt}N4-C0~ zUIT&JeAy;l zp|kOAG^0*5r#egy=0sBKS!) zfIeuBNJ@+WK+-rL#MD?K*x4w40MJ@RTMdUwHw$2JjHqDvNDB6t#*csv&vX@xIaq>a z%7m)gp@PA-1aq-hhhQlL7N=={g8ZnvNQtjP*xR1`{T55C1JV%nC*-55qOlybyG#ffmS%OOAtF<7OH$ss@$jewWH7-)Y4ggx#H z5vXKLI<&vmu90_kMBN4~V1R{!~1_7E0 zkfV5uqHKDACY&(yp02dbe?aC8bXu7c5KfpmfkG>D0wn~PIf0b~q;&vTOCTEq4rA&G zh&TWUC)|kRIz|SmVc5{>QM;E0r;}fT3(PiUqU^x1*EF(3_`;NjVxOeub*G84oyu7= zm9rlxl${rXp9nRtpot>NnL*|38)gU;El=ZS&WV|32(+_w?5;sO8)b%wc2>{nF4YXd zjzeczM=GkM1KeWT?gS0i4>nEe|MP5)Hz1^6q5jH%I_z%N6~{2G%-cnsLzDwieXty$ zo)XO}?!xK_dyl?h#hY++47`ed*V5M)JGE%VDlXDaEt*z{$8Th1dTP|N0Mz`@#SJ{0HuO5uNdK{0F8W{=erxu!>#E z^dCqgwa@b(ke=EC4Z-psh#)mp;)MTzbXn7X;Lk6B-skxbG&A#L|A7vnm*hWCN)n&t zKae8IZr9}>JWnY=QFbDL>VCq1z(tf~|A8DqG5rTttAuKMi+dO1KhTR%8X5Zg4-}G; z|GKkzLp*OiLor57>7xc|T^hEnh7?>}&#aP@ci z4@5+!4?+i>Lw(Yeu(B2^c?Y06F|JwSZiFgHNF;^T!A5~7NVWdLlDhamAaLSPD6%e+ z&0-c8s>wP02UdYHCK=^F5Fx<5#FwEdNqeEDM1bswrbHlx)TkU0ATy#iVcmN4-;p~5 zix@~r5g;p)xd#*TDga#MVK(pYKX3^+XNPLw%JJM@7?z|e!HimjvZN7#EJ-OTT9Ohe z#wFD(m|UqsQrD5!gfyw(5^|BhxUE;DC`(dqZ&$J)*wL0!tpu^StX2`QWECMmt&)YW zCt%5n>{zne_;04HQb^U3l}OX7s3OMnm~s{=GV_EKAN;ic!26*31yZymRS9O);yNzH zxTMxfoGGbHa!MSsui6x$W`U^h5+dVj@lHsjh|y=8#3?DV_To~s8rez^iOXsg0ZUd9 z0#wJ*uAW|P%Br4$maNE5yito3Em?^at%?#US}k0p$jlQ`3{WfW??1r&K3|G)NmYW0 zc<(#C&D{RbogO(uW8|A3HCmYutk{0AiX|2zKy$^P8_0|)t zY;5rR0=&XJg4jo`*diL$cSx)Yuf|No3tCaIo*}!S8=NMK%Y+7mh*~X z4C_k!s)e8?hcC3>Mp8J3nD*PX3Q+c2PAD}#%YNI;DB5pjHd%m;Xcx5_+HYkR5m#`f zJ1G0@mghJS{Jr+u6cVS1>r9zf~b8kiNUIL%WP(mpM+GHg|vQa`@%YLg!TA`NxR#=F$ zY}s!`j+7QHwN6suR-=S=Lce6Fqk%0P6rLP^+fvrUwQ{dTZIN!V{s{G-Y!VZZG%Lu7|g?6><6 zf~-H!e*2P{D8cWqRU%MnLD?{RJ;#7#`>k}{*2ar|#fY=*w~-V`g;riAV9S2X9?m7y z6-@Kl_FJiK*l#tWoo&B$Qs83cw^k>^|rIum8Z6o5@_FJhCex_cERbuRm@ zif9~p88JU?zm1R(wuWK_S+w+kRbl3YZ-5A4;-ne0JKn~bNEv9jMvOL@@rG&EhF0M#oZ%7Z{T>(YKJg@CG% z{|}H~C+#G}qkVxkq!a>Y+ixX_Wxs8v5b`kmE(ZTjqO&jrTm)#DB2Y+xqbY$R0@Tt7 zka?Mf39KSOwF>szKRpGG7#Lw-odm)+5tS>g~* zEOF#84OJo*wvd46xLrfO#>^R5!a!CAft3W5I7~rV_FLgZWo|Yp%YIwQG-umyg*{6g zA}C87PNG}la1k)Y@zgI(aR{51IEoZUN*uzTWxrj;7;YuS1*IwmhG)iDvJp-!afqNS zaR?`-I7TybN+5@6EpZg8%$4*?2w37+Nx-U$wFIno8X=%EHw7gIOB%XU5YvNAlw|v@ zuxHtCn~6aaDi#8d|3bu}1{&$Vw8e_REc>mnXW4H>P~4&+ny_ctZ$(fvp^7n=?2#iX zO7#RN8yZ)I6K0O3f}NQ&Py{A}2LLD0E&FW_0qHD=DI~zmnWlt*WxriXz_Q=2B_QGe znh46W-!?PmZ2RptB<^p&U5gM{LlgGf-drX2|E+Z=EKNsApnv?p+}q%O^Erls?0Nzsr96)epsfJA-!H!T7tA zHd}ldernNt8f@>ym+6b%sALm5wdmm-nrv4R_{pMaUfOHL#0q<@m{?)2rHPexTI*VO z+-*>gTPbie4X&BVxO6;~rs zuZlP7Z?&$!Fs=k%g3vV}RB@gbswq^L#~25InYd+h12e$!P{y6NSp z#%gkKapvvdq;>RNXJ4UMz%zB;;b9m$F6%hW>&S{gA=MNN%+AO>sBbmi`k^i5ue_%L z_fljB^cFc7i$`wZcKHIm1GjJ*>w%)j;)Q&1cE5XiK&oPxj!PE%-{M;XEZpLYNt>RiuE33u`dLw!4{jyFm4lgfRXj?0^O;Al4Otjn8=wD3aK{Q;vIL$2?2 zv*s&;;bON7og$yTqX0dFfB86EyY?YTFo<7l9kp#D)n z-^Hf#2NKn5;%(*8nYdxcg;cya^+5vUo_9gt4It4Var0?W#RY!34D!CDGs}#h0gYEk zSx5ARK8$FK4|DLfE~ieuRtneHAqL0JtykIX#eI3(jBIof83UwkA2@ah3{!LPYlGRR3F}gk|y2g<4UB!30axa1kmhrO0Pl-mD{|#aerw*|47b= z+hTkjk`IJ&fKjNr83LBOyITwNlLdOG@$8*vb@xo%q!y}i#RXGs+=J}bGB8>jB??eiSLwP=$$B8~e|FMGC!)s6#T_80>L65x^mBXcgH@(UC+>0Xu8>-dKl zdi3HN(!A{l)!)ZZha6l3DO=pW)vMurzEy}b{;c)(nWIPfP)R~0417PpJ#!|`EB8nq z7+FxtJ;q~50*-Jh(?R1ORn#UetnBD$mt?xPuooB8tr6Xy2U;*IIXCY;<114cr926N ziUazLa$uXsT3&x63(#5y*?u<9wlBeRN`IcWPD}9o(cMy}A{i;N{-F1R}bX zx5AF5gTvwOs5Wwd$Lsgv-SZ^`RNggi9EJYi@1#?G4!wp`zMsfE)_V&f& z<|3{eS0Ji}u?+R2CSHp{<+9|M8PUSGyST0^;T+^}PRG^gDUNK-`I=X%9d*3P_&Fv(GP&$udixyX2Rg>z;Pg3$P3L1!QgKzb z73ZVrk|!zjH8;srjrRK`+1xbH2KFW-IL-T8IDH?32|3;K>%W=PUwrS&b2~BE6IKyhM@!oTvmVq={M&5PfSrb5VOZ_<_ zts&nU+DzRp(Zp7vilN?#X1Bxm70QMN#~G{0$7|~`o#6>lobPbngqD(>;l=~j3JquC zQc5BzOn0U-m?SF<$i_hE8;})_kTvcD>3*$@IafHW0n$80)@Ue%hH@1~4s+`E0?V4f zliuHYD?VCdAjPn39C->>5Cb8wV-ZjLVbY>p-cKgH3r*T*@!?Hn8x8U}8x z=YaWThRNuR_%Qi0k|ot>|6wv6c&%=zb*)$MaWxB9cN4U!`g`$uuO?{7X2{3u3D$Y%Vg10HI7PMt}B5?o>i0aAB9K6we|9T3O zVlX`Ucx^C^pESeG)gBUBdg}6LfMh6}fhypHo6~*D5 zg*a|>JkKG`;Sr=0mgc@g{2a$IiFS@B9 z`#{_I?7Gil-~xO@IQZSmao97~OPLSf63pu?z0nwgDD;!`V0h$I9RAxj7%#K$#SO@Q zw;g9zrUp4*X*kCcM_88Q^i!;xzzL2E>?qJ%f8_Gr^!-9#-!>{^$n;WA1f?_=o5-ce z@%Um^O{gYWhb^$-Ht1psr=2ui(3y=*7%Hw0FTB#WXpulP=hP5ZBiE)A#zrv+bcC$HQsBD#enM$7q&b zte?i=x7R%}_WWg;xKT3NJ}49&n(+5(YRyoAPPHZtCpSm@KYT^~-3;UwY|?X};( zsQzi)`*0ZE08b>Cx6$!fDr%C4gnDtYm?M~X%CYnqusxAb-?fgV2l1+ZtRM61J8(VY zF>Nv02gBb%I2zboU#-pk9p5J30JnY;MfwJcblnrFcHgq81EENN@&+6DYs}pf3FPf` zEa4^BdYf4Q-?Fiza9v>Z$e>UyZWY`Z>dP$M9mJa4R$o3}ldCHGwCtTe=_b4buql|g zw|wS|u=`@a{%+_aNa6M&DWEdK7d$b}$jxA0PuY1mIR`nmK^SNu*c~vhv7~;Tw2;Wm*S8kvwLH2K=iuU=P5lg2 zq@@}>PXxUt>1$8VZaOh=EU%9)8e`w-Gg%}Z3 z^W`zS2aSIPRbH!{z6&g6Cb9GuSu%%?eB6X=T{c>oeA#FU2h`BXzJS9Ieg_3~oW=Wi zM05Ce1@t>`Pbbe-2Mz2#T+7=Wac6g#)A;@L9=Ll8bBI(VjaNf>~Wuap;o~f_Z zGYhOs2B}hhgFl*?u_SvX)MJ9b-0c#pjunkY}N{|vBs7MAl#+tV%)m9f)P&p zPRl0#`&u-Nn$pwLgzYcU++Q`^a8od;Mh&RnT1AXA(#o(OiYrSwz$t$ ziCifG)Dk92Z2mR)YEfpkjZU07o`&0Y%dV;&%&dG>_Grrhxqek^FxE3j!x^mG5Am+% zp;}*53-w%Ead`c;#MRTQae(RhCf2df#KIx91GMdiHW?LgE$@E4)^XiteY0nquRBK{ zoGfTdrH3*udsNA5Tjc>HgTS;x$FON${N>=!g+J^`abUOuT*=myTeht<>|Nm$)^~#X zCfT=a4d{l^h9NkJ{#6N7S+;Wad?O#r3Jlj(75Mo+zH>=+UoE79Zm&;TR1n)Q<9kFg zDZifD`FNuk_iiLc-hAdZo)zi!t!L{)O=2UAiUP{A%h-Q{haY2bZ8!W#$SI(y!fE8A z=hddf8%C1ape!pD7bLAFe!!6vdrXynYqt|x+~UJ4k(;%v*I!~>*`j0o6J%bwaNyjO zat8*SiY{3swEhz!<&8tNYSIRmo*vkRzX_?>5>##(own;Ghu%-2z;6j@rQx@fw9>t}4bs{!nJj5Tj_yS)&5W zQE`E+I#^h?ZzYL`fXRIj7iSanjj^nN5oS+<4!i@c*EsnJM4v1L+yD$Iv|+3KWMBCx zBZ@wpR0rrmuG_Fpg@eoEiYb(|y$1X=shE~;g?2SodL}iojRGSRQTb7RF zxp@k7xzn%<;~Z#O!+7ATnE|B>j|Uv5*RlpnsQ_R$_e6OFaK4rs>~h;r;g%`TEdgh^$~70g5pYVE+A&9 znJ}m~a5wcBs8!)W0x&CwyW^fbB4j@DDm(YALXFdFr@+L36#?jm00n zPeoEs#8;K^bDy5ElXHVu$sYB)gN77Jce?jB$I%Y4rf$TtGs zL>_@E|KN!BRVi-sU~M38B5=GEz>Me^@KekEd=b#e^#Rdeg!C>on><%@5sYQ1i`K85;XbmZ zn-|L7_X(&3>ge^s7>FiD(BG;i)NA^L?YwS0bjn`QPSxG^R{77+k5UW5mo4`kF>BS6 zQB96RCxOJqk98+15i3aCOpviD9!2b6tyfDzheE&Cn3#la);UQXg+*pSAk!KPg)Ve=IGlH4@6PY8bY$P|UQ6wAC3nhJK|YmOoG$T0 zJZt^vC9gniEAji3AKhaW+U#mSLY_zTvm7q!{RmnIXc?hqKhnPL2az?9@ssQeyEI(D zZlFf`5b_*DFwAuNZCj(8277whpX}jDL!-6ne$PQ(g9qj^ZQaq@A%4$01YG{`h|#|2 z#tXue21aWKd)mVz(D@d+PewN)$wm@%`okGl`=ZeyKF{v_uzQ#lY11KuM1BY9^I7g=?zc1 z80>p?lFMBzV6&|kiTs}39B9Cl-4~veA!Pw~UoX&GP!yJAA^aP5GU+?v)X~uhQtTl5 z$^39R7NU?>zGu_4u=`sD`XLlC-Jg56J9A3-vI$a-so{l}0;v|MHluyHA(QhVlfnL6 zd~T5+P91|HAPL66Y2nN4C@`e;_O$TrX-HIkLB40F&(p+hiOn2xjX-GQ0FKyrIW@@f zSU&0x1*!C-j@N?Em3|$K0i)zoDESf$g{yg``YV1!JBzi zs!LYQJB=gLd*jnfIZp21YYd$s8>J3&-?Zy;v3d+w6BtRvl@6|tzkw}DXaX%5x}V5M zT^3A}QJIUS_I#{p&#$~E<>V9j<1)N$1M%Ztv@CxdcVJh^SVQAIr?U+{>}$%kPsR&Z z_4YlHpEAKF?4Rc!!XXQ~_PC1Uj#qI9Q^B}U%cAsXU!CK%7Q5rIx#%dS@_NuXHkme; z{4pn5XK*;IYfZt=Yv4GgP4>#EA~NFu#$#R!2aX3V%NVEx=&I;|W`ADgS5H1MMX@`D z>`obHZJ_TlenZn5SCPHO0J1sI;xhGoi^(ow@&=1ZQ98(J>9Dwp9TYCdz)D*~X4EEt zXIty7VAfo-xe#tzjx?~Z_9sOpg(7D(Kiiw6Zr|XEJdrWbw=4sjHXJ!o4qxTmaf>MB z=RrqlZp!v`3wE?kMe|#*6UA9tKZ$}9mY5%{LdtF>1kQDX-d*DsQFq1E2HkRx@iR#Rf@Ydj9~W3heiP?!v-))ET;J--=!PE8LpeMxmSP(b_h;q z{gu+z9M`pR&k&}Mh3-O0amct1+-u?Qy8@vatVyxiNp%{zLxnnlEl;ELTE;JQmv9r| z-@XGtQNUtW_Ms0MDMDePJ4cK<#xID2EK9!{2v52qU^{|cDC`~t!_bqJekOWZi?NJ| zEUHM-m@OdmA9E?Czh~USAhlm=H|__pfqN=kR9yxjv2g>tRS6<0ppB!!QN&3@gy98l zVX|*VN7?X%e~Hn80@8M1j0av~p2srd5wY374aHiPr_iYqSz@dz!Qj}hrj~*LW?zW$ zZU}=Cm$lI`S??ROuVOvQDp5Z~$v$!omZ7HWMfrDZb!=B6mN`^TDB47e*ZhAsB}>IaI9!{yXpsGG?NaOJ(7DMck){cG@-;Y0ioJ zP2j?Uz}y^C~ zde4vVxpzTvfu}=T7n*x|jdGpH(Je`5OIE9uFNj>1o34 zPa4#MVAZ6HgC5+g6mxpGXks#ouY%-MHc4ah z;={aXCa7bj1Pu@KCwFb2U^)|HCFal$;)K`8Id3$jz5`CQaG8rLxn1_e8Cr)>{9*{? zWtsm)2)CCuWAZ>K?fvT{NPUc8ssN8orfvFlIbnhGVe@5V9KHwpjjo^K6$7UWFpE1A zsN8uh5`yAD@JGRJH?9R?iw#mCj64JSVUw9}AwWX`Rw-tvJ${ox;5v+KEDkt&V{YZ@ z!MN*oXe3_9j7USVyNRVvm=_$eW7RE$$e46?(Pw#Rrf zTVY4y*v6mGDk{syRcckZ2RU3m$i;cqZj8Q0C0-?%?cAWW8zp2@Ehn}>+}JF;5DJG2 zdou8m9f3PMA+8g~BJ?!u=_F*2ilgi+M*3w_l@*g*bK|}xc9!@S2UZZ35K1CFl$}Sk z$4@wxyoO*gdi6S-Hit9dkM;+k$kk+Xk0t z5E=|ZPx!~We9KZVhO0s#?*pt4k)cZ|qV~(#WezIs^7Li>6h;)NVz`VmmEbiljA~;z z5+w~dPy+jjp#+u@$C4JLiEqLC98PpBr;_;T{+}2%(0vb~ z9M__|Vu2G(b@{%XF*v?h^TP6imV>Cz5z{6thpN5ouYpkSwGThf9rtWn9U+D!QN54W z@`V2~WRQBrvea*CeX&5^(F%p8r1jo6lce=FfJC{eepU>FwEC-_#zA1wKIa0H)$8nh zT6Q@Rdh0C^x|$<=^bPo5ZdZ1c@rwoaCEC>+=ntRMuGV50inpuZ0q7^G&uCZw1-$>a z+f_H(^8a$XdJ0*5e!F@sJ4sp<0QyPmob74_us*k4^$J3=wr{mN8N<-h@JT>?pEi*p zI;BenBh1h{;G}`Rx1H>Ts-0@+6o-ix;}7G7%?$OK1PnZ`iVSPxiHeVL1PJ|VlOG^h zZcmuC`nx^3(BEbJhkF$ByfdCB^$eO|^xbeR3Sh^({L?u*teh=-U}uo!$ylU=?i0-vV;hrM?Jud_Pud?g`SCNcix#3UhwAQRDn z7I*9vT1f*z!ZO}Uwu#f4nCXE;0}e^4?7b_=E$ILf$ey4GozlYTTejsZx}4wtUEjXQmfetEo^~dB9({X#>s#Mi?|RpJ zTkl%y{SqJiyGy!!n{76qmn9m{Q^fK0Gt|TW#kK-3%6hx7jivE$$&4SPSYVAk3AyfC zuL1C)?7czozm#njh^tH1lF@X}Q;+b1x8?z^i8%-jmJq92OC`jLeynBt#2;d8Xp`8_ zQKGZp%PJmdyXRLrM_HIp+>9R3+TLSqKH!zqp$bf@e#=|+c%W_Wa3xr5 zyXTYZM$OraTwgH3W>W+F4}YG;QU~4qNTNYabmfu(LUI_? zNa8<{)pFBT$`2KG7W~S?xjDHDTRz`eaGO#YTw?>Q<&{-Gclio4-5W)A4n3E+p2jkC zy#%)hdj^~C8DN)i&Z>gMd}iZK_iW`Zca?S>%3wcFrT9j_G1O4idh24KsB9jcX!yor z{G#9Ro^Rr5uw`s<%bBW_!V9c#w~qagCbdM)sC+ze2ja06C>#g_v(SOX%`Tqn|^Tb5Mjfo`kAJgjN>kGcc1Lb!X?4oBm^ZVyV z=)aO)RR{atQ;S0KdbCVbzAg9E;<7{a(-*glNE3(u99=wzVnx{`P3tHvntn_^mR*uK5+v={nH(c>QH?!09iyv{E6)bW_aj$guI&axl(v;h!ay=^7``6rgx3hS(tXE~) zz0RK5-m;DSP_9SiHsw)n1NHTIw=b)(RySFF?DLw`uFCaOpW0n=m3H&hF7>J18roHp zuIRhbSt3Vf5=ovwCWe}BITbX}!s74^IP=h~lemDWLWs@H$K){27e zsXMNse#d|Rbq9dMH;BIk=fwiR`hMkptBmV6BYgXxM^xh#TCPybuIqo?O*z->?Y}?h z(gW?My~b~gve|c)5e^9R=gHFw-@J^JVV2jVT-!qDQ2`&y_L~34$87JWxx2@-sceVJ zuo~OV@9BkJ==-X^H87pZkcCv5U&1_M2Jh!SUg?DjANP{^C8SDsFDi0B#qMXG`>Ak0 zOWaS5`w836x0}=rz4~npmP@Tor-W*k7fGiK3A{1z?LqQ_tpue9JOp~6`A`J5VH!;S z7us$-$Pf9z~$YeM9N%r1) zb=wM6?vySkUExd@RiM1eb#a@e`w$Pw9+mT-(d7_=Bh%eo>MmW#beF!@^`yFsJjrzT zf_li~q0QOd?WX*xN!{HAbfNRKT6fO6`+)%1&O5u*U4c_SVck`k(E4)+tw=vr(~9*IoHmbIOLI2cHEP!pyB?#4W2E2|(Ar}RG_K@% zq>~#7#~Ix zuX?zon99Ok$`Cn}S8dRJr|vuLex2?Q>i(eJ?^ol4{O{o(DovtDlTd1!y&Y@&Pc!u1 z!!Z0~+1r?;ZsZ19+)s<*51+NY`q3HW0#_*NM&1k2(-d19gmrNV*nRx(WfyQoplsOF z@yv-KvC9F55s7DV(hH3ST3#zzi=Yd%yzJa?p6zs~2zWST-?k5pnBy?eJlG^BNNKR_ zkZPzcS)!kYlCXYo3VF?S&=$*FY|RI_xf_2Zdu3%2+g5Cu##_|Ue7>k|x(FrzSB4%0 zl!(b*sR|6vDt2D6R~1K|GI)Z+1CLuS$!T24&qIm@`_g5FnPDTxJ;+LXILpV)HX4&(z}{l*tR>90e@BC%YX;KMOp?R6gn*f zbpd_6$SXV!ueUs8DtUv-6RI8Ygu5O9CNM^@&k9x&m=%3W`|IXua8U16Uil~5ui=G) z_kYOnNs~s}zMRXB5J|7l43#L&>1z9Oo@IHV*(I1NIo)kvzQ)g>h%1rrXWVERJKDZn z;AfOr#$el*r}-IoSVp4l%Y}Z%ot81&+%98e20|@#uO!`iT|^fqZd_`QZV&5{)aBd{ ziyRU{`JO=CEeTk|t_0cTSp_7uSr_?Pz$r)CTgmHP*00feJU)h|JQ1)pR99HgW<-X}?2S~@c zEw7qT70GdxG%>x)MEohM>kORfOdAX(U*x~9l4o^$&OPdo%qCFMF(hrT<@juu?5(w!EN5KeYu6Zhe0~rSDq$md|Mt(xxTWDIq1YQ3;enT`xvlU3VUJ0!&?x1Pe4N zGqE%Wbd~1l-O`*+mETK0B?nVhFM_hXYP0YrB^uhwrM#+J_huD3O&Zm`+6C3K>?b}; z1l_~M#*y?cOOIGSG!h=rKn;-Ctb{Cx@SqLnppwTdDGQ>!>L9h3SJk@FJEpYL?d4VP zsofnE!j5t3dJFvmw{FnP5>Gw8vc67R;S%HZJ2hw;y{nqzS;GATnoJ9K>6H&9+yl*t zCeznHV7L9yN3vw9|HtP0}@s+Zyg-fqkT^CDwef>D)k| z?Z4@@zc*P1AKW_sZ;V9X+a*M=sV-yt;=^pX_U_w}JH%i)xm^B<4JNru-t_4SF`bs& zNMR8OV)%-ZJ1wYFk~=M^Q<6I^s8f>L7t|Ta?MweG$z3Qa>e9uAv0FoJDG^CBq06u? zU6)GkE&;sTL^XWurv{ah(A_<(OV?E-x4l1LqFV2}l-~D+wo)oX$VxLqNWEf_sTib} zEj|_rcg&2$s}?Ji#A_C#iiBHMCgB2A{YWDgXq!>AxFuG7dn{Pi&R(9QteR@|`sjosth8+gRlxx6eTJem zCrXv)$#UkHjBMCLe7v!Uq%+4PkxYP;S6xJ`|C=<&j(gAjKbT`b(9l)qc5-HbJzN#d zG1h@$uRv~x@v>QAV%X=JIMy6sXjJ{SDy_oaOG1yO2%pmGL5%3*RO3_+JL7q?`u zFt^*1^6Q!ME3euo%%L*sFHSdXq7szAFcm(XfpyDhf)vM-A0GO_gd9*g{e`ap{`9{G;9KdZlleu}HhY8_sGE`FumK z5xPki;!O^vwcrAG6;7npZh8Vua#qaF{$;#W_`;i@^Hn$43b5Q*X%8yrt%^O)9)6UI zizaZJw!pASyQK#&uUDkg5N&tf%r*(_lAKX8znAk~3Q%>!4eV0G=Ub>1mg<(z*m@~@ zmA`tq(<}qYW&W}NhZUM{{Q9Np{FAyqla)SoVXTbE47PQA=W=7knA+)0dR1k*x> zn`^OM=h?Nwu83Kp7Gcm;$LeH2$J7bD*dUPCc7*k-~CJO}bDba`4slnFHl0Y??gc3X2zA z7o7*tb%4)P?)uOE<+>XYwEukWF{TYrfM&hEdu)q2 z!nR;~gtu98o06Bi$KwCPcaIffnTHw*oqMd%xyK6UQR`LRW99^N?y)ghwi)*r<9QYL zn0wFWPT0`d?y*C<{h52r_j>;X?lF12o=3*P1HKzX3j$9DJa&L$U{!mYgJoy+@a>Yd zela%LD??^k^D2aCRm&MdOTgQ6V}B(l*jI6ao%Wqzv5dL(t3wYV5hG@9NtmMAi10B! z$qBX`b1OW#$?*xWB6xnCq1G>0zD*=g64cBP4= z22fK-I59)vf zNQoy$Tv0Tm??c%tyH@a+zg^1@r8yhy+KzT`FKhh+1BlK$v5padcvkm$5nk57BcPRG z>le1rVap)0^+S79e5Z4wMD&xyaKPp5USqHz*#y}(a6APm;k_CUdYkfsiIh#B$)jU( z!wa8K8D*AN;jPinQGt+9a|jrhwMkj~)C7pcCu6@MYOWvE_?SN>_1LXO$er zvS99^%T&SFr#V%yg2n;DR|WqY3jfOH^~20rz@_)xUm^W%aH@0TtU=6cjx+^ww>qiM zUV4p&_Z-1Gg|UY<{-rrL-LX~(w8^oY^uB)FWJ%MH&a;`NANS1S^~?1mlJK8eKN>?w zHqn|BYA}#QZv6#j>iEC>7IR5xUT$Itxsnv;nL8I-PN(nmtOXt(x5GUW;+0Pakl04PDlYLHftdaf~9%Bqm_KiUIHT5?kEN4$;7!6BJiIl|qj92SOB4oLis z%3)^ z(CY(wot-`C+8Mb5aHFZRTueQeT$)=BtXjm>{LgO_)TsV*G^1=$PwS`N#HWb!yeX1}lH+HaWhxgns z!*-mg^O{E(;4if0-~7e48Jd%a3O4@P=tQM?%YrSts-Nu;Ed_4hrf2@h_oYVukz72~ zkiH&hG`ia!$@6p4Bmc-XeolJiAIbM~(j)&!fuEBe`A4StIq8vqq|nbvk9=%84p&<^ z{E0{2DGAUw;}<@}$j4YW9Mf>GiU$7!u>*0*4}W+Ppux0TjYJW6N3Fb)azejq;k(Fr zE#-uMGv$PS+s-zb4hr)YYsC$7sqLA*%Fo>~tK#`PKFJY~+=fs8h-W$9d1bcr)aP!T z_56)R3XxHEs%|Kl8wqmUPv*A9{JGCE_!-w&%1QTWKdKC`XM5>>?*sNUew_}{Immni%d5wxv(uZ9F9g3UP5mdHDqtUGbF^3vJNA@z3@h+zz^h^- zwPI`&mhTd`T`6ng7RKh%pnN#Qp66KxZd`ivRG4!r^VlPsILTIIi()AsUK39ODET7Y zgzbj2Gj=wJGqe_B@_Y~_bX#I0uVpF)8LHGjdL>}8aq-oQIa%9w*_o#TI1n`xWgk49 z;si6NnZ^P@D-bdjr=eXgXb&eA&@AUhZUST?NeId(DQ_SLTkaO9M3QVFw$=^@=4UCN z?e)|K?0G*{T(`vY7qT0=dJkTq?4-Sgw^w= zT23V0w%QJAd9#FFj&k{^RUn{eDMS^i&HXRfF+mHwr8cwCT6if?ic)82=2K{WrM+XqE;cLmzMIJ~&6>P90I-5Vh=5uc(ddo-tvDE zyLnUe*%Hf8XoU3~wjC2Ok3t-h3^eZ_Y`C60c0_a3BC!FrUY)zAviZQxF4F?HolJZQqd8L*-BMMn zJUr@?g71IhoN+%a&U8IH6dL?RV01BGkj>jh0A~|_N@*%hjXUSoEG9bPE{TbLBM+DG zkpQR}yMjQ%nVsGGeu53O?F&{Y&)+hv1#a&OmJL^Xi#io0?3U`b|4U}h{Iiwcx$##q z?4Q4JW?-VTy0xuIXeb+AbvTgAcQD*-^M&HNRm7~SzP+=$?Jd2RIuDw73*1+)U!%A5 z$EmL3x*OR}Ufq0P&}c@d=n}tADYk)EHXpiK1af$xWbZGWd11Fe6oR}y_QUH>z@SZxssCZGet8s!FvpK)!s z#KEA8&6keH*ZPS->sO~&O9p$RDov;Y@73_r>hqK*7p9=iYV=YUB z6_~U0*?qilP0KP?S%}DW^wTY|_Jbe0_UNY^3T0DzLt>o+_O0kv5AgHxD>%)Dg`6AUKPN3SH!|V8r79;Q(|y z7|iVo&N{W&dv)vV#dG#m=k^Dhx8(%ASKsG$KjRo^?j?H1tEWEUM{|R30(1EG!0bN^ z=JE-JZm@JmFqdVh?!|Ke4m2ORBalmEi1x*E_Eya~s&m{9y`AlcK6dRXWi8|Ue_}ev zQaI7=g3R60vax;NN3QL*JYrKS@EnLO5~AJ_0=zX{sAvXWTl^BJYN)+|Xp{qiUQ|Eo%xzB|2Px*wdR>ARe+(IE|dZ}(#*KJ)X;vAGbrC&=f z^}SXSM@jwG+nA(0T++k`S&E50JQ(084V3ca&@XZ#LZ>3W1RSBS$zK{yXk%1($3^9mO`{lB;rN3}9{6jLQ3|g7Mv#;?$*?i*#i4R?PVz$NZW4=lRI43!uKF`nPZLiF z7vXUX@bESR@Su`0;7hVBC;wFW%tM<=jne6Jc%9@&(H z5n8Se`Q>S|{;VF1AOtwF{W^!Z)hC*@6%RTh@NFMqIBMM+`Dz7 zt{DGbh_&w#A2?t+N)D%F$xHa?!wWcK=J-B)M6)B*7C*!tTYg5)s|U=)C}WFzZdHF| zowAvZk1&^yGl7n42?-Zkl{X^KSqNX^2>2J`aqfB}q~fW?N$T+8qDV|e*ii-X z0b0%KBLCztwWkTIT8jbZ-lC1eYDmkkTH7Sy#npHBt=dU!nyQs0FSW%8@Q$`Jz3fKG z8_{-o$j*z8sZO;O7fZ5ZWtd^4vXx@<2gK&$(h#0VzZ;rsNDeC(FhZ++C;AAm#DNKT zmgq4|A6MN-35H#Ei0miNcsL^E|1US zh4b(ja6h5)tNr;_CN7QIw1JN1MTHb`-!CSs zzIP_~{k^Ie$^+$emojn|gWvwUKBGo$fdKkcKSiHBm$)gti#;kPcl=F1UWgW`V~}ir zl1aS>)HFT|L=ksjSXef>Bn~oc=mkC1SWAXHVbX3Ixk-xfR6{u;3FO6JO;gl}y7Dls zQ9nEiLsGvMuf>VRp70N>&z;K#jaDcw=71P&hKyU`E=ts&g|h6Wa}?jM0@`ykUSa-Pvd99DWy(2M$WAM;D|R{i!*a|4x( z@R0&iC^W9G7++D|NQ^#=n97Ln5LIZCa(uT^Qj_srG>auppEGn)ZdSM>PHnxjEUqVeR*QsAP<<+ z$8jx)hX!? zk(E7g9=I#L3yc{X#&rXblA!gc;K%xNa7q2JNLb9I5v6fQSaFO(DxzO$vX*L<6r$}x z9?k83-stfRKQhqWO zLT!?ESem?@rpMjN>Qnzq$q&aQlf#=Jh1zzdHrRcy?!iKMYXY~X+@D_pN!ykcAJHnm zy(eOc>sVlTlO;7c;T}thH^TcYiKq(?X<)@=&$L&yY-m67=}Jwlu30z-TtCy5+tt!e zUez2J;F)c?@3x$@JE-oN{kfYeTXyk%3Z6oV&m5`BW#?K)b^HEL+w9DyUW?ma1f0-n|FhABGo^{mqB?Zu+MIoz@1+`=VU<9V`!8axoSS~3(Tkf zHjvBLGEUPDFLngybOzhLQb5FJH-RBIs^%a(A`+@5Irj!8x~k_y0&}>zcyD0Nw#9SS zRa4oVt<`h7s;}JyS`{u0iPxtB1rBuIcmtRV7Ay<#G~ni$ZsW@9$!}Lmd2$ zumX}9f9(lP9`QMrO{PgPPiK2#r`#SUQ&Lt8YH{KuO;mBXZI!I37+67PY zB`SMB8&t}v1z%0VI&n~e!{erMJYe5bFOZX@5J|7sH z#fQdb@#(f%oWrNn1S;YqA3y%C-~_fmKRC%G8=?(a)voBslsa?e#QIGW2V4)QOp%sGCO^bHa3h z$U?rTLwN7?`nH1ieL@?ouO?hNo(Fhg5IX3pz_C;RONswzaLBDjr1YTOC{nt`8L%*p z-^}vP$wg7DwczQ&vZtxbe8(WN{w_t_#hsB%{P6#tn6Q@#P4M?*DEPu7xGHTTEc@yI--)IWHieazHVEXY0X3a<>8=$9%xa-rzOM^`WG0!i39L zvo9Z^!1u$F&4<0fwcGjT!rLvMC*DN?90SpgEm?KIV#-DcR^7g8bEP8M*SHTo1zWaO zwczjkek~}$A@iwVE+4?z!%4O(+`wyXU{57hz}uB=kK|I0upT&Az>7Bd@EMk0(<4G+ zR}njWcHQ4lnc-$=`a3*;Dz+-%`gBI{crceha;mxY6{}dD$=MXLx(Kf(6cV~Cm#q6* zt9~&uzn?c}&ry_qJh!R_;1cp0QLa;w$sYoMDhS$vc_Hy8=igK1ztDCkzOHit2C7(L zF8_pQ%^i6x;MCOpmHaBiSl3Vn6m5I9!8{c%TR&6Ta^u@q#$|xFmw;SG)Yz0G0UAti z4d0oxKKl>W7^!yaQ# z)SbFkk3Xr$m>4XankpWbX@ZGXck((eTR*PHGCIf#?=0hWZe)qojbLgdF~{n9W|F{2 z2q#|RvhD$%Ge;Yz3{yv%0SYaY*Trujf!0;-xZhgcX@Jls+`8URx?(aD$1!R`$~+AW zI)GHy{c#c~+VBp6KoQMn>dpuR?6SIUfq)ef-bm}=1HfU8&@IiK>dpuR%*eW4fgqa_ zo5MP)%rgQ(wQLm#w5IM`HlF!+Qk+MKr~9AP5%2f*v2G^>BxZf^}1wBLV@GIxK*j@Ss4T$Q7`#Nm$q=EYQ&S zBrK>WX)G`p<1`RbW*Q4|VS(1P3veW!xX)Ig{ou!W6gc&i3N zB%^o45p`Q<(&`0T4Iig{4XQe z93W+8*9{AV^(6WPf_9mO2LuCTE>P=E3x+RM~2MnT@Kzg=#E!<&OKU)twWn zX|iscMw?>tG#N)I^PEt9kwjdmKCCtb0!8F%sFSxKIi|+~L61++dN=|c)(G8Fm+H<5 z1XZ(5AgB?xjoWA|(?C!yCjYkcl##SOcOqgqQgQTPg7W!ist{#VBxH=K<~#TNNm7Tv;dnJRhy0g z&7m|cXtdL`fIP5aQl`;@2+DNfdXRixv_KI@>0*58!SI$84H#!Z?~;2N&JhT_ElxGg z5kHMX4_BZC1kkt!LoG!VvJZ4^TKrZuCEn`>pY* zS=|ye9XxETnl-4jJY9{!S;I>ADLs1@FTB0139E?PCK4?dK=bCQbAirL^Qr|I7X(St&?**j4AIAuiB z8GFZ=?Uc*S*Z~qbGHoW=J3_xQ&EDBf;&OY(I8`7B|7P#V5HNe^5OAdJ9U62}?=%Th zvjCO0ca$j!%$7Lc*m$3(DSOAdDSoFvPSdNKX?rJ)1!yXRg;TcL5bXR5? z3uf=oTH4-8V?oF=dq-GE+dEgmg4sJMEEvNG3+k|e5dY`J!sYgkfhrJeJjL(yM8^AM zEU2GpEHD^m?GjcO@BoGF8Y9ePV{2tzw5;?obHhag3oWYE}1E@)!j^pxeeE1U; z5-oDDlU|~ptw5!ivZ5$Ji+}V@HA# zo5KmpLOpo6aESo7DHg*ll9sE~N@3U4orKQSFN!WNG-C%FFtu6OW;s%Nnqr97kzmJp zENjNp{1IwH^wymM&o+ZHHIHU=#?A)tjeGq=sd*C~m#TSSve};Ic}~q!EWBB0R);h; z27+KQV+Ya>o0{LoxElx%SVqkQcSg-a1ZMauGp**Cb!Keu6TF*N^NfGWw4DkIf+dXw zwI2Q%7XDYkLP{v4SRx6fI~4$Rgu6wK6iH8cow0K^)q73W#5!ieALJK4%*?dR_mJXF zs*{XylBY+Fq$E$5Pprx`!&eI3Q~<0I?hyzS(UtAC&=fZS&S6x_-SNEW5cux zIC^}m(o3glJ_N&)u9_x6Fn&%3;9wB}7=w2nwN0h`zMEYy<$o;%hEFW>b-*Ue?k5*07Uur@jcEIZu4JRIh ztgD$zm=BZPL&ob8T1-hYj*(#vm6=O$yiI6LxJf^4rJUKL4EbcY$+bMa%v{m{rp+Z} z{S@XBn3=**FmvfRa9AUBOTz0PZ!R(J8AIWSs05UxsYE*QCo-2z&E4S8k#>wQyUxhX zw1)~cl<|T|MS{`{uOtM5G}Y8txQe-?o}|qs2E!a9%1oO}<`|L4-ojJ3!gW(1oTk`h zbBQ8X!vcpp-82w((}eE|e!87J{b#_!Rm>$DPYuMot^?!X(Wy6)qhK+I0mT&f(99(R zP*_ku%v@qLow-C22R|I)%%#2JgtPQs0!#Io?I~=*h#8?}9xBNjNybS+OJXT4v;ZzM z`49+FlG{E`LTm5gZ6XGBK#XGM(l&DsWtmHWszak@E@`&`))xlSuVvgrkD7Z(k%$_f zz&+Gu?xE^y7ph2S-z-7Keda(dUU^gbiaFazk785 zRHhZZGn)!SW0FlpH=F~B&LfwwI>cP&%|P5c)c^*jGNwebV>~jq4O7vK&m^wVFwYT_ z@Nvq>ap8o5+S@Kd7$-&yZbGF8LdY}|stXwkx_mHkCRNOw8tsWJWggrEzL8J(;y&BNnF7-&8} zye4+`GLO?z9832*rx8E$Kgk=#jFLM|CiRSYq@GRtFa{KIIqj4}Dj`#T=8bY1OQgfR zHM344OIo_gUugZAH|k2BNpaHudOkS}9dl8e{1+`qz}tcZX3W1qZxk{KL#fxiQOG3H z&KreHBJI3Ud11D)4o?oHsDOw;c3^VuFwk;iNuc#BMZwnJ;n4B}#lhCE+!knE$)>oK zrHVeNMSV_8yv`fCHJ=n`A)0j0ZLy+3?UYBJ9rXdP{1(N@bfxVg!`^<5QGcs*;{lY#`oMcFK_e z>Om*v>_n6gg_bkpTj(z{VBa<@*!q8D!E@6>HB2ELSkY=23q%6rfY5^qq4^iB`2mNX zd49#4^v-4)-ccqP+R;hL9j9#tmIvA!t=&nIVfB6YayiNCLjV#!U8Xk`q+3f-GDTd0 z5fwP-a>~6U(>WmKZMN$UyKb8vXnlsQYF}L<1g!@$4y4+^bO^H5sRKgsZq=`)+wi(K zXhqj57Gs00kJkiSncpw=R$9a*g*sxB{yghlBv+dpX^4uN7+uw&Xua_bj9kCf)Bc9K zh(E$mRhlD@Dx_ly0P4eE^yO#kG8VT1rs zqdXPf(*vW;=t1h=Iox$WWdpS z%Z!jIw?yiI6~HKxht4(m2xg#!VDgM=#TQ|aF6weas7DUNhI>u3glth-dQ>bVR%%p& z-b(urOwu4o3ar=M!8dK30*}ns$Jm*l83%20vSV#fKcIDI zu-pw2St;Xjn*5P3^;^^Azlj2;CX+wh>IxY7iy_D<_Y^lPMgHBEKEV}Cidx#$kJYKu zZ;syK{P6J-w_qr#OcbZSKkgPL0r8x>8oJHXKg=F>YaspS_ z!%saP1U85Tu6na%P>oRDhByuew`4HbB^ErRat$2KT+CZ%6^|zVuFDDwgByk0OGFE< zY@P@FVU3P$+40!G0yn0ck#TW9#prr-flaQQ8xqEH=y6;~Y+vUJ1Y z4IFWtzyVPmP-u9M5u^5ur0A68ctiaL5%A6on(WwRhDwby`wfAUsMKvkl{8C@ZhSq+ zTxo~xdJP);Hj|W0y!{kGMG*_^ZxuQuWaGjw6zbNZlS2gM(f$D76SJ5YJ_#zerRnfp zaCK%f9gb39dm5Q`>@7+S$UeA1Az zUPwVY#CK9WyoEcV5y%Z4?^9X(|Trld|0T7SkHBM3JRjm9&popFDa>VPTX$dy!}C=gSE~7vhL%k!6p5`{z_01XzS->ePRrXJuRZyq}2_6wfOh{|raC{wi$uwb^1c$_E z$9PL-!6gI&1+fF!2gK~PQz;~wwgVg|nob#d&~_>GlzWJAz}{sPBdgxX6qRE~f5T%! z!6u1Rcq!u03#zCe+5F%4mW2kw`Jz%Zw*T^jO%@WOP;&c&1CPPEn zQmRiR)Gq93uT`=`B;>Gj75&C;RIp?aAt#uSNGTjaHN!?Vh8`?3JOcqB| z>p5OY={aXW9X7(kbYfI3`pSq6ZLgr~;h#=A5hS4lEm2II_lh6cL2MX4CTu}#^bRga zDguJ9_w3BPBQ7MYQ+v)T)!}Jh6z$=OSd=}4pjjfl{1!+HdBi*;t^>`o-cxFiSyYv6 z%8l;_LC1wNG$8|(t?jNTk{q{v7?G4n)02&-93Cv43r5W}q)$Q|AF~WoFqmK#QzI z`s{!ZF)TzN+>D%7p~0rXm@qvbGBWPJkcg9k2>Btu=%gGl}An zMgg4;wDFL2iDl3vlre3G~#i4`)mo4N0W`1g?+w z4P9t{V9;blBr|9ray(L0q-lv_kc9VTuq5n>YH(X%@ujiks7APg*+f7{e2iM&zXH|B z>e^s4Gv?TFceGK(yTnqE4WqKbcxo??FM^K!BAoYxpuOTLwro<`Y#_K>-0!BkW;=Hv zbaq<-6XGJA%RLSW2_5HgU=}Rtyx$PAmn%c)EH}6bj&FyQR-Tm{c=vGu{vOytibiad z>4me@80qkc&>~}7TZEX&1F5Nf=5Vsc0a-&>nq!!9CZnjv{5u-E(j22FM_Lj=#*_Go zXzq1uPHp4cd7bLp`Hu=;hlCq;4OWT%Xk(KvmuQ`heB`bZ$~e-)v!k?rP6@mF3W8viu}jA||K)ocP`Z9xgb@Xrv&g+BYf9ICZFE{MkAU@Qz&v)smC&T|5zq ztrLLDQN5B1Xj;V1Ua~vD+%}<4Yr$+Mq6+aNS`QeE9}hxIM-4Hi;-;_}Dd3DsH9nQq z3Fa;{D&afuChHrt)fmPu8nIdU{8ybP3EGn$MsquLW|YMs7z=8KmnFEJz8_Z4oqG_I z$5{dnMO}L01QkroBt?|W_txn#C7InhTUHic{G4)o!9&dOz=Xq={^KKLZ4$PaoY|4D zq})zf_Ro@ODuH@CmA}CSCHnKl&cRql;3i}hC~sS;@xyRZs^c{4(&XPUm(lG z^kL=fo=hkbOCY*Fu1Twjr6>hX8!FOr91?T|%!Lh|>XmX&GN|0^vg5mhch5WHa)Jf8o7PdSjsUk95`p2 z;Xr&P**qBsN34r#(cBtW!hw;43`SI@!+}UopB`6Exi@J2cJ?5>CkNk<;b2J$EORjU zI5=WBFd4$SfLupTN4+Ov*r^wtiDx*-^wc=s>8QwLV(4;>ncrMENcq4sY+*PMe_l=p zZWfxhi7)BmPeKQV14joNt@khkI7rcf`M(8Lk?)$%&_S0CeC+`!YI^@|~Il2A$uARWU_S3fq7q zdiF^W>hubqyOsXn&ZgP@%F@JW$QZ#KZpICwI#UmqOp&1Ylkh;650xC76FD!08~>P% z|8DU>(yctA!;*Z_jVLmTk6uKpZ`%r_n)!feK~E~{6}M<8*OAxwP%$~HOI|bv;-kJ^ zV+Gq;32LLI&#dqvo3rApJbUb+*$VBjlpxcJrgGOuh`vMo*!E+^Rjt2!2LWaC6kmi` z6{vs30=aF~X9KMYm&4b(*PLBd*u*ksUfrjvS{rYCJ(tWIkK9LV=^_dv-S&3L5~9>B zoImlS9DWHl^To9kX?w*&{r{-z8Ue6}>^qfBSczhSqP8sP3bs7f?foqX;AThbLIQ^@ z7;IgryF{?1ez^JR8+kA3t=_;0E}VaSet*kA^T9@M%^z@YEm_N){if=jf9~f6+g>eM zLYx)CSChRilTG|JfFsxj+5c}Q`|Xm4ij+M;_RC~fPsD;Puaz{>Myh%uU=z@!$Vy!5q$f!=8ry^w(6LF?>byQ6#Tt;c2C4XmNqC;p4mVMwoS4sRB#oV}!4;S1> z-8pN{dM`%;gx4rq-Rr&FUflkCu*CEJww+Nau4*}1>3x5*_qV62S}tmM2rja%?Z(QM zSZ*wLYs-%Ly_M(AR<_+gacgh8wI<)zIw9 zwg)GMKB@wh&3pJt)vyQ>)L-oUwY#M`ZI zCHPInbRNFPM(~d)#E}q{O9Y`^1P&mzPGH_*XiI#y5XFhTId|#jM;Wvf>W&N$=X5?F z!XVa9p#5+@OXvBYha>gXY_HK>SLYiAOzG zq%|WO!GkBe4RV{bxgofP3qOhONXR6i`km^%rq zIKN^FDMAH1h%I!UFhN>w7Sx2ic2dVO)q&lugwiBdx&rKZ@iYAQ@^79^sU<>F(w}a! zw49&;WH5!$Gj`SfJNc=#(IAzFPXIrbO*1U+B;#v?J`7zo7~Qnfn%uAeibvg(OBRZ& z0ljC1V}+bZj%#({J>B9$26Xe>45P_9%VQTY6HU~ul$#y5R} zZhYH_**;%wJmam|sK9XRBTa}+8eX06j0C9HnUA3t^1D$(JbF1_0ryEjoj)NLb)%5z zBUn~_uqZc|b5Xady)qXqQ6)d)A_%|;QljNwF&Dj=BA}@l384)w{j1}pSA7zPog9h7 zPDYesCnLYh*vU~g>||O9738h?F^psih+aBUuS)4F49I*1AxtT%UD!SgTfcSV;tIHxFTIg7$*F0j8-qkq!k5 zYg{YTfz(MJLrP!Jib1$fda$;zf-4^F5yUH=C0iV}b+?AXCE{G0H=fBBt$8u$W*QlFlvcNIPoSZH&`0D;PCJE!4n#mF_s}kgsqeX$i%q$KScg7bj)`g{ zp%7N??L#D&dt05vMfphwYDJ4veCR1#C_=2WXiiI1ak)|lqi+8S8#c@-s`UoIcMHXO z1?QG2rg7?t@Na7{a_o-SZV!MnAB6=O*4B^G9Csb0zQer#K~`QjdD^pq9WsI}Q9M`c zJn6=}MJsgN29uG~O1}nE-;@HsHgy{pddGxb9P% z{U|nY1(AsPh!Ni_`LlmNN;uTRmEP@zUJ;Yx+ZPc4xUxuz;_CH_=3(pRwB}Xv(V5o! z^7*-&?-UX>^#0#BzXBhc#9KhL*u>Xh-5*y_7;i)3$^R2iL36ai!s7DDrO9pESBBK~ z9NG@F?DuZJhNivSiMmV6{1&fY;J4ed;7*!tSwQ2{TNco^JQW*NyFPWLwiQ@(Kh0X( zQX9`?I^G1#&`(4H)&`M>z3RP&X7`}{fps#+GzYx&Q2wwAU0=hD{d z{FX2BK^@|zwkMvoOMQw|gcN&(!+Q0`%zcgSi!=8~{*{YLxOeT{M#?pJ2PxNDshUuAD;M2O=5S8s z4}2e~jw#Sto^t?Ut)KEg&rBZQE2CR_`l|nN3cf7fq+;5#W_9SrVVCn-$)FOHUhR8b z*^e6`3wPc;7O_@FXgpGdfH zz;49$T{Q0pM3YrX7RXV3*any~dv(!9Jegu4IbcaHFRAfvV@H>TDS zZ(zu1naqd9ZVaw!-b)g+nQBpa5woqbxKhmd5^ARSF>^s znv>eVU`-vDwMV8#g^&V(ArFT|tm(Gyjac`TX|G4A;=0fOg2<*c2dk$%khfOM~bImzycBwgD-~bAQpiiFr4S`%ph#p+}au!Cr z)D?Z&z|l^pjo+}1pXim{eYQ1T4T2mYRpZ1P^c%ZS-4ex!@Y%b}u-ah}p(y+1G-kC~ zkQ3lEH>LqxZ_R0QSjavs%3x8Cwh~N%RC|*rY)wctD;5Mq`p<->kt!y=Jqf9vMaIOt z?hk0hnr3Gs)oN~I9D@1odTJap4CW328pD`sP`xEw;brfrgT@cT1hH>E|1s}54hu2t z>~vsE#$Bvv-W~U)mW=F5?@_JeKB0-nxG%#v>h46CH?Gxf(e0zhc+N+yY&EqOJA8%K zeDUur^lCLVTcJZszeKN&F@gOB(vOQ~+2!B(Xa#rwrAac5{;`jw@j2ZnGr}*Wv}p32 zrK$0?)Yn^xKMF)Ilr&kPaVMn45mLY)qIguWKXH;feI?^j`StX9nGpO{3!E!N_Ta6S z3C)UgwDyc}K1Nf&r!R=DT*95c0rA8VLGq$CV#~K7*54bSQ-&UNy9b^0Go&pgz~>${ zKIa~V`0}hb&RT>XzT%`i1EU$ptG1^jug7urMpghH)^e5GPDsz;f| zJ)t_7($>OCD>UE68>w$stT+W=U!fAd{Y#vcV%>q1B7T%-_BGj?dPL$2z2QQMFIl5FnGY z-?He%+tbb13p8_4L(r{OH1_bSMJy9s;SE6GfYT5trt;9fONKyh7YkA{uD*^(P$n$m z8pUEs*0{tA{(cp##U{&n=KSZTJ&(tb4>R2G_vGY!XZ78B>2vv?e?Gr_Vm&K)zk4j8 z!1z8O#AH@Rb|exCnlj5$^o`-9I>u(je7 z*$P0SsvQgI{$*1hl!TY`fdMXyD(L-gI<#E7B5U_>CtYbD+`<$t;(gxKVjI?Tg?}f# zWKnqwDsB-$xCOP)t*45)qqK3RSWgN#bk~1SAvv=o%{C)|WMJ`G({$auvR?Y$j$?6N zMjNo8DT>u1TCv4yco9bu9hm38d+061iAmOEJvC8E+uF>h^A18XII{iB z>-6q3HN5+{NoM?jweXitDq!_jSYLD@KireqEYzbsZS*e9(T*g4ha6%rY5U!Eyh($^ z6S+LKq25bMQE0Vj1vmp=gFe3O*q&Lw<~OuKlc!MXNAb~Dz?Z3c6ODGOWgP%rXT^Ip z#_PadpJ8toF9O14?n4T=ZJIhZqn(Wc#G%&~G||P*o0xsfQwKcV;lz;KqvwD_p8`YO z3A>tW0ZJOFgN7XmDvWhlB*@l4dLjB-L09O4RGVILT>zo@%NYmTjAwZw4j-XfAT~00 z`(M>B|5$?Ck|$v$8<8D|O+3SJ04#j7G+V4T^bA(emS6D$n++`lqirjtQ`*JM7`&KG zv)ZG??i@-RQul!~+Xu^1Dma^(X4&gWJ4UlIA~0nfQr(7Pms9RJnq>u&mYr{0-tcf$ z$%|+&5VO_?BcjSgppMcEmxe?;?_&m<9a7b23c)I3-rNAZWatx(vMHSo*oHPkftC&bDjaYPO1`+t;Ym}(hnAQ6c)2%lK(EJn{fJj{<)>Y-E`g`*|8c@@%T ztx3BY5TgFJ_2dR^wg%TeG)9s5HrxV?Nzn@`VMn;!DJ|xu68)}(o$~{e$|?8WGklH7 z^HlD!TR}e@Hj_KKPo7Z z*P*+f|2e4=pLdZ=I=Lq^h6Sxb-T6Y&N{H;3gy=*mpJSy4&Dg-0X+fPP!8m_Wn6n-D zETK?D0Uw+wgjp@TMf`~4cpe}W%@EJtqYex*QrxjnJ5?)AcLyOf%`%EZg}4Gnap*+7 zV#h|gI*MCw7(|dT#PrYvk+%YY%`Oh$G6$2^68(L)wwIp)iC-Y=lKqviVyNJ2pLU4q z77BzvZ7c+pCSci~BaaGA84AIip>V}f;qizr2~m*SWy@h=-a{C&@34aFD44Lr*me-& zh=>G>5EwNI3>CFv(D_GcZNK!;KdeyzS^K2z$c%_bdt59?hEGtMk!$`Ql9^CG^Iao# zNRKh4eFU6sYLO|)3o{!^Ubh0G2HS9d^D5?mJ=nMy{1k$Ipm;hVcFld{K)~oam zY=%pZ)57F#e~_^mvu=OSw&~jg0Kr^6J2n70yplqjJ5I} zTIWYKgzdtH@Jm<(r(3g+K!8@UT|zizrWlZZJngQk{t*FL5Ns2 zx&d_}rt+EZ35G8I$I>z#N@9SN=SwiNHvB_3&h9W{PBNTfab|@P*AQsSQjj7ptW~!W z*hL8-=Zw&nKC3OBbcZ9Hh7_u5wNS35caEfb@u1N<3O%&%V!xN$e-O8F>F5OZKC!h(TZg>+BbS33yQVL??01~qj39YP7%NoPnaWdM7 z=^|KR&7A>~L7o)aFhpDdLmNF+PPymK&}fVdDZ-5%89}*-P?;WS$OarqIWs|yEQYzk zxIz|#=|LgTokT_tGMJdvC_;#g-Fm6L3Zh3yikIg;GuxM5I%tz+E0_#d%TpU+BB>R) z+$D&x8>mSE0tDhdfhZ)Ji`R}LV_7*JxHqi>4S&1Dj7%*6Mq_X2fkYh975Teos6D%64kp$!@X_3JI^|+%*7*%e% zfRIWV`ErVID$uvMAVgnAT~1b6M!sYelT$}lCZlBJkdq=SXNS5I80@_VW?3_4MZt3F z1abgc-t~ZzJHZ9g+}u0v_yI}*eq^wOnXscP(|{->9n&_-Atk=@35Po~qD&mgxH_yB zWoJ?td!&5kQzcCz6=^ce5*J&;j{B!grqMLH7zIs5F7Qq^H-Wg*MlNX$cZpF2UU;S4 z)6NukWXX|#Sj{Gm2pHv*d*=*yZsO=>=0}an zwWh}4YRyl69Y^&fbOIT`WL;r5nw4O|0JNJ*Ru14hr-kuZ#(;Aaz_Xv^_-rVHnZ?=Mq5TmaGwdmsm1a?hLFGsLni~p$!X>d zVmAl~>?HKexd+NU`7+!AZqXG60BAC#Y$E?yimoyTxFrtc;-sDrK~9p(D;PO^hp(%3 zO`av2kOV*_Ysx}O84Wr2m|@9I5GqCjLWJyNVM~k%hK1 zDuT?lQdI6Gv#7}J7Gnk@u-FgAz-Tqmu^i^PA0o*Z%xE63k4Olx?0{sq`hb}by6*ee zITPuKaDXNaR?qOo(@E8-kU*t5J#@e#Zb+L6M}|cu5kGFZ z+XT3*tXgyZXa%i&=2^(gdAArDi_&68Ykdb7P3p9*i?wk=NYatAlNmvcke1Eo$mCS6 zR!P!G+Cx*ggsvC{0NDeooIH170OUnL+rBQ~B^g%82#%wJpmif9XCEa`l7nP*_}UDL zU@HH7rK~ks*VLeyVQCKY)}(0#xqpNwo;Z0V#ORPi?U=P{B4txM1@A0L4p(~d)oBO6&SiUM`dCCQwygT+ z(CKpcsBw~=E|rTYuGX}uPamD{O}#f-cVuDn52wI(@?^KQlydj`$9WwBZ0jjLcKXm>z3s(Dy^8&v43p{;q_F zQGij8f5Mo?(iGs>z@`UNQ2AsEn1WA00E!|N{lT$;7{GaxVS{<<^X7Sx6hFBYVBLW&yOxGhu z`{zUxcCwa5Uf*7|fDdN0sxf&lC5$G88nlmfx*QXcObJvbwd~}Eo^$2oi1|4itJOi( z#+lwmEf{j9wpdyC*FIqC)oABzUvbNRY^JBw*U%wJe?x-iw_f9y+@V^nNNP_gYm@AW zj*W-B*tk{TJ+wtwVl!S>ua}> z^Rg{4ME5_P*E?*t+QJ<>7;le_#n;8gl3%Kbok?Ezr8T1yu`%ZQu`}`O|3Wv%ll`%= z(5+t~9o_f!oZYc!SDc{E730zU59TFR6+1qFmTF@B55*>!ZpFr#XOh~W6qm8&hS>4= zg;*@v5j&0tEH*}1gV@;6F7@O7CDHw3Imcg$J~o!q{(y46Qlskw;b`S=*Y?DouH6-T z#$PLoE|{CQb(q_iOCoCYd-3D3zW7kI@@b||v8Qq4L@VbeBdTzsEcQ-(f+qV7?r7zz z6+5jSQBLgX6}`~~w+a`kYi(9tu}18PXyr3307WYs>4(y~Qg5op*!OV7#17V<&W(L< zsNcXZi!K<;i9A3vwSCmdvSIA56#|@nFj-JHWwkUV)Gwvl@S%RX)gZ$F5wtK1 z?wYLHeoDAsO2IvA#rEi91$jF*8%f}%# zWIrXiWl>t&F+FzuiXOxAps=xPIQEzEl8xqV01zWCRRDTceLv;}I7O2OrRY?;cj|$6v}CcC~1bA_d&A z?}%2;uRTO&?Ro&j6D))dW`@0twcL6>h(25^Ql=S#dD7 zxYnwVIKU)&j2=54FjPzijFP!|@6U)nc75Jnd#m5Gj?g8a7B2zn$_TqBz6WF_FCvh( z-y4h7pUaKS9oin<|J&X;^mZMQP@)|R^F~wX>Wec#V>#yys@NENe!y1j4d{A(w0*^j z35fQolC{yw6{5j~c|MOU7|RhVZjFP{Ta&$4LRUsoLdIFeFGpAb)kAA|f;}6@GGj%W ziA+Y07kR`Q6Q~Sqq zb`FZr4`p#eKg>FdrG^wQq?uJ6+T|!rSD#y>3sw<`$#tgKQ<>daas{X!dzviv`MtGU|dDYcA@$@?wa)>e@aTKamVD4mb4prv)bV){3*y z{fqMmN1sB=SiDns&qm8wc=(Oj7Vvwfc4Kt^syw$7&|c^(!|L9O37?Gadobr1sFbxI zV_dp?!#p!WXOf#J+(Y4kOH3QuV??=b&|nbYUlWJ1cn9Q>5REWd=u2);f!>$=DxAq} zr3Ym>s`Lc&a>O%Zl$jUsUh0i08ht6N(MYPA%NtcE1$S1XYg45^e52VtZAw*hd81SG zv?f*h!#A4U(~49zmp3{^Pm5EfC)isFdJklycOVPB18FPp;E?GkCTL?!T5U?{#%?UR z&d2x}CZ#rk6jh8j7V`h4VvF`<)6w(4%iQ$AK+8cLSFC)naw&)E4h%9`ZSuoC6f$OsBRezu)nv4)5BTe zo*w=RMF{uwC-7@lxTl56Cfw6J7w#!Q%peX`F0hzS#UyrAl4DVylt{;Ys%%!sA>u4~ ztGlRh;rz1;=O3tQ+26dM*iSF12_0TGFo^R+*rtI8v-3FMN8W~1UeE{EMR@w3ne5j} zzFDNBm`O_iSF)=oI)g3l(ldne4!_+ z(Ty||4_WZ1r3+h*$DR&df1x22`)Q&%?q*;)#tZ9uL>m`9=j60jf9?0SX6>JtuHY z6GXu6%lT_v;+6bCCC-ct#s=aC@cKj$)={c;A)XNL2i}Mcj2uO=9!Ji``R_y4Ziud1 zm9vqGUdzvs1nL_(9orH=OR0VgiT7g%lW*obLB`PzioKn0f@<-|`e@}nv=NJsqg3Uc zIUZg2V9wFlsu6Uko=8WbZYP@&NHr5}?<5bz9vNBZN(!2H;=O_fo1*95*cm2qD7B0hw8f*U34Zl);HuP zOQsQev0BG+4w#_EDM0$H<@CQ4TbKep2H12V+HRJLVQvh72S)I(@yKDX8+g}8*FBwc z5iq5WBOq-(>;%`mFg&2QL}hlGVu*vA0G}8XDe`hYmE15gW;en* z=@B?H^sey3?0k$^F-?${ZhJ8vh#|Aqzm21PxQ+O?8&voOqa_t)9w=fK&FHp6g;yIv z1qwuOsfZPy9ZLslg2+}osK+4l8WE+)e9$Fc$*+;sa@;5L<3guT=7ZO$sK{K@Jg8y= zBWJ9Ceeq);`UK`pFMW1M5w0ZgkxWhSH6k8dh!Zj9`yIneW)ZZj8N^+@z7) z6^o5@8DYv!9>ZvvVAm>RX1>zRN|~<|suJRP;6l6Am9KN zW4|RX#yd_;XB=T`9(-O&raoJe=NQ~^26ZBK7vtpnL*bT`_wpS)LXSPdreCH4-tOsC zyU*mnLGcy*HHOnC7VPZ$x!9Y_#Cq@HN&}u)d^GkJv#I+Q=4_0v`#L>)3$nOpWQ%*O zx$j&2Kh1IB*l1^`-iBg)az7J)m(FzwBkQ8~-IKG9IeLVaQ(S_xdd-nTU-ASM8IypkEh8fK2_O+P z?=eHUFnMMYeeCOewivE;zA@Ot`8Sh zaDBC~N$5X5a>NMjxY0dinXE0Wfi8|?_4`8KiCGE#-srv+Io-VcX5m`Byk%t6ki11B z6=&pVHORe2?4_lVJO~z?fu^w4k_ine((FQy+Fm672x0+gT4-#^ki?oB#fpzG9`BD5pe zFc)n^Hc`-0s(QRt=(ry`y-{n5IjdwGLaSYcy*gZRI2qvWRki`<$oRDdrX0rqEr?*h zR4X-SMsrbZW-prB8k!xBE<(4Nv#1-}??oqfHo&{4?5u1kW9u)Vo}CAxSmP6t!*aLpK%4xPU=akbhtj_BN4GY}=qO-K(Z{d*Pb0mEOVY3;*E#=;33iywY^n=DWhJ&H4K$A$K1m-d?A->*K3n)W`TgJ7xPy@9FhF$mysotm?;#b|8a= z;+1dnUA?Sty}dA}*jqV|`%%r~q|h@_=?wZQ{tSJ*K z){AkuC;_x&{KphW*9jRS*+Ag1AysqB9njkXE7qbl;ff_17cN;MlCr$~L6h))bqowJ zMhy(%%??UO|BiZH5PrO*YYhe-Rs8t}M&dPSnxi&gj|R7?LVQ-$7wM3jEgWSAhPrhz zD4@f>jCa{#)vaEUXFBX+N7m6v(%q|f1$k`m3i6)sTrcI9i}JFd{Jfc6(B}sRZwkt&CFQe+YfCw@`U{HWO+orS zMGY(8QzQob4M`xWDg%B-5my?pX^71L{T`o3&3kdMc_4dvU}1mA7$3qeGT?DP4i?zVbbH0ABVZU7TFTkH8^ZDf>J)N|Sfg?F%@h zU-y6?pX)2-K6%fNR$ibskZ=|^jOO48ZWWMS{kc{1JTsfE{8{-Ro>u^ACTYGabgE#&IF&FaEtF8^wxVfRqD+yJM2B?!yN*cKg$lO(!_S|NFNRUxO}bm zST*(C-ZMVAwIB%_bYh=ofzEF;i_j{l1WECE`gMv_b&AvQ=8TKu7@m4eae4;_OrpuB(~+gJrE}1 zGB4(3r{(5^OBe@#Rt)C*w&2%G!I@A+u_8Y7#INdN@`(-F#bdB^V>_%bu-my@x!f z8hBqW+vA<>`$%OICm^58J%w#0pAEdrkRFv%yr!~o^iIk;yW(Nr(8r6{tcmA<{D ztk`?VcLu9-o}r4Yl`68WNOnt06vW9U-lQ_D#(jx!^fq}xJ~D*_aIFN}3sqGjSFo&# zU#|3jtFj90*kBXVd)cSU&YNDIhmq+l&m= zMN968yKkf>DhH!F?)3KZt(WqGx5JgU&!SSI1mjS6a{ED$Z2SKRLvV@4S0F_q99w+( z`_rxOz~vr_*Ml>~+T}jhJKc$tsvZlU;K6nmw1 z!D!pB>#k|J51SsY%ihaVG3S`=7RP?1`>Kb0Bcv;UXh|oq4F!e!a9mz*uc@2z^M)jr z;4A4oPD;#!latUrxR0Xl@ou6`K6Y^3T;F@UO~srGM=~WM=~g17gUIpWiiPV0`Xn?i z+*pN6G~RBB1>TR73NUNxyCne2z@b}0ajmTHulPM==-JTxb>V$00`doi56uhBkD1-K z0DLxnV}5jl_o4Ff5tuuEqRL=Z`PaEp7RSn$DDyX!f1z?8UjDSQ;&S=ZxnhlPZetYO zmbYngGit7lsa(^-hLA#*;ploh&STCJ?CAMc-gxq>6kYu zalQ9g(spc5^gRc^#SQ%#zD@6Y8NbtqZh~(o^(_g&_t0YH+qKHKYeUgBjSqrfr%N;a zWSNDe)|7u;j8G~JCWEuxr?5bLBSOJH`sThCqz=HDmeyDlrNg(D=>wJH>Qlu4@+u#^Gp6cQK48uMyhGOc z=DmSmVnaB8f5wFN`L2u!57d?Kha1YbOa?M!GH||&ZYToXE#-Sg8#!ZgJEah$6oL@5 z9Kx&shwkg_tw1xk1VWtKRlYGR!1oN96@WuQzoNpMfngw5@|hu>yd28Fp(y?1BRz;_ z%>7)Kbp=MCC@I|x{D_br6&U)1^bfR5{o`|0*Q!khGB6paC~7)u&&4YU>wW$s!V{Pb zoWNut!FAr7Fcq)bsrIfvZ-sj!{=cLPqC!mqD%=ZnM{vF~-G9D|)Y=N%*AfAHQ0-K{ z&^2X9AEz@3yCrWG?(i#;_zAR!dDwuxC|&vm`Kmy3slZycP=LRA8Os=65|rkoA&b^^1fQWy;=$hWo7w!U3}ZUyQ(5S zu+qCr4OCgUq?_m2+7kMwnt1o&qI;wdJ2j73tpZilU964`Bn_nD_bi!Y>!S&sWC#JmSq0w?Alg z8>`}-X4Si2;w{8rBtBNg?Nj9-V^l@?H^?>yunHN#GQ>@de0eC|oz?tb0RLxQ<$qL% z^FyFUQ4&O)_{OrwuJ@c@oT7f&tA`t!h8quHfe&Ab+(ybo*J|E_(g{Tk()oRan zZ-NiYWEE`}7416jza&~)#o3C4#=-X$(gTU#->g~4sGL%J3d;{8`l6QJU3edqcNeBr z!+h|5w6#M#|1-RP!26)@psm)FmTfg-ZUZbpQSqNu(=_i&GlrjVm7)DfGeaAZ#`1yh zCvS#(JHS`E`M-(oJj4C7cc07W-8c0oZ(-s&Z(&k7%D1=o!rUIPEIGn^BJq^>MAAlp zsZvwkP=$11?rSPMQT|-64mD zL`4rmZ*daVZh$S@V9Q=_LE;f_K@ys6d2*nn9SB3p;EVC2Y0a3?IJQLYpvU1CR0wM} z(;5|4U_QPbcN)yL&wLXVo^D)m-ioGisSS&DJ8 z5aVPa#>suulYpzD4dC5^TOQwqj2oGWlURz6&Q%L{FDmk!IoS}@n3M! zGHn$5(?VYnEYN)_+7~Bv6&S3m8?g&U?1B*)bH7u*%azz+QHWR+Vk}BA7Nv+qD@3P4 zrUvo@g``2bdO02B-*_Kg`wJMv)cfcj)W+8P`*t*_3U|{#??CvZy8-?`5Qwjb;S;x8 zzrz*BQL=M);QvPaU+dk6#YI8+Ni^8A(&gZ*z=v)COM+e1dNuT0(5pz<|6>0B1lfWb zhVA15G^ae@NrZcF2>YPu2irwlSJmC` zQOXr~5*;ZYl-{!#dY2IE=~2p-3cP(z462O&N7J_M#szp3*%mabJ!n9`;Jjl<=O*!d zAbRZhAgQ5J1}&rr-mR7P{3&`?>Od|U zd@eG2{3_2DVBEsO@q{cKPhjI*^eR#|!?PK(*cgVzMgjWUJfC>Dz<3r*Fr3iV4kL7RX-Y?Xn|VW(^9=j%<@PC^$Q^9p0@iyH88Dq8PEUm0c%m zP#g8i?XID@S%ZS`0&aQf_Q{fmkSMmX)Sm~#JG4)fe2S!%;j+2)=N>pZzxp=bmSzhU zL4(_9n}=nY7jH*qHx~oPwv5bvux{4a&IlT2jU9lXN!Hj91c6y&+aYL~H8v1Io2;?H z2-;Xsb~rDd}1Ht%Q&de|DfV#NTJ zyJG3MeMI)M)UKEl6Jcz0VIqtzt|sz5S)PcQaG%-?!~7S&=VJb=w!!f2lx?s!*ao|V zowH2Xpu`Y}m?(&{On!0t0L=L@wpZI2i;^}bE9D6N1LKnn1hTE9di-jeUR*@WR#`5R zfDU#(KY%}n_i)&-y!}DLbLuv(xi_}-LA^Kj(3q?D#!gh* z8ylW8xN*a*`-0@ppk>_`rrw5)$5S7z7)s-<5F|k zjGE(~g#k_N7D_&6&y|M&+}p57EQ6|yZkL*4J-*Gi8yhI6uuoGDGsi>H_1#i_5%;6} zb}H_b-2;U$W74`1V>YxK;TB7+-5T1blpR6hm*x7bMmS4F)*2gF2b9|^9F~2DpXL0f zIF76Fo~<`xnT+M9KC7v09_4E+cYNo-wAt>HazYE7a7>QefTduWcMT@ELi2I^FRm&G z?ufzR4CXb!$V;oLyd1!`$`MWFvLi`m7-_ij7KluckLh3Q`K^ynAJn?O1sceqhV(SovvWe;Wj4 z`9W>qBwSxwj!C7Wa>+)SJxQCqS#VSD%NpP4orDWdA8X~N*w|6ZLNA~ky9SE~3gwIz zaJ4#i0}Am7j$sOmy+61|9b9e>PQq&C3|1AO4d4KEN?V+A0Uk!#3eBmaxR&VK=gsk) zZscuR{<)r&?e!G3hIATR4hOK?hC{8eLXjGS({V^FZ|W<@)}QB0Q|!3p%CBuV$}jIE ztb(xJcoLQ8mhwY#V9Sm2^9at^EL)Js$5PztBnNK583o=}zM@JF7c1VaymAtKL^iHu z|0_z;UxU4mV(A0ou(xpt)6rD`%T%Y}#ujWZY*j_THFzi~@*!7Ye%?bB3THK+(y#gJdi6bp{it3;H-_d93h(=)+MCM9?{0k$;di&8+pw1s*Y}v( zZ`mt*Dc!xx%cn=6z3Q2JtMYeM%Du{;Q=Z2Dlo*HG(wAgPh>ew834L?#z<-bAQcv~g z%zaCnJa>^g5&Ki>#5r?cP$y#ZM4gx;6IkhbWCJite#p+1>U39Oq?hfZVo6}3uiSgc zbsXNsHl=GXt{ZIfZo(9QQxYCpOgw=NsXQq2iiB))$rhqYVL4i(>`5(?XkNy~x%7JM z&Oi1I2==DC)*`wM-o36J-n~N-Ry$cvWV$ld?Unmm_L$V5NgE04`O1_mzbWy#a4G63D zq>f`{S0V#%UHibBF?SbcZQMjZ-$izW@Nya4-3eBV93gA6qf%|l3`L}@mkO#BpqZ(D zzzIRhdTh*BxXEY*l;Aik)joZCQ|v9M z)8+7HZx;44c6pAszzX*}vE&BtG|*D)qbd3?bjyl9f_`|VZ@th4SPH$vwYKDFmvq+6 z(XAKaiVze|Ljl)=^2#sajABr9_J!rxTiGQYePQ`g?2Y__H5>3gHU28T4=EL5l2GCP z9y=r$XHQ_1+$ZC#tO<8vkUZfz+Z5YO1vtF@Mwt04R(hKtoM_=)3EdN(!W+E9aQFk? z4??k>hpjhI@%cXNT73uaK=(~#U+E^4@5;~X2W4O^Gd0F$S~)JBv_&5TEQTxX*1)AG zf$uflRYiAUpJ9{Grm`xMn8mRbuubVURVA-z0%(O?3(eCfv`_`5OevMs6E4~XVarOE zvl!6+g=6E zsWVywpOigFm5vkvH(+r}Ye>7LB5gxiVLDNWG6B93MSKKq-KuE?CUA;Y;3g-jKd5w4 z1gciu0B3)Tys(1oLPb)C#p|jfC6w;~RM?SEAbx)rWMwJlO1 zQ!?Y=Fj< zD?K81ywRR2G}Zl$>JLk?8mLGq#)b;Uio(id3eoMUE%cNlqi~jNR->~(bG!j|e~~W}p+W)~}Nd}cz(?+1!*^&mY2B4G@olHSxG6g0hDf@pjnZn;oMs*;qk$p6O zlbh-X{=3w~A zn1kE$Gv;7+o-t>4&-#OV4hI}{r7&18PempocCNTd%#!b1H_hsDl zt@f)p@oD`fjuqDo_i?hOTRCQl-Yt@=sC&QAob5FSRHkfokOlvLz7#3}aY5F_++h~p5GE{TP?&0flN zWRDAuSg@tpOL;+g&x{DZx8}o$QB@Bk&cwrrgLA?n_0x!v0o(CRVCa^}bLM%(wtE__ z8ys*7Pa`_AeyVyJ5m`Wb`hmoK?O`{)@)dI!>rtz4=YZQhZP;!6N4Q? zvd%iP@$4&}W-JL3>r;ZW3UTti%91Dt9$8$tC#{)0mH5ZOSr^W2860q=tOFDx%oB?< zf8&Y82=l~Z%76OABFu?s=xFxo501QjjU54KF?hN&;CuO7qIvuAYb~q{SM>wVm1`dV zjryRR)@y`uU$;8uSH~|0(vi0$<5%fpQaN)&3mjR9|Cjo%6Fvu?Wptgm?7;IdbtJ?S zF(z!`P>(Z4@NveCkt+glX5K!WhSD0`1daE5$Gq>QlwGGTJNl0Zs~aFc1`Q6Y^Xo9I z=;s$ixK=`SoTzSe%-fi&RF66OPi!Zu#~g#kwG-71!{%*}*`?BsZ3*ok9P@sV>AUOH zUPu4L0iwOvF(`I`Xm1=gZ)1efPHPA4Zyil@mGUM>|5Sy zt_RmRigI0rXB~$0!Gklw)sKj;RjH7&u>%=xk`B~SAV-C-TAlHda z4$t>Nu4%^{r`HK9+GEZ*FkUDx%K~l@~HOO!53Yr zaO}EKD)@mO)owo9&y{+{(SI|F;EZEXuBx$f(O`6246EZhwZ_qZEsh>?4BAj84P-7_ zo;o_B9gc2u^v}o9ZH__T{i=_)*R9BoI*6l%BDN9T^(un^9oecJ-O5| zCr_WHEp{JJr|eS=*209sB`UkbAU6zRcOqO!A~G-G3G@c)yff$%mvj(tF$rK{- zY|>{TgVS)xjs_irbO7j9 z_L%mMPML$vCzuOE~pLlB!Hi)KmjcWhoPNP|o>@ zdZN~(Tv)T;s@rT>*7w6WHTf@ivPqu+7s5ex`_!12v}~s54$`}cGut(Q$5A#d8`vi$ z!L9WSMs;j5C+XTAs+f`lx3|wo!rJSOta3&&0EtW4g!TE~`N;3gk^Xl+A|0h?13Ds^ zb^c#I!}~uuA8FZ4buxAPxK5!Tt2rB~i$4dC{-a5QTIM2kTkB)(Ynh4EZLg2@xoRHL z%gjSW!Ch}vZ!BTtSJN`{tJQ6N$ZmNUzbe-x!D#ogmZ+SrbX5kpPpjF=WyhQ|)n_XM z+E<^foN>%Kq$Vp}o0$m&PVnlEL{C?-^=VnW*2G^06fRe;^i$H7Q7S0VHT;;C_F$gk$9fsb zwJ(n;@19oHAG+H5-}PvfFO7G_qw4qn(4*IE)9-rpnr*^71tZg8%u_Iy9mPClsiXg) zN;k`>bx_Y!f^`=V+}gF}n4@>G>mhtxfyqa8WnL+`Pyl8hT=XKF%2$HG0$ z7XCM;1tp)zrdm#TXF2+q9L<>-;>cMXf>nwm#}W9o^b93WVJU?@wS}v329z&`gLN0> zZz38NV^%dk{8OB7rL}4H%_$t;Bgb#R@z4ofCAG48{}!zgIlc05WJK1vk`paNoONAD z=$^<$UE2%#2`C~Yu}z@k$~wpVi$Up!n?0Nx*$hvaBiG^n7#t&Vng3LspAx5!)GgbJ;h8WVLE#hChz1V68eH=agK$ z9=oPl>j!7|Eg9VmnW=X_4z90vuc#l{`IRE^Ww3sZfoY*j{!8iBSg@*ODe67a*>6MaA&{>$9(bbVNF}Pu5cK!M1uTN_< z|9stM3wuahSwC0PeN*Yq+%^AvK(mE6;&4`Z$x_AA;~hEOw%jHLhVOdw;*}9OvB80n zYpmlcua7`S?6^H^UDh`vvJRKb)F<75sdVSTx0QrjL8wNZabNKRI8atUa{fJa)9`8; zZ$n4+Yzy1%>8m5Zsb5cW{W$IyqD`T>B@q(ww*dffs+F}CsGG#lV12zn_&s1q);;U% z)sbH%FN0^*yAHoI!%yE0l71^}y&bpOPP2ktC!Yau_zOY~aGLANqqXTgC8w;>n z&A=suWdP|Dai_M_nX0$vtbyiEJ|z_ASen*T3>VB`WmDknjgLg>Q-6{-KHBz zD*d4)Z8|6Xd_RbHN}_CxInU@WV`kv$Ah9dUH!SOXRpTpdrndXTw<2R`fL-5EUU(e2 z{d#~jz!j+eW1D?(ODvMPvJnaVRT9{618Qhr9Cu`WQ*sM3leP1)bz^ZfLymrgqx1V( zY0a~5=_S^E1-ak4^oEbEd#v;>be$!4;|%HlRHN4S$VYx91vs+b;nXH0vrdm(c(&Ps zS77e2d6$IGNcr!35a3q#!CCu53s8v~B2Ki|W~&dhPwiPU6;=+zI}5XipcY@BRu8Qs z{TBNv+nQFM;@LL1-+}ZdBLjXJ+2wG0R%mWny)UJ$Rn`*elX8_WT0N>ue!=T-$u5{w zvQ+woobWgG;R)Jf{p9cwIXnl4agnOpr&?BhBeLCrBNrY^OU@3zO?73aDtR0ib4F$-i&g12jmYly z9N@6|UevyBC`4;yR&pRz7l`T~p_(0@AV1GbwUH|9fL+GU5jnxi&SBCYmpmkXlB|8K zvnE!ezKD_X0K@*0mr#L*ebWF2ArsDq+2Q!hA5z988xi^N?1|+v9Hz$&%O2X$G5>s{ ze@jp7Xf_A~>L6UbUY9;;WOgTH`;UmRLCG)Zc92@yNJq}_26Fx4+#bhm8*#Di{IKll z=<|QZ`$p3mOR}5LXv-RF6Pm+>;aQRrYH;Ml$VoCHtt+`1DkZJtD^R|!$5*xT9Gw{+ z)kpfL7TMtw@uTEU*t@>o2>i4r;614_st<+$Z{G$~(hi5wUo~1^uZx^EVO_~;G=QoI zu?2zd!zb6Vkb!o1_C8Lh`0!rOO_mnkn)_wt^M>_M@1vvVx zOKm$Wd&EzHxUQde%#odOzT|V5Ehm)ygmK)&@^_sVbt1p6^m^(RwC;`z@ZGF^1b&G; zMUIvhOS9#VSov@<5TLxJ#py++SpLxK`|;q46j?I zK}x<^WYl@9G*HPcL`Dx{m0C(}EHXMxtMoW-47t*=j>s5Qkbfm#Xa^ZH1ms`ICq>45 z0{K_+5s@*kLjIM!Uu0a7M*fw&TV#0%rgX8Aw}^a`$eBvsAaZMwQy;Me<<=FL=I8%TO#8>@~`CAL`I&Fe?&qat?{d9jkmh}=o!OeNnh z^6et0D0!gBokfmPa(|J#h&)=!Jw(1ke4ofEN**Y(L*ytW_ZNAX$fK3q zL*)BKj!^O)A`cfiM9CdQ9wBm&l5ZAyq{x9vZXxn0ku4=R7Wn~@kK+MWl)uQMMJ`tI z1+=v(4~o25$tOh~BXX{ikBB^0m@SuTZi}9H`_LA}5P%DY>!8Zjq1UEgUF+kyAu2R`Lb(y;G)%yjjU7MfQlCtK=ghr;5Bn z$@@i46M31EcZ-}Z@?s@#5n0|vR+_2g4I`kPDS45|b45OWPL;pNnIab}`AL!IiM(0K z9+96CIakS3MV>G63MIQlULf)^B|j?iLXj6Md5p+Ui=3(C`$hh<$SF!5DDpERM=80# z$XOzfR&o!K7l|C9fl6*6@^d0vN^UIjUqn8R3q>e@ zkr#_xtmF$Ai>Ev<@@6HU6!`^_bCrBVezb0~ol0OvrZz6{%`7M!O7dc4DuZg@=1enyqQ$jd}7R`Qb~zbW!&C3{4EOXOT7PZjxXkyj|$CGtBWFH`cP zA}<$tv69D#{I1BEO1@v@_e4%n@<5T_7dcAF{YCyj|;q z{E^5(O1@d-k3|ktato0^5!q65W05}<`S@v7{vxjsxmd{;T0>qb@@6HU6!|lebCrBV zl)PKyRU$7|@)nW55IIxH8$|x6$SIH!{@?NmV64e9^5J9TXv#Ne zY|Ws2E9Hg^F;q$)S$SRq@)cj|A4X5sO!8@@0}IYnA9S_q{9criY4yonqr*CsBbw_U z*HI1`t0Qbl*`!;aaziR!PuZkLGpx=sQsC2A2i5}S?~G5|vto!oP?yKwe@OqpAfP_a zJg8%8M>&w;apor_LIX^tRsI$;KGdWd{^Ds@1+OrE`+@bnbh_Ia9%gu!Vg26v_)QEu zG3?E7D8um#;~7q8_%y>M4But=1;h0Ww=+D<@GQgneV9JOP7Hf99LjJ!!+3_%89vQ$ z3Bz|8e!*}(!|esT&u}}#!wk44-DWgyFjkzhJnY;dX|H8J=ZWKb+|^?8LA) z!=VhvGmK|Ao#E3AmoR*n;TH_oGu+PbFvGJ9>)*rl8FpgWo8eG~;~B;?oX+rRhD#W} z%kT?^>ltomc$nc?hV}1d`V2cU?9Ff}!|@E`8BS;TG{Yqf-(~m(!}SceGd#@jEW`Q{ zOrK#VhP@dMWjLN;Jj3Y>pJup(;kyjKV7Q*)c7}%;o@H1+lIb(-#IQF*dw>4_R@uxG zjQwVuHr$N!=D3kfcq0#(uoGo-zL8BhaF0G>LX4vdR14LJ4_Sq~uUt`60*t>(Mp#3J z9zJH)V66Q8P|o^&t^em}$OResn0c6%s=gzWV?FMK*r3jR!}^7U_UYR-$Q7L$7aQbG z4)TQc3hC1~EVfHfOk#BMW!>XzbhPmPO73kr+r9nv!{-W3uP6CKhgEUsUV zo_(X^`?|tHLwd*b42h174GRnH8{fN&H6kJTi8xRHpb;YmGu0}?{rr+jQP(*-#LDc?hriM;7YBzqRqtF=4J#rzz~w2aNrj$TP`rVr2Wk1L|Cz z-{)|=Hov{AQpGI!2OWW#=gLCrxAX&T`d&Z!TmA4ue)u^*ya@`vHhbFo;dlDs;owqF z9&4-pDGO}*jPs+P4jzD2#EKnS&-h0!>DOkD+&3cezjTX^e-32%d`mvyHq9@QZzb>h zN6puBUGp>ftj?OtLRUUz;9^fM?dhzsb&UFryK4OwIteC8kqQ7QNOgG*55#VFdF(2 zrINq1ThX@TK7|*lh%_24b9{HEgo8-IS(|m-+)++KB25bH$^`#vuKkTLA zOdS?eztj6#e*h03Gx`td2riS?LB1uPz#n-&c`$kA!&*Ox{BCgZXWDZ*{zP_6qo^Mw zH>2QV%H=WYZ+J!PC+onPPW|Id*XYlqzH$iSd4~(&SExVQ7XLExOdEfne1(mF+6DHb zzuMVO8}fj%*0S=*Z)dxZjam5=lDBBD_3xnl#pJ$D8klx;)Wp+8^8?gxdWTMTChPMG z^6uoFLp2zvleHqrr;?lcKaPAo`9kU^kPnxNjgM>;$!8Y%Me@n4KhKc6!fNWjLf)d6 z<~!*B)#ML_YyKqsE1yl|dk1R1it!&JzkjIaa$AsmD#&Nur}=yxSgr2V{<$(tgPvO5 zx`VvO{hB{RK9GDh`5UeEfl=fWTw4Dp?3&7F5_xY9gkh|=iR4q~Y5l<*nEyonNsi{j zbu`vu@(Oa<;Fixn$ctap`d;RD4f*nyHSb8j6_NM-o91uR&qvAk{GIxYXC=<7tv_Gu zhwt#ifAPc5gG;+^^07|04`lf?hF!I#+ujck^TRiW>hc}1lKEnJ4fmt}2)Oi1x$J); zlr^}UO7WIfV1h2dhUCSJKb8}eXz~UaH+Pb9xUo<$zNLF@mU z{J+R=+o*X5me*nOLEmXUgS-VQw)8)%H)+0<@$@Et_shk$-<$$MY@u4fVDDk~5nBiRE}Jc|Gb6r~ZB9qsga|CzG!xM@>?nzmn(M z_Xw1VgdGk^F2`n8qIUU2c7!{)cn{k7i?p4aiuqdf!3<0>@o z#B?W+XJ63#&(wc{yv0S$kCXq2yv`-f8!?_7^6M{a-b4r1Yvir3XwaGZE6MMbCn@kT z{Xn0)wf)bK8-E`0Lm<##6#{@4Z1AG{jFlYpGupq~lpf`!|vQ^)}64rQdduhx}1< zGavqyJdqs3hx%M0Uux5Dg%hQH?Xv0LPTp81%=mDd$m&IYhy%VUm%-%aHa^NveuuN% zFHt{>exBq}N^`=>$mffSdS)clt?x+1U-^h4o4blC>XtsB=F7AX0 zLv8ib^s7;}{^0`Rk#ZjvspG$c@!#Voo(KK#1V8*~Km1*!BYw-Aqzlm4|DGTH)qeP9 zKm3Rve%=pnfby)(Z_WMiE2FjFCO)kFmcV-0#*cn`aLMlq=C=d=ypQob{fLg|BgT{b zppJhWIi_3cBlWH}J5Bjcv6b)Yb~>KhC+he)O|W*8huQe|W3>J@ax`c4ndB$kL~v;r zEhp*tXHkC!`S!;(ABcI6e4Zm;Y}0>>yb1LuYjx{$@>KE|@++`Y#>W)qH;DWP=-1|- zpZ##-x5YNUt-yw(w2K#FwEd=C9QPAX9dv-TrF*>}uG4L0EqekJ5`0iC)u%1=#h=^b zb-HGq7zQr&XAA3(*NT5pgS z+4yqukH|agWUbH0ciQqB^|1Ey#cA3ebVus*J$Zyj^N!?e5l?M?{*Lh%+wA#~{Gg2= zB`>k@OXNpwya~p0@xyU)HdCt|`DvSeSMu{VK7jm^jgKI=xZz~{Jc+!njsKbcIY|GQ z{fA`e*XEz;j3lXf`p;L` z@0s%L;z$1;aH$W)%$Mxf%O{3B>@V8>JIEbFb^Pz!;?MCDfA_~&e-`U_Rx_Tz`O)9Z z{I+{R>z7jhGw54b2jwzdk>v9u`DPohuLi`HRPM63+ISt-lia`6)OV5xy;PIu7=77bulD)M z)VDP?`7!ckOKS4=6LtNx$3KePu0M}F*Ou-|!)^BeL>^_cCk=k6t^Fpn`DDiP7Tf#R0e>obm4^54%_EGaBnU4DFJy2=YVJzmvQp?fC<_Jo_#4sLk|` zS?`R2erKqa2zFKZr;b&-7j?I#|y571dItl%?Ced8%|uHTQm zuem%>D<88D@QzL2>;nW*AKj+w7Pdvt-89#pztmE;pV?Ekmmv2-X z&4;mJzu_mIuV_!ZZd%{;&xgo^$>n|~`2^rbFX<0w+Wd1PxcK2*sE((*R=4g^`mL-8 z_P4qeEbBh%KhRz4^K!U)LRtFrzPA2(8siyYjPG&)v*b@ieiHXXqGAc`ZxDiFKM= z_UA@&pwF(FG3%hn5C2v1rq(OGZ_q(Q+hM?M0Y6-POn2~RJnBhacv265YT1Y+#*s&J zU*#^Q9z*_wzm>cpxv}#C`SmvaTQRPR zoz2NjI~_sZmfYBxLLN;18U6eYc`WbuJ53&dd5y%s{d#SusfS(3d-8(wPU=UIUw=c* z^2#QUB{%u~C;3zxKS-WJZv4<39f;VIYSX`)JcHc$!A(Ao-1y;D@@H-F{Db@j8_y+w z#TNf|@@3?@SGTPF`ihQ+= zXOidI_*>-bZSm)lZzg|~<@+P~JG?I_h<2VP&nGwQsT-gm`D(UT`=NyTx0BxysJY44 z5b`kcbn3gvKOmn?o z=TqPK?QZf7HvTyIW*eVRzMb6o z?H%%Ba?`%nksq@0gXBlZ$I#BYf7JF5zNwBP#?H3n_uF_+^3gUvl6<_4$CFRA@mb_9 z8-JdBij99jo^0c5$kWJ8|F(;KmW}^PzJT2Ltv)6I(jI5sto`sL{nL*;%cehq{4Djm zQ2$Bt=WP1Vk+=VYjz60EYsg=;>2D^_q`tA!NB)XU|E7-G{)IOEVdP6~`s2tKQ9s+* zPyUuoe-U{r-q&sPSCPMO(=R0dlJ|8i2+#?Xk$+767n$xA@`%>jKgg!~wC<$y6-(ZY z{C4u^$?K6jjQ*hO6fyTHO(tJLeUok`d6zaiU6`RhOUXx(oB8c$XY{&Z~d!I*ObfsU!JZ;%HM(fR|apGzK3{t@{vwLXy<0HsFvhjK3pV{~- z@-J=tF!|RueiIs|_%q+ehmmiv@tNeC$s00XKJr(2y%?hUEWcCYzxs1sSDo$z`qTKK zBl+VtK9oGx#^cDR+W6Dt2S3sUW#WI2{D_TzLw?-G50Rg>@p@=z;k-uV#r!E!_V$T~k-huoa*I!d_dLPjgKH7ZR4@z<86E<`9yM4UN4eIlbd?GoIH^n#iu@Bk&obg&L*C% zJ**?0!| z6dQk$Jek~-%X{QAZTepFIX3VGj+>))l_WQ`l3{rOC1&5fUDl0RqTuaLiF<6n}$My_MCtXj(^uHjFwDH~K_u06Qd?dN4KOG{q{S$2ZqsSk(@h8b+ZTxNWsW$!{d5Vpn zC7*8NK?Aitv&h$3`qPK}-fr6S=gG&A_vx;=sXuAtDdeWy7n4u7@sG)8+4wi)Pucj- zgnIr8VoO+5)5r1SN>O}`8IUu`^+e5s93Ab*?O)RPqQf7tZ1$yeI=yX610@jUW1 zd&To;84KT3}3tv;WTcfIR6C7bz1 zK6xnlAE>{Zd<6Ln@>AsNY`nz~ov;3!zZw7EK|a{VhmwycH}&vw@`*P733)j8$Bcd< z`5+q)9jeFcUL3EDJ+r`Newb#{Uqb$*jeka-Y2%y7pSJNb@@H+l-hDdV7s!o0x0AnS z;{(axBCkjPk0pQ4#uLatA~*f~JjHo(wIGZ7>3m-4Mjm^cd+Nc{#5?T7WTnwxgif&44RGmHBD$Xg86`t`|U$=lfY^W?YM_!{zH z8$U{ZhmE%$rtJ(NZ^(4-C+|yc{G3WY*v6NUk0Kw%cs7&2PL5@f{@kzA-9o;IxGVWz zd7r}_~boV)|M@k1f`9X9?8c@J{q9}5*;?0IIiwtpV|a2t6an|?3yMh|NJ z1nNIXKES3wiTqyP2lW@~Pa}`C=|4rjX@ZV_0rmezKGdeag1iUgZ%X}5Yh$H~IaPe7lVolK)6^=Ae7MjKx|R;SyBi{#JP;vevkwx=)WA6Zl;D+vFZU@%-Bl zFJ?S%^1jvx#&ZE&_7893dPL_Ad7YqnkZoV_4)WnPKA3!rjZY$f#KzwSm+^NoIi}_6 zbNwTlcj5dnh5Tmn+vSCX_&h=0k^BYnY2+b_Q>Yg7rT!ppaCYLcA%65n`r%_4PXgl! zWjroF`ctX@8uh2MKFsu^Kacu>d~Ur5~9-%O#Dx(WAN?Um`dCPkZv$$xXW(K>n7EKSKUKxv8IllXU#Y zcWd$_(;ZAcb&uv<$WzH*B#$P4oBTAn85j1DKYLlnW9~a@@VHL5g8Ie}eaN5vQR|z2 z<_Yo@2$Z*cqI8A8=p?T&&J;;|Ha04k{=^C^&}7lB>lsA@;#RR3?NVZS?6~y zc@lXUxyjcX+|`T#{(HzD zJA9oYhCfDrjNFvt9P)GIro7%DzwZ|vkMV<-e1wf3C4bPyZ;aD+j<@l9$RD$D7kQM8 zKTRHI;~$bwwedo7H@PXVU2ZN*VE7U zkiT|Z+uu7tABZF0d_wca-3XPslr6*70K+qdr^6=aQTF&yg>*@eYaF{y>h`of*&l zXS?U9r-_49}bewsIT?SdvBU1YkR^PYHr@E*^xZFk>*_)Pb7JwywDgQ zlV2CP$Ho_u&m=c~_=G%@ys?T6@4+U2mfYBLko@KAYua;#Jikdzd)m8ozBbr+B>84? zV^0G4PI6<dR~KW>ZvH2HaQR9E$Bf(4Ycub8IV{@LVrk{6TDB)^Y* z0^iSI?2K2OO4S0lAD-riKk0{O`r%Le;m`ZwuPWZuYSTjJH=>R<_Dk{!Ej2&ZLi1n9 zhup5YgL!L;g{1f`hg{zKAfEx`W&O3j={H>DgYVY-6RmD#k)I@AOa31D=L59<%jDma z4-41)d-9{?t@-|k=H$&h+Ro18roD70?@q3JIm;SF9%|E1Chue8+2r9i{t@{g^6P2O zR`OBgrv4lUmwkr7p7oTbdGC6?RI&f+PYXZ1Ex7C#Ir!Xq2u}_7qyL~E{)itQ?}tC> zhv)d=R`+CgT3mPYH*XSR??y(uksToOD_sPlW-T7y7Y6wn`7NA;+d8O(UjGtNfXio>=)iHQi;!R!S-E89jRR>e16mo#shP z3a#WZN$%-ZY!53n5e4a-9_>j>K+#QRN+~^^v982QG1i^#LcK_hiB636AgwfWLid3Q zl}af+YMhgVKmAmhTI#eOReC+0A(eud(bpM+S`Zgo1J=g+I_1w<)lk!@`&GPB3D!Cj zyGN^RRzkE{XKGS(VxrUSiH-AgcO^#0Jdv1yN}n2|U7wH&15m^X$a41)l_$m}CMHad zPIG&DSXHIzjI=yB*AthP=Em7h@wC$uotEHs!r=+Y(*;B)#n#lSjLLE+$0emsi$w{= zCgHa#spwdo8iP9FoMIY*R7(X|$)tKn{jLFxtaL;}fNnBMPjN#g$0f&k5)gl?w54j2 z6ApPIP9oPoT;0&Sq|Q@iOX4XzEESVC0pi*GuEA)99arhbM zM38`XZ>9I_;lwC{MvKEHCW)e(ik!7v#i@XEMgj(!nQjbQDpka2nn0pkC6F>h)hK;9 z0mq%madEM!XoAA6nulX?oY~d~s^qFZ7HnqCae${(sZ<+!q^*aBNG12vv;F?bx_7NL z_Ga_P|JX*4@!3#o#gzD5k7T_+mj}~L)w+Uov8^a!g_?&PHXmf zsR@&lMGt|KV=BZa;xbaA6Fm6kPKh(eA(;`ry1MqNbBgM320t*e$LKLbh7Oxx(fsON zGiNfifC?xS%P2Wf9i=CBx-!z@QcV;IacS{ROaSFP!|+q;niKOq##3F(95Mx}JSo}K zF6HP@1xy)$=oXA0=pAF-Ny?C#lIruE3Gu4-Vo0v0i0NBA8c8axoU?lTk zmai*{D=uwDTwHP}T!7xd(CD;8OjXk`)PW@7uW}~3-6^5?o$QWrr(nTQ347R1>1~gr zcbH{n6f={OWDZ?zYLkj&GkR1Tt!nKaoK!QN+HWf9ZYDmiS12kQa-W72Q7_^>tdJ%$ zF+|T?emlD9A(&5In`Y=WYxZzr`gKjI_q*me`#JkvW1OM=oT1mM+q3UAn+nyQeXrGo z9-+N^_jZP=;M&ef>e1_36?VVRs-p=pPozX+?I9hu$rP}P=p~tAta^TeCPMim8URG3pM}M!S*`mRYZd_7&T4JhmdUxG#{8plvg(hGLQn?bC zoalC8FD&eL&#|b9O+I}}&)+=7Ut8qKy?*m#dtYJ8u~WBLoojfJ*-uHEg4JiN6DvW3 zR2!7lOn0@Up`uWu0nf$FGy?Xpoo?4u+3cYz;=(Y21qs$L)lh64Je?kc9Yc73=$Ocn zL!3iK4R$&q#mtO$s%9i>gUX^wPxfGoJ{9G!%yT*s<4p7qTmm^~c%oBMWcyrUMpG$N zZQ`4zUh6h{?0SF^XfURoK99wld4yG*;cC252;m1<&_T;Q>_h5CQeMr-*H>#qAKri8)RbqE!E#_ z8-AkaIoA?>tyRHKw6#|Vf6BF13qQ)WR1QCyzgb26oMWpfaxu4NgA{U=BLt>+5|XfY zI32rcdY&zpPpbd^KRUa57|D(zJR&0FBtU`y>$7-NRAK^0SN&CAtFSG01;uns;=s;>aOnh<}97x zPS;n})zv?*f2!;0sW4_&v`J=A)r{F5At!JI2sACn&VkZ~80v56d~Vei+aSi7^Ltpz zM|l%!RBa;(-Y;uuchcIe#Vhf^1CLg7H+o{QkqiZ)JdbZjEBi5ePLX%^ICa7~LKovW( zGtnnZO^``zi=4i}31DqrnS#heTM@vSEA5}1tX%0R5%Y{QY&KOhlLV)OuZW_~8;vkN z9%)i(qTD1RhcF$kEe*Ce(z5>bxR_Kw;l&Oedudfuy4gIGRc?Me?{IiYbz8FpNdqYX zT8%YRj|jdzrPcBIObG#+_I!?l^g&5FEc0}*C=z6UPvmK#I!UTkFWZZXh`4MTc{$Zm zs6kM=#c`=sXw6Wvb+9gfL+EM2;%ZfBi&`aMpisXRH!Rq6KOR_0Fc4s;rLGss&-FYr zYO5Y*-?vm_I^L22HAEFFK@QERu5Nz$U^IKvUCH}H5$PB;JE@W5ojURr zW|>vNv5gAS0&wCF&$hr7@L+R52l^Z1!KX1PSn4(82Y>G zWtcficM6icb0EqI_g1!d#-=nnEkA-DZ*4EHHsFX^p*lLczF4!n+VT$EUOb6L9`8F?YSo=L8GE~Q&VZ%Ju;iE5agc#-u6H$1Ku-as$N4L@lf962U}c?^rKge7I|?Z|)JKV9 zbq?||wp9qrfeDp(T@qH4JHHM>h3 zad|CuKXDnnbT{NOYqba~+NWk`JhzB)Z z|1w*&FUW*yh0STKOk*0zuQ%@OnS0x?EY-COOQ^FkG%dGD%GXUIn%_8%xT;eV3$a_b zHr?;hSc==Dv4o+SP+rr79Gl!P^nEu(42+g76!i3-EK*2^y$~}s?uATz?Pta-1fzd` z%Y}jnP|G>po}6I9fJR5&{q$>betmJi+~AT8W-{ciqHiU-{F1KT;Dvp;eT26r-_5xX z7~L{TbN^j}oUXTc?+Jq11l^~iffaY;^d7*1ZslDbFU~2u2+g<5;=3Qu1t9P!dkBb-Ik)gnAD=oAajGqeQJn7l^6_~NZQ zco!reS%s5x3jukWq~P_%t;C=PIlg+Rf3o?Koz`qia_vF>D*;I2cKJXPRv}DM3r@SU z%9a5@ey)@(1GuvdE-jzEg^SB{J!^fCCleKhM=kq;iRtBCQ_(k=#64II1Sp^@f#xP| z?5uJ?RZNg^CGvEgeL*Vr%MC7_;*ffvVu5s(M8BGnQXpL^IU{zETOQk!^GfY3Z5o=T zo}YJ=$N5%FjHe z1+UP`c9>PK$E?~JWGzPeRIeGVumT)+nu6%dnCLcK=s~|>`l#cqaEvk4b1bH>X>Q79 zf2cND!Sv;1eI~mE#v|>oGq73ixL+8dQ@|{7qGK45Q^-Nn9*{b{X!Kqvw4e)sxH>sq zBJ@C&sWkbrs*(!sb%kyZP(srTdhNaQdO&j6x^vaEjj@oL%yV;UxeBS_$^!e1Fmv}I zSxTqXWf2{E=I=GJET99Zsv4GUQ)uW6QvG^G+Qh_Y+^j9iGO=Br8JZjHOnUmWM=eKz zw0U=Mvz~>^8^y>o95aO4+;s{Y3)^#kt=5i($xYB+Y4TO^dYM(uz1y?gLTk=o3n@CG zE!6rj)=)a0y#>*>3oS)9g(kQY_##0TrfBa7campGXpVFT9^=anF=O~@j8=L>p}XKp z%$Zpq2`{Y0Hcl17ppF4S_DX7nDMeiqXmiCk$*f}o9aV1w9@KY(9XEgm-fs~tbh3#w zEK=jH%GBa|=fPUf>|3N}(*^Uk>gKvc?3jl?%ic2+`0WXF&sFa4gYb0+*HXBiySlQP zvW#8hMg>PO$+D+-XRF+9k4==(do@ph@8YV^iC+m$aKyc#Yo*5XV_vJdTE2zZCSOaK zX;R|Yqva6Xw}x?z5#DXwm7A@8aL~ve?XZz4?U<{iTvkmeF+o~V)eTz~zadx@&T&Rs z9Vwbf(BdfB7n6atn-xbFi8qs(l$uu4f=E`koe;4#m}XBUuv_CUzDc;rPMjmAfR;^9 zymC3(rCI+vr$Iwde?!Nv_pL)>n(Q@~NL)4}jNPBMOq;vz{G3UC&$>bfMD7rnf6>jr zs6@!43rPe&m927|0qL|=wP@RBmD0Ef+PpglA`UWW%bLfqO)F@3kApR#D@7JOO5_c~ z#pu9k8ewS_A$8O&H2V!_UuNF}B@8IcF3t2goKTihy<(fLU(tj4Q-$c-w8HTXtf}l6 zG@U2I=4MQBw6v-^I@$S91%bx)P(@y=I;rY!%y)7`mGl-XRmO7noX_R=WZ{#9F;Ax= zx~88ncKbfy(o}YDYeKB+jipPJj*d$1>Z*VVofQ_>uu{9r)mUeWX*9OH3MM3WLuS;k zPWP*eg*wAifgN*Y?ykKuV!~h<=W9&{wS(&RjwB=Wog4EdSz>qX+=W$KC9ZAf;uN^3 zgo98YBOytk&z1sx*o@RW)}}S#$Q(y`d0Czm55T146FD5R-NpTWS*+ksKAl629^XaG zk>qZZPT}-~?Z_PH@eD#x$6E^LK@l7l8fbuH2f)QQ1vL|#I^!T}i3=Wc!8pY5-5Vj<;B^fknjL)Fv~(fWd&Vdm>=l)>=}bb z&PUZLgR}LWEyC2%20l~Imv7^BEx9+u^+ij>Ry7CNl;KcELmFPu7}87CB?f6avPO8N z>3CmaI+f`ccGWm=9byEQ$a4ARH{?j+zvf|06uUhbs3Xl(9zpUp=nM1U61a?GQq7lt zvHQU_`bC*N53R!`rUK;o?KJ!ua^OPG%R=gFAFy*CtF9L5L^AKrMN8x<9=wn3l6wlS zSDv(*r|`N8?qA7kFWf87zIn{W_ipo*KH2JIH?XJ5%p2HRhE~0{i+7x+xZ(x;6qmMUH_M!2YUjdJ9Q6kNB)+qYKgDNnp3cF#GoU#P&Q5%{ zMt2@?U5q{H;CP6IiMCw_p*f4R0hdk_m?+&{HtPb|tt_IZsdFefod-(DvJpbA$VK8s zM!JePl0h@K6cBxc>KcdNS=ij>?z{CZnic ziFX$R2kpz@YCAe&Z6imFuO2!`(4-t)Y&{beG_FWm(83~ErNZY=8x2_1WcBSe+M=cZVlA&h_~v7>WJN^5Njy@zEn zr_0}OyzO9cl9mTF#ch{%&5~vWZZ^sX3bYG_k>q-j zFvNBi2#r?&MdJ2#SUVOFqA64W%C($MEFUblE5wz?m&9;s5m#33EU%6^0G{1UkR#R* zJ4+r_O$NH{xDt8*z0UZi;cjDlQY51aXiZ6L=Ah1M$izv9%d9;d)DbQ&*6qIbZS(i1u|j946N*w)9bC(R02otvP$vrSwRY~ z#qrIt&BBF zUlpp3=~?eHb>L&6nzd>=E>MSBYc_^;s95hU?;~dN5?}M{K?21cRReQ@=B zln0jG244|7g+neHGGG4D(>V?uu0OEw$v{nmV(>?yPd8+FlqB9kN3VYO^{;&EwXe3{ zS=~2h z&ksNR@KX6Vhl!xi&!*4IX8DTK=jQ?cpW%P}wZyN_=h9CuBjumI!Yhe*yo7)MG5k-3 zU!VW|Si)+4s=rF0Dj*e={;TgKiay`@MEb3C&0n9dflMY-`txrmygq;Qdit&Zm(ObJ z&&8Ygi)1PP)88eMK5ta^Q~lNc-xK~<65HZ~-={zHc_<$yCix%7zncF9X{6IF{Nw-r z?4R%aRDR3j(EnWEGvmy!`oHu2R6>28ecCgq-8A)w75~2;C4POr{7{kUsrqZ`kA+{q zvwZlGq{-pGlbqEH(x8RmIc1dRPw*t9@<07TGWgTarRQV)kh0)!$WtGW@dxp1E{AU> zzQcp`{DuPMS@Zu4>C{A(|6SpKSNLmuUHl_>tE&m25DCR z=f9oweqO!{UFTQ-e!t?sDf~Bu|F20LWzGN9{2w6I=6_?I7;e0jp6_bIO6&{OTYfJ7 zfImp4mjCDS9qK1vO8kFUpge2-KOvp+zggjw|JPNzn3H*k^cVcARAi1fUQYQxJmsGY y>IUzFSQd5bf*jfNmz7n8R;YhJBtuVKy;k3 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

    NSp%kj?1EW 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 BhT;GK literal 0 HcmV?d00001 diff --git a/example/android/third_party/secp256k1/armv7/libsecp256k1.so b/example/android/third_party/secp256k1/armv7/libsecp256k1.so new file mode 100644 index 0000000000000000000000000000000000000000..b5d939abd19d5951399ff0039fa6a8aaf52e432d GIT binary patch literal 136228 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%0D9RAIr7x5 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 ZUy%Hzx8`dj4zV*|iEd}9L8 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

    l}VVu8XnF*Iu& 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

    vH!zj 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

    9gFw|6=%V%Kfya$d4FEl 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 literal 0 HcmV?d00001 diff --git a/example/android/third_party/secp256k1/i686/libsecp256k1.so b/example/android/third_party/secp256k1/i686/libsecp256k1.so new file mode 100644 index 0000000000000000000000000000000000000000..e245a72429a002fcf9040ab800137f725deb0779 GIT binary patch literal 386152 zcmb@r1yr5M(k{Glg1fti1b2eFySr`N-5r9vdywGn?jZ>d3GM`k;BNnBCYdwmocZo| z*Ij?JYSsI6Nmo}(HQ*;IBL)Tr2Ke0|01$xRh!xb?vI_Nwh!sErfCJC~hyVltXi(3K z>^BL33|G!z5<=`N-JRmqAFXT_^0pS;Vk-z9FZ8@9#r+)$Xf5ol< zl3$>L0e%xG6u=Ap9!C)*2f6vL_Q&|3-WNS*P`tk>4TN9lrT-;1SP%t+=p|2rwkD2t z7A61^(6=Kqn-PfpKQ~S;77i9Jmj7q_|1^Aw?{`B3eSntcul9lo|3U!33-0(2-2Wf= z^WQKk=zIKc_{DzqKQQ>;0(g-Ny(I5fd%?>u-@;%3a}YxVAOMCz`T}BL0NYe#y~6c5w}0 zfE&=pd9hap`8D7M17QC0U+{v3zyO)Q@F2+EKNJi=`fEHH5KjW_@jv530+52@LlFT3 zc>mJZ00|~4!2l4T{ulpTAp13UFhJlhIXFnZ76k@S`sI%S)K3B$|J^US4~YAN@Zzud z{Xl-!K>m$?$?ZV?NI;#&zvlB1gnNR)08PKfBLVprNB{#c{?dQ*GT*<&3k2!Kf&9t* zk|%@w_^W^cz>)uqcMpWuKuXcS{PTeP)ue&}nnC zAUhOsFn}H?t`~ht5Ef7Xt?#e+R6zaq9$)~fU;ZOOI4%H`-(UKhAYKy*!oT!iPVayJ zfPv2O|Gz&rpgjFPYsQEm02DfR8j}!6fB*{sB@hKHE*J#`9E`$%Hdp`v`Pk| zL;@me5WN9W)Q3@FxsR9DF+#N!eQgRkU_Z(d=Tk=xiB`l`tu@&gO}F;Q#SqLIvdC+5 zIhWt3cJ{0ph}l7g^%NYJ>Qo{uOb210BwxzJ^n%Wk3j#S|KDb80(5eAwEHJ> zTf3Ls7~9#{|AUYJ*~|&(tZ!j$4Ky>f);9)C(8$pEpVI!K2AZ&)<3A}m89N#}8=LDp z*&7-I^?zmSU(53E;{Of>XsmDVVq^vM(6={qbo%=O{7d2lbhP+$$AIz&3g&Nf1R9$- z8G;tr%+}D^#S!?Y6MfL~{I5DM$uczlKl%D=*#E`fzx4ihpSE_6pq=#ZJNM5yxPm5W z`uDZ{*VO)PF8ZL{zNG6P^nYjazZT&om5vs!FJ`u&#s0T_{;xFuqv)5Jvm4ORO5f1L zUYzK-T6u>`kuD^%(ZwdKZ=zr_CwX+4CD^nL+V`mFHTYX1U zV|FeMuK!uV1ZZmLV(kpDwlFfLcd`S>ND2wR02AvM1p4^vY`)+>-t8}MTx(FRf8ox* zxc@I6_KUx~1zzMYZ-MlyNfphD#g;xM3^?Eb<*70&yG zgKD+^3nvA=tzY;{DSY9ex*7GtL2sD27Y=fm^uj@fH0_1Mfd=?n>o|Eves}`W^FNd4 z(=+zn^S|i%`5EHx1oj`zZ2OgENR?T;9^f)ZuuV#0`w?{frf&FhkFH!jD(2ryO@xW@{-7@%E$mD zZCyc^kqL>ZwV|04fY#2%+1|z38fZ(x$4f#(^G7cU6^XK_umY$KOEc+<$q0%o>kCP$ z=nKosDkzC6D@)4Dy?$}WNWxFT!s0^0O~TIR@*1H1_kE^I0xFY0M^Mox0i6q{ml|(t z>_K8|4!X!lObsopfhOD}lumE}8z(as=D&jb<5Kwx{inx2s}_l&qnV2h(AN1+2mfQp zDw+zS`m%z`(yvK)dH-ude@Oo}BLL{qu(17WXbW3VR{lbyf1MwFQ=q#F$OQOR0Rf zU5?KBWNOQA9tP8Utazk z=r8!!RsL7cA1m{>VSl^$O923Al!k1R*c!W^uwH>B_6kr_5^E&w(K^UDt zN*xkK027+(MKXvT=Bp`$p@%{};NQd!aD)3N@i<7u*&8sY|`M zs`ie*;1IDzHeI7dQ#?4{48N{8#5H}lellf%{rQ2l0CUfI_G4qr5-J843&X&~EKRy6 zWQ}Oua7k7bLt_f66UAIHhW@*mcg! z`e=J-Wz6h%4q6&1n;{U3?qxoF1qku;tfNPLwHE|-q1 z$s!Gx*B%N&c{DUgQd<(xSAj$bre&yI)m?fS_}%SpEb1SO^AOLQiW%h)?r0(BEtH^h zFw>i=I$Ge{&dv;i=<&qTGapq1DU;J9Z4}7k12YTR<6K7teGF9Pc_EY=cp#s4_@yDA zA64W^$C_5RtTPY08f&AbTqix#8 zr=4Dcf2@oi6;C(2nUfxD&_nGd152+FTb(2650f{Z>hb4C7}89H>Qkp=gMzjcZ(9x! zl$Rn(neCv%?{luwp7NUq3t?8qws0v{0wP}neL@nKdDWa?7By-+6bn%mcyF$NXq1>4#qXm&?AYDrpbd}>)^5u;=XmLs?UF$P6-_CR<92-Lptj||rba8q{9}YKA zr+&met3;@t7>5WNEVT?kOlm=Co#TY&M@)N0 z+$ZszL{Sfr2g*7f0$=sdPz~qyz?6Gj^o}twaJ1B2j}jah1>;l3jUd3_Oco>v_vGUg z{`|q>(|=EGvZ6{DUfiH+#sICG`3W#JFB^mmNoKGlOfELWjVGav!CIB*Yk?0gb9cp; z1dFhPM<~$$)h=4|A%5R5hiUq#O{#?^otRB}ZA~uhw>sEv?(1*YJi|7`@ zs8bn6!|j}gmjAdFW54_Z@oa3R_>Tv<_#AI%Y8rC8gZ?|6ulecNpHwfLemKHC*8tIk zl9*9N4&JZG-}kV89IUXVJDChCnqQQdpgfndpN%mHhR;g%J$Stz-&y+=Y_oO~Yra>P z(uO4Cn?E%$Si(Q70CjE~Kka=Mvm5|w`NX!8#Vwu2%ea2*vj6LXpKGc9F{uT`7kE2j zk5o?GhgStob?m!6sd`72I1%>32=P=Yi4xd_>y6+}l0&a{;2jqYD~}J9@|Og{AN3fo zvTc=nsr*e*{rFAv$Opdr>7#v$3>jo6>YA-tUz21Vjr?@A`?lxjtoAk`Daw5*h(4 zbEIbd#^s9KnhN||3p|2&JRaT58!_(k8Fg#&pDCMcb-qPnQx~e!!3_A#5cLp?pS=Ql zTbs{1f8gCfeNu6qu2a{v#?tD+;Gx11;_~;s&kTGqG%~Xfz2X1os$`yO@`*~lC?T4y^aOenl zZF^_lT6vPHk#+6`W}&AnN~k1$Lbs(UBeu)B@Pe^?T^JFEc_J+OwfhK~Gq|4~yyNgA zutAN-X~LAs2OU`<$w5<0uo35^ro9{L9!j3N=C=0i{Kx(zm&MzvR=VwYGv8|9VZZc! zHqHm*qhz{?w#Og1b+bnP+S*fZU6k&WZl&Ty$&=-#QAo-4DZ!UbTXKg=W-G>CogvVM zxYBw>uFvC1^XGK!Uc?+5(fLj!qm*Ne%R?2bqDQQiVQ4KEGp&qcm?G+&^11U0`uHgP zl&3@4ZD9cJ`_}Y6#{;%vd0Yc9$w)z*mH0hN{&;C{*)RBvruPfs-Xrg+ofHA7bjxsC zXTj$JcwoD}Kq`GT0q4rKT)HtLd8CgA%3CWVTY_=gNtm`fW7=3`Ddp#3`rFYlIqOJG z?WbD@_01V-opE!M!5cem?>J+hV&2%b(5^;RoG-4(vMN`al99ewED{?*o@)jsAR!s# zV|E|I4b|z;^D`#g=z%5i@33p#jmd^I7;`?Q=EWgT5UwV-BD)?ICMSQ>3%Faa(r$X) z#x0WH+*^FCa~tczIexKQG_~SrPJ5966OV7uD=3Sr)FWu?smb%a+MU!PO#N7nMeds* zS>ezAeb+(dOEQhQWO~=q$0}U^`BWM-b?e~*fZFley;nj1lNqln@3GY~eWEXUj&=Xh zJX9@0|7t~q7WzHmCT{}9vi9DxqU;!nyYm+}3Up*~ry+4iuij??D>kxw1A}!3e$={n z?%*&d-?}$6g~f&}1s5vz^yYRPN)E&B+5gPNQ19I433RW<;v__4Ds<}v2yyj_Z5){pP38+M)8upmEQ%*#{q{| zNQ{msWOyA@9!m&hnDr}jfgx4LX)PrhZV>94TJ4PX;bb~*&AMpjdG1sfNz`ye%%VwZ zN}>~kCs!JkL%#CT%bi$tv9^T2-hm0Wz3lZN^H12mW^PWeyp4qi+@!u3@k;1L}7M3 z5lZR8*B5&J3ta8x{)lg<1o!j8x~F1I74+($*9<%zGO1EhaV2imocRO{xS3i~1SPwZ znF#73hDK>Ub_$DA%jw8|tkc6-Vkjz=CEj)KZK@GKSWB<|$LwpWa3toW-ExTF&uL?* zZoaKPKVnsp2@e@$=VU^K{wSVJ?1>dzE zK=ZLi_^4gDJtsb)XpS2%Ud>te(--^X-Vg-jS?Oi(8o7jiOBX$hs4izdA zm_-z+s%ah?2&u({bDHoXh_AE?uq84z-pMw<2)wT_NE@Oh)X0VyYjEdh+T<%<0uRIxZ)M-?e%NeYjuw7(Z2^?>*|- z_Z1my%EPQ{^3LpwWa1CyXsWz*8brIpc0YTR#tK?i2E8Ij_+WUopHmTXx5h=Srsk*@E z6ZPd6!Zwl%0{uvOyC?1hirzjBnaQf1Vgd-~(F9mrOuxyT zCl$LML_ay7rf|1CwY^sUy^Ff;*XJ*wYuhP&3hfKR7e9iy_^*J&o zOt~T_TF)to@y$8GjnGrrZUr3W@WyUmFVQ|^MivDxy2~s%x{JuTRicz-&YFe?t28&C zuf}#j%K&GsZ`2mb#vR|DdkRJvo2cN~jd!V@qAGqJwz0tG7d7Rh$i^WiWQ&kJ0KAd3 zIIRRGxcVSimaDgNwZxM`y{Vna32|66{&CJNhC{sNhe$-83eGQ_DkLu6_(NK@!AZ|4 zquKWo?0xG^!GO|2<%-)a)wX)IHrJW5_IE11F-=aGdVwmmZUIfO^&$Q8GxcjEc!|jIk;O<$ILZMi5Fd;s!MhtD!QZW#q(q{VIpqf(%ZD$xW%(y5 zFANO8kufV=r_)t_xyye0DD1vB%`joX+%Yg33MXt%Eb;#F0ah+}gdalkhCwkCVt^4P zD!;I0G_;Ux3f$Mr`Hz+P@3Io1Tlc48bU$oD(Ouh0XL z+@vX!&Ko#nJ_v7!aC(cc-$n{-=}&UMa<{tw0CpptBH9mIrC zu}#9B2yoIsKKzxZi6ur;C4R-XOP37!konLvKHd;8%h4sT)V=JDr#4BIm_UUu)E2oM zhT}2hmXe$CBxgm+8V*vvkoNg#SQj_yf!dWyhl@%^4ew{Q+AMGN@S{tS$$l=Gsgonb zc6D8@4li8?O%vs$3$voK+gJm3>5`0Sgj{76qG7S5@zI5gYm4@J7<37HvqO1(>I-V7 zs|^(Flm*)R+`euusR^>Odzhpr++6qI%|8Q$A)1t>`t2^Y*Y?(O7{7PcBD2oIEC$)* zs+lWU)qB--b=G0_31@+Nsfpf25)O=a9=y3d`xyic^en3+`CuWizO#I7mdd+C#_0im-$jhyj;aFP zKO00`@cSmn)5ejW#G*f=xA$Eyp?Y#KWlop!<%zAGt1|u+LA@3;@Li03-J5JAog#ke zQLqz&Zp}WxeXYqXxZKbk(9Q};b&qoDLyoJT7R$78$KQNk&(MM`ZbI|1c%vhcOX8ZO zf2RX&$wKZN=_=>L-0`{)p|=dz3LABT$#d@14l04RFkG|g8Qi-B1D+wul(LZkUz!b6 z_3zjn!HUZ>7E~(4$!C#dBYmAyB&`irP8gIdWG%p}PUPB1g{s&EjkY8T~@ zlY?J)Vpb1V`;0Z{W(XQG{iLdQ$9P0C>oGg zz>1uIY6ARzD5x)gZmU%p7Ca<7%Y6IweM6EY3^6O;@EeyKWKM)9gSwDUfN|eyaA4cu zX2Ui@Sb2)pdGYiYDK8;ExerdEEMFXz1tY_a-jH$(NKA@xHPfouY=+&a$C`4Fv_`)wh23D< zSvs?h!`BGSXYxsKBhmT0g6a>PCiZ9@D|Yi8lbAjXCcdxu@O<*k5LD>Z><>NKtvGP( z2R;tELl#?wj9{$JXdL6j{&BfWiP}vOv-ttJZFcCv7~khM-v%KS!vfb9!7?8b-jg5- zi{(l5usZvjCa%M+TSJ-q4u*Ks9|**!u7q&(i-E6o9o;HUL2HXZmqB_hktqzfra9{)wvOBpuq>a8k2)$7yDEjLbh%(YEYe79n}VmeV~g zeccs?;}(0OG8@{{f%FDWSe6zniS-dztm9jUP5d5L2F9D~LD?xp+Ci>DsmHw(FOBRE z^xhBlfno-EjT%i(q{=f2g7KmYegxkFRpiT3Q*}BzSuZVbp$_{S>m!k9V8~ zRNIaoS1v!WifFo?Lv0+x&WwkAG|hAEPPwU_aGFe2m}GnKLx$o7LQv2vGyzy8Z?EWF zrL$*xb46%@-*D|RV-fXb;a>Yf>wF!fm1V$(vR3ajaShT6!QZ%k&DZ^igKQzPq}a?q z0KA>{=Z(XXYR#v242GYVedm%xJaYUcp?)A%>D8|H&*`80*QUX|kCyLYP1=* z>ATIOC~YYany}1MyT8=2&ph-KzZ3oOE(f7^$Y(pol$x;#w^t~1?u3=qz;3h!F;CgV zIPa|%*vtS$u`4WW9l9kyn&1_(7iYwlG}}}5_qt92KE^KWvlXmRCK=R~vl7;Q=@#VE zKAE;lz&k#eZ+lS_GA;LF?hmF@jz6<1+h0>_X6ex^Tu%n$`Zxn9j7uIFX5j^mf|P{G zzjrcMlsJ%nqHhQg?Z_N4eYc$@mj1e9BiY?g@Fpkfx{J+%3qWiu0HcNXF;GyG^m~y$ zb_A4N;4z9GUPB^M^QWUDv$%*$=v^X>bsZCj_bT+KpM_rWocEcU$7cqRBWy+%m1`$M z+_I)GjpasX>{D-1%oO$mCgJsyhNO>ZVD3$Ir{*mt?;?jd+0jo?0w6>6qBtXmD%cT> z``2(Rv=+U>ZjHhhpu=f12`dA8f4b>*Z-8AndrvlnspJ04OMJI&IJvl8;Z}TyEjw-1 zHZ__6ol0;TKfbO1XksvN{871sr3Qtsj;4+(am}Mr%_LQZh_N3{{rZV}j6={K61GV6 zK)HEjqvjnpo;dCa?M=`pE7vV~McuWN8-_I7j6>=-RZBwr9fc@Ab`N{2*UjfN ztTr55&@fuy6SCfQ#9RXlbJGH7m9a}--PjB;_n2w_UHzWSWy#h)tnlRFl)dA&*kQUhP zl81Nr-#J)XA!II|igAm-M<{^@4^iQMGKMF@ivDp|mi8!LFJRG4|MoQmx%}4{pEkRC z$1!!Ojt|!`B8U_6Z8q!ORP0(6H1j6@_kvi;mIW$aEYLX0*CWg>YbysE<%QTcN`ok& zCag@zSxr3MLwuh4h`e6qpKnZowcHubZcz^oI!6QrT3j4C#gO5x2UrC7_e(2zV-0== z#nrxm31F?r!xTiTmpvh8LHY+Xd+YaTDqC5lO6v0bvEa80iZil{Z2_53vK#?a5PQwD zYsIXPr?|A6DaE#4Hmt?SI&U5a25m+N3B)osM6{?yBW~UxE|#F1$zvN}5q0i7PPEOg z@N5$droF;Pys_$&e}(!Kp3tBb_7+wUK7=_HFUk-4^*h6f61{po`E;=c3%6M@eCkdb zqPpmxBrz>>%@biXRAh3yls9rj#)VImCIpe3@$oT1TQ1Hj<5205W3!pa%d9NY%VH|! zA~S~70$oT3MHxxkJCZOsQfqg-g(DZ0pVB(3SL|EdDJ4R`Geq=Y*_k?T_=qT#W;FAs zC=>N~5hKz7P<{8mH3z0H;;eS~jNZOo57LZl7`Rx2{1nM_o(N&#;A*&mTUOMMpNCq4 zk>x_rT}`f^d7#Az;g%`zO?)2Rq@f+JU%@(6+$s1&5R_xZQJ^84CppGA_ z?i{hllf5ts1F7(Uq7BL^>eBU!9Z#yEgxjZu%rb95q9CeI)|hV;TIrwhN+EJ5bXaHb zdC811m`!lo=7xw=Z6l5z@87l#j)mt=eU)57_Cm?;tluKO`Jt?EpWEF z$_yNTB@$2xlRHG#G{VMw`#U+2-18J6TE1<~veXERf%=IC_iYNhoiGxmMt%+cCf zRIY?{Zk!rxD_Q?Jm|(&NM1U|AbMl7~JA%YdUglADz#k%cKfHlSSE|bZTVFSsYuy;| zb?f!c9O|Z>)`c0Fq=UPlCyd3fL0|?UsASFg{cP1w+qM{GTP%F^>fNE@tnf%pR7xoC zC{t|8d4;cpUvGrE`b3aBsiGs=FCrLn-u}o!0uH|uu=*yMjOasIi%;xY{}cYI4N&%! z=ujoe?3nR}wTCnhLyNVdrGQsKTDsxQr{#6h8U=ZX_=SAbhvV6?iKGGVY3WntE+`+h)I zdsT2Feone z%-b|`$y6sdkM{M)R_P8HtLAxGCsN8eLTlEC0dA30KvA-7>~-rsI;zgWJz?k;{~DD&_Gf zj$<2X_G^abRvc=|4MMAP%%`~ObJEaJQ=g;vBo6iv(U$vFwQG-)fy!MoryJGn>mvHM3rI7 zfMBWBsTiiiGAlIH?SACL@n9Pb<%je>)W|w4)Ze$2u_de?OC<5C&0@Pc-8=TgS=U1;ZYPmlajXb# z!nD+1Fa@5qg8?rrc&Rk_<08J1r03>ih`UYngdodzyCb>f@}>R4ZU142T7UL%K2>u( zr%7pwSLw!tvWJ=nZ-m3YecaA&cD3UYDz#h`ntns6Hi(~;+9Wi-&V6y{y~6rAe#pR= z6wc%c+A->9&iY(z7dCqRnEVKIjrxa;XJ#yHdkGiA>2l)Z8rL_N9^+!Np9=9%gpzW# z`3@OMtn$V_p<9hFQf@NAeyIN<@?By0OW^3GQ@wC~a_g5*OP<)oep9iTI_|g?xN%tb z1eqoEy?x&Mw0WTb+)f9#!N!AP+I=DuwC@Ba`B{!KxAL2z{8t~uxS@M&q8aZZo_SW~1>*`MTn zrz&9ruTm@k@y&RznpTrH*%HX`U0d}~{jSY=u?1F)SZi*FXX{9z#6SAUQJjXgjEYZQa~GT4OctXZ;f8<(#w_5p(# z^*WrV!M&Vyyz9bz46F^`$%|IbEzT*CiV2f{^(4*Wfb|fPw-t_$T+9rqPNS&9S)&AQ zEC;9R+8p((j34WA)O&+Y8{zX@Z;E~5KAeRM@o#LL1X6+meO>slN%1U<9~_7>=SaYx zE%~;vXDdHm5$Ef!Lg#*#Skj^BE51{WMZdeGRT=5Dlq8*=eZm&oWu*}ftVq};naB&j z)S|h9Y$N`Vbw&qpmtFM}3>0Y(@d4J?NyDnxzTd{?v@7#ylI90Wa zz^e#03}!6BuUiYyc`x2xGBL#bTqi^}$x6iqtwgkYoUC-_`TTC(kxl;`sKa2>{`icG z6GpDlAQ^LqfOw5*=-?p?BpH7*6kZXwe)1+$Y>8eFYtfDDAZqE_u-f#UB)aDf(Tuav z+RnWV@*+mVXb^PFVkEbRb^>Llv=VeIFhR(+JuEHSkfQCAe$@1Ac}|#V=ThdJ@})la z78ioXr&I{`;?cLny}*z5OD$7FrzA*<6`};n%r@;@!BtFprQts&+no;vS5CL{bA%|L zGJ$ba>(_vLB4ve*_f2iiLj!#6UQUOIxL3%Dvnu#=gVoPy$Otxza9Pb;EGVS`ugP4y zzM4>M7bhd->`?@nwDglOG%cD>kFp+KV$0y#ldjktIY~6?c&{@-NR8pB4WB}!5qxlN zjB8rm`6Y?P<)K9(~gGE35-K&aBB`T$>EPwF;oRe?Wp)#9dT;!d-1(VhJ!vPpkNhX$V z_cw5eZtx6591cx~@@TwkOrL0NHWUY;bZ3!otH!;#22&t|g*|>2FKbBY1V;*`X>4%t zq?GLW2)9ROM{JaWuh7rH*H_n^Y8HJ(b#}|bFn4Eqztz~+(iy0xU^$j8l-im=KH^St zjKO`KJI>ulDU|%9zkDEnRlrns|5m5;Xv|d+cF?d`2%!<8k;wyer!)Eb7a%#X3h`T;)4 z1N7LwzQX2IgIwg|DpLmK<_(65_unfWJ~KWhv5nOD#cZy8(1!0}E(8A-e+IJ!i4*N3 zh||lr%KDW7vaGJEpkWGOn8z5nFZS$}>c6w5wg<)BE?Vt-PrD_ShmLO|s(M6WdHbax zI1m@9Qo$hm2tx8X8DUhn7uz%;UCl~RcGHjY$$6MLpIo5>LBoQb%>j= zNg^WB&8HeH8Brxh8{6+E#&rivyw$wVa8bJ@=^quvdASXvjPtJcXeW~~&KOlXP}!FA zr9Txpf~BizGSjIsV7b>$*I8gNWJ_O!#4Ou(fNH{%a>*Vx|E<^jTBgvBa%UMt{{A66<;caF2quoB>y7a za$XC=ek8p{G{vO>q0QGD1H}i}b)sf3)UTGD?h4VN3+0F^k0S<4U2L_xHK>tt-qyIj z9utxt>K@)WYPM*UFa&k%@um=Zf6qc7M{wwj9>PD5{eG z)el#5gNnw{*-CEfld1dgkp|~`uX4TDXo}Xt4pwW6rmkiQ&XvR-K8iFKi0SKsRb9`H zZDe|MSce}uNG1~}e3mjiKhM=LXCbdG1q~i(feWSe&IO=b67k}Wz#fGKRh_j9hI&1s z_~l+8am{P^r4R|rN@v7tuze|0wQ(Si*3QqN1)cc&`6dyz8b|M26k*NxZ67ReO%O0UYBz5 z&id5N$!jmb{g{(sIirehTK$EQ?)#WDMKgMayXo;PmaUXSW=j{KeXQB(l{Vm*^vDpk z&c?Mx(53;rLzr|Q87t)7p*rtLHP=|!(Xcw5-iC!Jx<|_Pj1T%S+OSW#o;9%zQcd5Z zmT!HNy7ITJ$(Cw!YqtDp(eSSw!SFh}d=25P-9-_8H_3!&FdiB?vt%+Zwcaw)5dqnS0lt!+~@XIdSiOdI%x15R#I1WE5 zrrO+)Y>Fu)xUB2I=O$NGOf)o(Nu~Zc97MPjmSjR`S^;l2;0MC8zNXe+a9I7u#v@{? zJuZ@>_@qRXyLH}1O`^Gq1szS_WkXXRcJ>upb9km0O(hzy+L5aL+xrtZyyN%t^Va2B zy{%r@zGS;1qtwaJVV)yUglH~Dd!=J~@rUhiiE-}}lu+q0!KpH(7YE-6HFCi6(>_^F z7XA1_dF`K%B2#;n0(m&;a+YwCN*icevWoTW$Va`*s5f0O9c!6=WpXsMWeLgDiz9M^ z1}9*~2q$g-iq@#1ql2%(l?oo=I*%`Ub&`lexx1M#L+Mz@VZtZ#Q|m|ZPq8saDxQPM z--zh7MWLXalcyq#H$$uD#O1>(djw8(h^{5|Hd1Jb#$q!<`|w!xou_9DwI=6K(l0q) zQ3a}(M8D@mBrS*8E{_#4Ol#Vo+etGwST1`O_o`K6PP{u1cXD6OD46!yoWiS2xg|mEUe6Y-Bzt)^XwXWP+!d^aB9J&~0+L~hiov(6hbDxe|TuRW-Dj=L? zq+k1l{;i^HM5uFqzNcAnD`tWyZ5LQUITG??mrjCsQ z{aMnpsq8-KzS$5{EOD0$h1DPeO%u`kj;Y~x{}Io%A12+tenoC3TN)iRepjVu;So%P z?fzApAwu1)FI``ta#6vN(4Nc;Uz5Icnzc36RD@IYo;$Z!`UN?vg~1QXyDHyOl3TKJ zpJpXM9cmK3U4V)b`C0ZUTyZG}!kZSPbXBdqH2e$d8OgN+G%;AS#ynJY_OB>?Qa4LsB4D}5T=Qw1uphj8q$zf(!5wMF-~{Ggi6C1(R5RUkg?p{nC~ zr4e-b=#NEX`cid~~d_NUpdwdka#@!MiUmr-SCH0z*qa z*};mbK7Sn0kTyd%9=Wv}Ko&m=_NJInn#`*MXQqjoBRzQNd&JlB&pc&;@b%kULaQCN@2y9`DR^ z7-ZuO=&PzTQA9Ih@HCXOHTV+ZEt$?O3VmKe3({ z8W?r{UF&(j!Z4GrJx$cdCmoA^RNN$l74$TxXIn6pyqmZENp6YWY4>- zNknlQ``QKe)t`^zkE(FgX>o5T8nA8aDP1j!x0sveU+=F8C?{1cp=im|zzON|WpKoXPT zVS}*TXB5h`jwvNmQDr3(cP}A;h%IAG`IU7MFOn5E9!dHsyz(hs*JusxE9;nWEfRb) z$@kyFbIl73SKq17Ey4TBk9JFC&~F8Jz3yjBT&F2;#j4zHuh7tnKp1Hn=4o|IXrSl!E_cHW||F8gsO&l=`M+0N)K!x_Yjqa7fw1P#1+g^-ts zQC*b|JDF{^v{72>?qKTU+UEKUgGOnn#YzG-#^4Ic>RD0?zNnmR4dvKZ@eYa6+}s^! z%p?~6R@!lHZ())3_X39{(zIYhH0vRJ7-0;}eU_fzZv~-s(ng}{^@(oL-f#09dmLHl z4rThglW=1)Z$iErOeliV-DHJdk9hv9ORX*CNE0-iGZn^)M(q{Qtt7Kzi<*ziWS+^b zaZ~DWkzyYyVeAZ7)-aY)^$rrRGH8^^ubJm{Gd1+O3p?n~7q~5WgoAkmSOqZD~d7P2U!@tjZa-HiCemSzTIX)vmsG&J`ZRuykVXZ-e>$_8lXvE zo0jtK+^r+?etz-X(q_ROfsGg2rNyYiwoowev;{91C~wbf^~IDcg>$1boOjdfO7!g^ z)n2BduVwU)fgIiX1q~Bmg5PJAgOF-yzQ9oJ>54`!Cua^=)@>j$E_8X>#8%LKxk9Av z?rL&cr}Kpg(Z!}IxnHEVuz$DL>{qSERl(6I!l<@6vBmVAxWS@hC-)UE*IeCWgL%^a zSDft*o*2QQ2rFwstje9XdwK*!I=UuX(eFq;XdWyrI06bMxn>gsKQJbaQ|S`S9K0%< ztI;YiELW7;z#eW|?uqhILN=7Yr(;d^6x|5gh=luKB?Qewca66{_a!!mCE>`l{QZsX z%=a)^v1_7Jmg2!%2P{;5tw%-G-Mc5X%x%a<#+4+quQDG?>mImK;P~c9jo=4WG-5iJ z=Aef?V4b8oO{b)dVS$O7nu)8EwVUo+XbEwWgXY)($M;$%idsR0QouqY-k-HQlp)qi zV~YFH(2BCuh89(s{abPIHE!*iWBOnvsi_tvkSG}o%&SSY3KTz2KFObcEHqxoF|JCW zY1M1=8i&R$edkUUr1boj$TnTr*@S6*PH#`1h*`qbwq|R3u#WR{&Sn|7;3H3NxLW&| z;5P)Zh}97)V3%l)C)x~cvq}^xm?$-;4NXVZax0n*p*F)=pTI*YzN~o646^|0X%21R z8q_$MZnC$HSVLp8_3+qacK{-SaUL|x``PL2s4ZOBrSdO@^EyJ8TJE7!$ZCkoY$}^w zUm04gSVkH1Cj#TOs^>Vdk2>>B!f__ zG+!;yz|(c&VCpA_SF?xF0;T&8h9(%VVTkP!r+tgwwdHa;GPj4foRAOAi7~)Ud}1eX zK|oGX`flllV+^_5l;B1tN3=eVO%iY`*iitBVWrJlW~#KRNfg)L@ocf=T;AA+)t}qN z`S^M6^%LagUbuq8E~+`K3e$dJPUM*pFi|KhL>VB0bkm;~!@}^jzIJwj{ktcZ;%Kj} zqe#xa_C>>Rp?f_Pa3uP4IbCW@Vu$!$LdjfD=XW)Oijuy(MfRb}id9%0m=PnmG*2pOB07GP?Lyva>wGDo=5 z`!bQ+9Ebb%OK;i3iQygk&Kzn|)Dy;Aht&WP(+E|C+2-rW8|K`~H8H=Ck`v2yS!U@J zi>19HfBWE0`A+a`B{se~$~7(i<^j~h-r21!XFkv5tz0UL909haL}A}+s=(Is@?>p6 z949~_zX9uG>QGeIA>!vIc9ZZhy}q_)7HPB0ee$|~ru7MQyQ5AkKFCn@L)l?kIcoS7 zlL5(YFTwx?RakC-)yyKT!p20dNtQf=F}^^Ckr65BcLKJG$>*iFeAntjH6(d9N&=*X z_iF_`TfS%<&5h%x8O6c|(!5_)o$T6eN-Oe^%#Ft`^+#t9uk4D$X|G^| zADPgcX3}(^wt&rL9;M%!g$8uu4k^;d8|$5N_bhu2frs3^_ABH_^`7*gcM>KeEVg~X zS?Z5-d~i*hZAMG;cxsrRwBAp%VI;0f)1_Z-yCm@NJp(5xp_ph)7v9AYtOUq!5}SM+ zx_?vdy|Lb=vLw7XU_YR?dXE(Bu6VW+X@c2>_;f3{fei0G?{lVTQ$`v1!zr#W4xF@d zsFG_D8toHSMN>@Pr92YZN6b0oE^NavB8fIjc@!%X&0LDMj?gz7c?<({{S(kRB#s5l z(wNYddQUTT=~U@sVWKi~yOtuz|qRn@Hr zpZAGIO&44oxL>&&toa(U!k#qNi&HGr9Sgm^T2Fb!vHR+c@?g%Q1!vQ@<8HaPs$4}? zgM$87qs}`PYabSrLJMT$V4M!Vql&;_McD-myt8jarE!|!XCGI(*9_XQQ>8BwDFg@&5rY zK+wN3MK!JzWe^23SiWpILl7xw4y+`}&jc}kFP|lWTePYa21Vik!AMoc!F#dq>7f@K zAPpm~NQ+JehO3}!Nvl11^Fx3{n5L9$U0hH`t{!NicSbd{!-;e~dKVM_l#mB2n)jBVTPnBsD5zM9$(RLvb%a~$x3 zpUhlFveAQTsfSx(Ty%%oEr6-f=?uBHu{BzTb9yYF?Cjs(rdSP&%;}7E<~9cbxZB=g zd8*F!>{liUr;DO&U5vcbztLO;6l+Tb0qBodazW zX~rI^`dTSw-f$*p+uG1id0n)M+>|kjoPmW81Z44xbAwk}{(V1Z2Dr6(4ebZ_kk!EW=Wk^+(u)w)!7 zhGgFJM4~F2Q@^DIdp%52!)FgGxrpr%uavHtB+IrhFN}|7ecp)i_~g=4Z^X^vH4Wer#;J)HI_)K%_+Qx5PIWhs%$> z;X_?G+A~sR_k06Fi9p7?>9G2XEk6r6?}v%^nPC|<0_ivNG2!*07CAwy9CnetZSsz? z5Aeg&CIy$b=e-dy{TGGWWi>z?>G$7q0`Z&<8>_iY;4R%&F>@GSYf;)Nj@r@)6N{?) zwVdYkYYOA^r#n#|Xp|hQdywjr;ESi?eJl-0G%575#47#hOSm<4$(((Rcm-0&AKTB! zAJ&qfe61JJ8UZ%x3>gg%C`}R}{HBM>-n=7j3et?KrzIy<)2te@vn{Z{{mASW3i1i( znD6Kd!}ODi41kJ`Qvy#%V)#+Sh{)H29ml-v5B$%Q(2P1qdZJ7~o;*$D$8OD4uqKFD z(TA;vYc+9_fIhw2F|zr&#Vppt(~1(+4)|e7*1;vdJHCZV9`p@sbi;Q`msNu8pc&wC zCAlH{Jp+0FCn*3_;<0Iy zbmdNWeL%}$!otfqAf(L>s3Z48Oh1BXdL|ABs`*mt9!x5D*S9AxyY-XpNm z!v$bc@FXlY!OX~ObE~Z@X={lAmwfU2diLl)L(d<K93 z0!>CGL!@^JgTuy#yzu5b7764irhezg8K8p}v%^VB1P6tv~Rrv%wm0XitYIAJ)*B`-A^-4XwbVXyXXdVK(tQ~_Spi132XRRUdHOl~ETIL4sJYT; z%Q-49TzZ5MFj9LyojfL*Oc**bD`$W|A}4aO;t;e9G35V19{?JOH52)g-b;Hlf>IGU zBj`o>6GZA6HwW^7Xjg}dbTLaj*u}8~Ny2mn{f(4V$uM;c zE(p0H?C^)rOk$II=hovZCdz7xe0sO-y`~BI-BsFW4_G=Q2(?g`7Cx^0RvVni$STV5 z0dO1Vq~_YPVWS{$FLII9J#*;8>DaLtKh-=KOg<$RY%Ik@OEGo%QdA`E3~`yGeSf92 z0;M+$Kv@H+XDVyK;m2+D-f4hI4!mqYdMaNJBxlhnPJw}^yG!O>K09ej$H5JO>4+67 zi}D=-Iya8*;@7564RHsvv%gbW1}DKSw3*5LKFg-GXlGx-(U82r8YAQunZvFzNt-rI zIY^=6D#}pyR~3zjH~pr4~<{6eoBjvg0Z09 z&7ZJ#CD+6uT6n1tVR*s8buJyy0&_(>@-79^&$reM(tb*4AXFVR*y7TI z<(3p6%P^sN&Ax7e*{Ksi`X{f*)Q-XsF1XkUnozHwaR^cVFUqTy)$`i8j zH?=(~Dw>Ll8tlx-F5h>~!i+)?Vhzg@DlVATav&@B;A=yw8c}Oh{I3fTz9zVh5r|pi z=2yvX?uYqNdc|}t`y50+P7z~j5Zuz0Pv2v4x!X0}?p7wW zI;+gr1hdueN_FZX7a(GGv`Ipi+cLnSpy%o==nY+wioONHIIyQI9sA+SY64tgPyW z%Hr^Vv@WDi1YT`FR>^*bh02eTcqw*Rlab?F#X1Z9wHn#Q{WgF5+WO4uK1Z?gW`MU> zSeX{NpF4&4mNTbstR^22+I>{6kprnLrm6uMgHc}M9b-@iiVWXUPjH&*#y>(q@R3BD za?U*J+VQhS5=kk5ri-X36 z?Sz+sUYB9!S3C%4MxgH(yq#s&=XE}#aOOi8o1LCH-wVCfCT7!+H8YI^;qH9=K+#2X zA4=zQUf-K7v@ca?9xDcDEr!H2HaQ^>5Xn$Th*}Dmz7Z3I8g;*+fE_%At6U57WUPuJ z6K%K`F4teI_ zJ7%yjt_9KQ(k>CfnPbjIfC27^?rI=i)>Hd)8N1bs#Ny=suC1kW0#66jHvg}e|CFs? z6+{jDE^R|^cmnag9~-f3?ZiHk&2$vbiXip@6_Ps<60x<-HCBr_vOb{5VjgyTd<(qF zsUv3L4=XXQ1@pTeKh`JUnj_F|Rd@&rYCFx_I)>)c6&=Ee2E0txeQv( zL2Y3qc%#*`_)`mMC!Wf1emWvN&mVR%z(dQ`cl#1-m8r>MLHmQbj_d#MRHjX3;UnGJ zk<)e!I-+9}fB1g`Dsp_DYExJsSwrW7Py8t&IsgiT95J2z;AX=3!7smE8>%Gu%z6wK z?DSPej$AYNxms)XIc^1?4C*R@+~9FW0Bo!C*Z6i5hNXJ_aG`CM@_jY@>ttQP|I4>5 z=en4t7f;}%7>X`~x`=VBw$tMm zXH8?&CiK>}O-id8R+VY_GWLp0l?ts=*D!^|38$d)ZyJ}RO{SsHnvwzdDt}%lPS+OWiSbpz@x$~w^)oSOBC8>V+^mK+P zG(tONab&F-jr#3v6{NXZ$|R%^l|Ne)S8N#XJXuNr1zr!Ww8zTgcMA#4ckEF-Gnj$r zF4`!O3FWslE|dyBptWFVpeS9TtLR8lR}v*4EPNSikvP0ZNhd=mBB}>dOlc{staR>VqB(wxLE6gH7^S?CVmxczM0CTPLF%69*Rp z7fPz)eV66`+o~dGiXa?LQUkXC;(Y=y**6f?9=AZ|6%6pkY0qn%a?@Z{F_sUGw;BW- z=QSZdcpcWZ?hb3R2(rMzWJH(Z3Q>|nWs#(Rt#TiDOsz`CtAs~w=!w;ebDCAH1z{%V zPl|^m=)+S&d17~~T;pYZ6@C-~cWb>PL?Z-MFYrk_qvYa~q)9afT_dy6$U-#aAT!0R z<6A1Tk~ZgVLv07Gg|f?GpJrYE=@?mun9hJ*JbMlstT@iXVXR-Tue`+&K3c#61IZLm z7OL70Cj{MbkzvjPsyd+_P~9H3-=AHetVk`?q!}@iFPAd=5~!tFOwxO1VTHgMx*!6T z39?c>o~0N~!=@3{Y)#Rlo!lZU>vZlmb|oh4FVxVLnqsQ7ek>rilTl}Mjx=mli{W^)P9VoWB>|56&Wt{L& zJ+GPWDuw#e#&>W+^NU>Y>&RE9`4Ti(P2}XNk_d)(;ETKf;oFGEd}wKG;|a2dtC99S z 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 z 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%0AYoY0EIuLzl$tLY8Oh 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�UQ%;_1k<~lQK>Q9O!O4n4@HCE1= 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 + +/* These rules specify the order of arguments in API calls: + * + * 1. Context pointers go first, followed by output arguments, combined + * output/input arguments, and finally input-only arguments. + * 2. Array lengths always immediately the follow the argument whose length + * they describe, even if this violates rule 1. + * 3. Within the OUT/OUTIN/IN groups, pointers to data that is typically generated + * later go first. This means: signatures, public nonces, private nonces, + * messages, public keys, secret keys, tweaks. + * 4. Arguments that are not data pointers go last, from more complex to less + * complex: function pointers, algorithm names, messages, void pointers, + * counts, flags, booleans. + * 5. Opaque data pointers follow the function pointer they are to be passed to. + */ + +/** Opaque data structure that holds context information (precomputed tables etc.). + * + * The purpose of context structures is to cache large precomputed data tables + * that are expensive to construct, and also to maintain the randomization data + * for blinding. + * + * Do not create a new context object for each operation, as construction is + * far slower than all other API calls (~100 times slower than an ECDSA + * verification). + * + * A constructed context can safely be used from multiple threads + * simultaneously, but API calls that take a non-const pointer to a context + * need exclusive access to it. In particular this is the case for + * secp256k1_context_destroy, secp256k1_context_preallocated_destroy, + * and secp256k1_context_randomize. + * + * Regarding randomization, either do it once at creation time (in which case + * you do not need any locking for the other calls), or use a read-write lock. + */ +typedef struct secp256k1_context_struct secp256k1_context; + +/** Opaque data structure that holds rewriteable "scratch space" + * + * The purpose of this structure is to replace dynamic memory allocations, + * because we target architectures where this may not be available. It is + * essentially a resizable (within specified parameters) block of bytes, + * which is initially created either by memory allocation or TODO as a pointer + * into some fixed rewritable space. + * + * Unlike the context object, this cannot safely be shared between threads + * without additional synchronization logic. + */ +typedef struct secp256k1_scratch_space_struct secp256k1_scratch_space; + +/** Opaque data structure that holds a parsed and valid public key. + * + * The exact representation of data inside is implementation defined and not + * guaranteed to be portable between different platforms or versions. It is + * however guaranteed to be 64 bytes in size, and can be safely copied/moved. + * If you need to convert to a format suitable for storage, transmission, or + * comparison, use secp256k1_ec_pubkey_serialize and secp256k1_ec_pubkey_parse. + */ +typedef struct { + unsigned char data[64]; +} secp256k1_pubkey; + +/** Opaque data structured that holds a parsed ECDSA signature. + * + * The exact representation of data inside is implementation defined and not + * guaranteed to be portable between different platforms or versions. It is + * however guaranteed to be 64 bytes in size, and can be safely copied/moved. + * If you need to convert to a format suitable for storage, transmission, or + * comparison, use the secp256k1_ecdsa_signature_serialize_* and + * secp256k1_ecdsa_signature_parse_* functions. + */ +typedef struct { + unsigned char data[64]; +} secp256k1_ecdsa_signature; + +/** A pointer to a function to deterministically generate a nonce. + * + * Returns: 1 if a nonce was successfully generated. 0 will cause signing to fail. + * Out: nonce32: pointer to a 32-byte array to be filled by the function. + * In: msg32: the 32-byte message hash being verified (will not be NULL) + * key32: pointer to a 32-byte secret key (will not be NULL) + * algo16: pointer to a 16-byte array describing the signature + * algorithm (will be NULL for ECDSA for compatibility). + * data: Arbitrary data pointer that is passed through. + * attempt: how many iterations we have tried to find a nonce. + * This will almost always be 0, but different attempt values + * are required to result in a different nonce. + * + * Except for test cases, this function should compute some cryptographic hash of + * the message, the algorithm, the key and the attempt. + */ +typedef int (*secp256k1_nonce_function)( + unsigned char *nonce32, + const unsigned char *msg32, + const unsigned char *key32, + const unsigned char *algo16, + void *data, + unsigned int attempt +); + +# if !defined(SECP256K1_GNUC_PREREQ) +# if defined(__GNUC__)&&defined(__GNUC_MINOR__) +# define SECP256K1_GNUC_PREREQ(_maj,_min) \ + ((__GNUC__<<16)+__GNUC_MINOR__>=((_maj)<<16)+(_min)) +# else +# define SECP256K1_GNUC_PREREQ(_maj,_min) 0 +# endif +# endif + +# if (!defined(__STDC_VERSION__) || (__STDC_VERSION__ < 199901L) ) +# if SECP256K1_GNUC_PREREQ(2,7) +# define SECP256K1_INLINE __inline__ +# elif (defined(_MSC_VER)) +# define SECP256K1_INLINE __inline +# else +# define SECP256K1_INLINE +# endif +# else +# define SECP256K1_INLINE inline +# endif + +#ifndef SECP256K1_API +# if defined(_WIN32) +# ifdef SECP256K1_BUILD +# define SECP256K1_API __declspec(dllexport) +# else +# define SECP256K1_API +# endif +# elif defined(__GNUC__) && defined(SECP256K1_BUILD) +# define SECP256K1_API __attribute__ ((visibility ("default"))) +# else +# define SECP256K1_API +# endif +#endif + +/**Warning attributes + * NONNULL is not used if SECP256K1_BUILD is set to avoid the compiler optimizing out + * some paranoid null checks. */ +# if defined(__GNUC__) && SECP256K1_GNUC_PREREQ(3, 4) +# define SECP256K1_WARN_UNUSED_RESULT __attribute__ ((__warn_unused_result__)) +# else +# define SECP256K1_WARN_UNUSED_RESULT +# endif +# if !defined(SECP256K1_BUILD) && defined(__GNUC__) && SECP256K1_GNUC_PREREQ(3, 4) +# define SECP256K1_ARG_NONNULL(_x) __attribute__ ((__nonnull__(_x))) +# else +# define SECP256K1_ARG_NONNULL(_x) +# endif + +/** All flags' lower 8 bits indicate what they're for. Do not use directly. */ +#define SECP256K1_FLAGS_TYPE_MASK ((1 << 8) - 1) +#define SECP256K1_FLAGS_TYPE_CONTEXT (1 << 0) +#define SECP256K1_FLAGS_TYPE_COMPRESSION (1 << 1) +/** The higher bits contain the actual data. Do not use directly. */ +#define SECP256K1_FLAGS_BIT_CONTEXT_VERIFY (1 << 8) +#define SECP256K1_FLAGS_BIT_CONTEXT_SIGN (1 << 9) +#define SECP256K1_FLAGS_BIT_COMPRESSION (1 << 8) + +/** Flags to pass to secp256k1_context_create, secp256k1_context_preallocated_size, and + * secp256k1_context_preallocated_create. */ +#define SECP256K1_CONTEXT_VERIFY (SECP256K1_FLAGS_TYPE_CONTEXT | SECP256K1_FLAGS_BIT_CONTEXT_VERIFY) +#define SECP256K1_CONTEXT_SIGN (SECP256K1_FLAGS_TYPE_CONTEXT | SECP256K1_FLAGS_BIT_CONTEXT_SIGN) +#define SECP256K1_CONTEXT_NONE (SECP256K1_FLAGS_TYPE_CONTEXT) + +/** Flag to pass to secp256k1_ec_pubkey_serialize. */ +#define SECP256K1_EC_COMPRESSED (SECP256K1_FLAGS_TYPE_COMPRESSION | SECP256K1_FLAGS_BIT_COMPRESSION) +#define SECP256K1_EC_UNCOMPRESSED (SECP256K1_FLAGS_TYPE_COMPRESSION) + +/** Prefix byte used to tag various encoded curvepoints for specific purposes */ +#define SECP256K1_TAG_PUBKEY_EVEN 0x02 +#define SECP256K1_TAG_PUBKEY_ODD 0x03 +#define SECP256K1_TAG_PUBKEY_UNCOMPRESSED 0x04 +#define SECP256K1_TAG_PUBKEY_HYBRID_EVEN 0x06 +#define SECP256K1_TAG_PUBKEY_HYBRID_ODD 0x07 + +/** A simple secp256k1 context object with no precomputed tables. These are useful for + * type serialization/parsing functions which require a context object to maintain + * API consistency, but currently do not require expensive precomputations or dynamic + * allocations. + */ +SECP256K1_API extern const secp256k1_context *secp256k1_context_no_precomp; + +/** Create a secp256k1 context object (in dynamically allocated memory). + * + * This function uses malloc to allocate memory. It is guaranteed that malloc is + * called at most once for every call of this function. If you need to avoid dynamic + * memory allocation entirely, see the functions in secp256k1_preallocated.h. + * + * Returns: a newly created context object. + * In: flags: which parts of the context to initialize. + * + * See also secp256k1_context_randomize. + */ +SECP256K1_API secp256k1_context* secp256k1_context_create( + unsigned int flags +) SECP256K1_WARN_UNUSED_RESULT; + +/** Copy a secp256k1 context object (into dynamically allocated memory). + * + * This function uses malloc to allocate memory. It is guaranteed that malloc is + * called at most once for every call of this function. If you need to avoid dynamic + * memory allocation entirely, see the functions in secp256k1_preallocated.h. + * + * Returns: a newly created context object. + * Args: ctx: an existing context to copy (cannot be NULL) + */ +SECP256K1_API secp256k1_context* secp256k1_context_clone( + const secp256k1_context* ctx +) SECP256K1_ARG_NONNULL(1) SECP256K1_WARN_UNUSED_RESULT; + +/** Destroy a secp256k1 context object (created in dynamically allocated memory). + * + * The context pointer may not be used afterwards. + * + * The context to destroy must have been created using secp256k1_context_create + * or secp256k1_context_clone. If the context has instead been created using + * secp256k1_context_preallocated_create or secp256k1_context_preallocated_clone, the + * behaviour is undefined. In that case, secp256k1_context_preallocated_destroy must + * be used instead. + * + * Args: ctx: an existing context to destroy, constructed using + * secp256k1_context_create or secp256k1_context_clone + */ +SECP256K1_API void secp256k1_context_destroy( + secp256k1_context* ctx +); + +/** Set a callback function to be called when an illegal argument is passed to + * an API call. It will only trigger for violations that are mentioned + * explicitly in the header. + * + * The philosophy is that these shouldn't be dealt with through a + * specific return value, as calling code should not have branches to deal with + * the case that this code itself is broken. + * + * On the other hand, during debug stage, one would want to be informed about + * such mistakes, and the default (crashing) may be inadvisable. + * When this callback is triggered, the API function called is guaranteed not + * to cause a crash, though its return value and output arguments are + * undefined. + * + * When this function has not been called (or called with fn==NULL), then the + * default handler will be used. The library provides a default handler which + * writes the message to stderr and calls abort. This default handler can be + * replaced at link time if the preprocessor macro + * USE_EXTERNAL_DEFAULT_CALLBACKS is defined, which is the case if the build + * has been configured with --enable-external-default-callbacks. Then the + * following two symbols must be provided to link against: + * - void secp256k1_default_illegal_callback_fn(const char* message, void* data); + * - void secp256k1_default_error_callback_fn(const char* message, void* data); + * The library can call these default handlers even before a proper callback data + * pointer could have been set using secp256k1_context_set_illegal_callback or + * secp256k1_context_set_error_callback, e.g., when the creation of a context + * fails. In this case, the corresponding default handler will be called with + * the data pointer argument set to NULL. + * + * Args: ctx: an existing context object (cannot be NULL) + * In: fun: a pointer to a function to call when an illegal argument is + * passed to the API, taking a message and an opaque pointer. + * (NULL restores the default handler.) + * data: the opaque pointer to pass to fun above. + * + * See also secp256k1_context_set_error_callback. + */ +SECP256K1_API void secp256k1_context_set_illegal_callback( + secp256k1_context* ctx, + void (*fun)(const char* message, void* data), + const void* data +) SECP256K1_ARG_NONNULL(1); + +/** Set a callback function to be called when an internal consistency check + * fails. The default is crashing. + * + * This can only trigger in case of a hardware failure, miscompilation, + * memory corruption, serious bug in the library, or other error would can + * otherwise result in undefined behaviour. It will not trigger due to mere + * incorrect usage of the API (see secp256k1_context_set_illegal_callback + * for that). After this callback returns, anything may happen, including + * crashing. + * + * Args: ctx: an existing context object (cannot be NULL) + * In: fun: a pointer to a function to call when an internal error occurs, + * taking a message and an opaque pointer (NULL restores the + * default handler, see secp256k1_context_set_illegal_callback + * for details). + * data: the opaque pointer to pass to fun above. + * + * See also secp256k1_context_set_illegal_callback. + */ +SECP256K1_API void secp256k1_context_set_error_callback( + secp256k1_context* ctx, + void (*fun)(const char* message, void* data), + const void* data +) SECP256K1_ARG_NONNULL(1); + +/** Create a secp256k1 scratch space object. + * + * Returns: a newly created scratch space. + * Args: ctx: an existing context object (cannot be NULL) + * In: size: amount of memory to be available as scratch space. Some extra + * (<100 bytes) will be allocated for extra accounting. + */ +SECP256K1_API SECP256K1_WARN_UNUSED_RESULT secp256k1_scratch_space* secp256k1_scratch_space_create( + const secp256k1_context* ctx, + size_t size +) SECP256K1_ARG_NONNULL(1); + +/** Destroy a secp256k1 scratch space. + * + * The pointer may not be used afterwards. + * Args: ctx: a secp256k1 context object. + * scratch: space to destroy + */ +SECP256K1_API void secp256k1_scratch_space_destroy( + const secp256k1_context* ctx, + secp256k1_scratch_space* scratch +) SECP256K1_ARG_NONNULL(1); + +/** Parse a variable-length public key into the pubkey object. + * + * Returns: 1 if the public key was fully valid. + * 0 if the public key could not be parsed or is invalid. + * Args: ctx: a secp256k1 context object. + * Out: pubkey: pointer to a pubkey object. If 1 is returned, it is set to a + * parsed version of input. If not, its value is undefined. + * In: input: pointer to a serialized public key + * inputlen: length of the array pointed to by input + * + * This function supports parsing compressed (33 bytes, header byte 0x02 or + * 0x03), uncompressed (65 bytes, header byte 0x04), or hybrid (65 bytes, header + * byte 0x06 or 0x07) format public keys. + */ +SECP256K1_API SECP256K1_WARN_UNUSED_RESULT int secp256k1_ec_pubkey_parse( + const secp256k1_context* ctx, + secp256k1_pubkey* pubkey, + const unsigned char *input, + size_t inputlen +) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3); + +/** Serialize a pubkey object into a serialized byte sequence. + * + * Returns: 1 always. + * Args: ctx: a secp256k1 context object. + * Out: output: a pointer to a 65-byte (if compressed==0) or 33-byte (if + * compressed==1) byte array to place the serialized key + * in. + * In/Out: outputlen: a pointer to an integer which is initially set to the + * size of output, and is overwritten with the written + * size. + * In: pubkey: a pointer to a secp256k1_pubkey containing an + * initialized public key. + * flags: SECP256K1_EC_COMPRESSED if serialization should be in + * compressed format, otherwise SECP256K1_EC_UNCOMPRESSED. + */ +SECP256K1_API int secp256k1_ec_pubkey_serialize( + const secp256k1_context* ctx, + unsigned char *output, + size_t *outputlen, + const secp256k1_pubkey* pubkey, + unsigned int flags +) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3) SECP256K1_ARG_NONNULL(4); + +/** Parse an ECDSA signature in compact (64 bytes) format. + * + * Returns: 1 when the signature could be parsed, 0 otherwise. + * Args: ctx: a secp256k1 context object + * Out: sig: a pointer to a signature object + * In: input64: a pointer to the 64-byte array to parse + * + * The signature must consist of a 32-byte big endian R value, followed by a + * 32-byte big endian S value. If R or S fall outside of [0..order-1], the + * encoding is invalid. R and S with value 0 are allowed in the encoding. + * + * After the call, sig will always be initialized. If parsing failed or R or + * S are zero, the resulting sig value is guaranteed to fail validation for any + * message and public key. + */ +SECP256K1_API int secp256k1_ecdsa_signature_parse_compact( + const secp256k1_context* ctx, + secp256k1_ecdsa_signature* sig, + const unsigned char *input64 +) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3); + +/** Parse a DER ECDSA signature. + * + * Returns: 1 when the signature could be parsed, 0 otherwise. + * Args: ctx: a secp256k1 context object + * Out: sig: a pointer to a signature object + * In: input: a pointer to the signature to be parsed + * inputlen: the length of the array pointed to be input + * + * This function will accept any valid DER encoded signature, even if the + * encoded numbers are out of range. + * + * After the call, sig will always be initialized. If parsing failed or the + * encoded numbers are out of range, signature validation with it is + * guaranteed to fail for every message and public key. + */ +SECP256K1_API int secp256k1_ecdsa_signature_parse_der( + const secp256k1_context* ctx, + secp256k1_ecdsa_signature* sig, + const unsigned char *input, + size_t inputlen +) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3); + +/** Serialize an ECDSA signature in DER format. + * + * Returns: 1 if enough space was available to serialize, 0 otherwise + * Args: ctx: a secp256k1 context object + * Out: output: a pointer to an array to store the DER serialization + * In/Out: outputlen: a pointer to a length integer. Initially, this integer + * should be set to the length of output. After the call + * it will be set to the length of the serialization (even + * if 0 was returned). + * In: sig: a pointer to an initialized signature object + */ +SECP256K1_API int secp256k1_ecdsa_signature_serialize_der( + const secp256k1_context* ctx, + unsigned char *output, + size_t *outputlen, + const secp256k1_ecdsa_signature* sig +) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3) SECP256K1_ARG_NONNULL(4); + +/** Serialize an ECDSA signature in compact (64 byte) format. + * + * Returns: 1 + * Args: ctx: a secp256k1 context object + * Out: output64: a pointer to a 64-byte array to store the compact serialization + * In: sig: a pointer to an initialized signature object + * + * See secp256k1_ecdsa_signature_parse_compact for details about the encoding. + */ +SECP256K1_API int secp256k1_ecdsa_signature_serialize_compact( + const secp256k1_context* ctx, + unsigned char *output64, + const secp256k1_ecdsa_signature* sig +) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3); + +/** Verify an ECDSA signature. + * + * Returns: 1: correct signature + * 0: incorrect or unparseable signature + * Args: ctx: a secp256k1 context object, initialized for verification. + * In: sig: the signature being verified (cannot be NULL) + * msg32: the 32-byte message hash being verified (cannot be NULL) + * pubkey: pointer to an initialized public key to verify with (cannot be NULL) + * + * To avoid accepting malleable signatures, only ECDSA signatures in lower-S + * form are accepted. + * + * If you need to accept ECDSA signatures from sources that do not obey this + * rule, apply secp256k1_ecdsa_signature_normalize to the signature prior to + * validation, but be aware that doing so results in malleable signatures. + * + * For details, see the comments for that function. + */ +SECP256K1_API SECP256K1_WARN_UNUSED_RESULT int secp256k1_ecdsa_verify( + const secp256k1_context* ctx, + const secp256k1_ecdsa_signature *sig, + const unsigned char *msg32, + const secp256k1_pubkey *pubkey +) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3) SECP256K1_ARG_NONNULL(4); + +/** Convert a signature to a normalized lower-S form. + * + * Returns: 1 if sigin was not normalized, 0 if it already was. + * Args: ctx: a secp256k1 context object + * Out: sigout: a pointer to a signature to fill with the normalized form, + * or copy if the input was already normalized. (can be NULL if + * you're only interested in whether the input was already + * normalized). + * In: sigin: a pointer to a signature to check/normalize (cannot be NULL, + * can be identical to sigout) + * + * With ECDSA a third-party can forge a second distinct signature of the same + * message, given a single initial signature, but without knowing the key. This + * is done by negating the S value modulo the order of the curve, 'flipping' + * the sign of the random point R which is not included in the signature. + * + * Forgery of the same message isn't universally problematic, but in systems + * where message malleability or uniqueness of signatures is important this can + * cause issues. This forgery can be blocked by all verifiers forcing signers + * to use a normalized form. + * + * The lower-S form reduces the size of signatures slightly on average when + * variable length encodings (such as DER) are used and is cheap to verify, + * making it a good choice. Security of always using lower-S is assured because + * anyone can trivially modify a signature after the fact to enforce this + * property anyway. + * + * The lower S value is always between 0x1 and + * 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0, + * inclusive. + * + * No other forms of ECDSA malleability are known and none seem likely, but + * there is no formal proof that ECDSA, even with this additional restriction, + * is free of other malleability. Commonly used serialization schemes will also + * accept various non-unique encodings, so care should be taken when this + * property is required for an application. + * + * The secp256k1_ecdsa_sign function will by default create signatures in the + * lower-S form, and secp256k1_ecdsa_verify will not accept others. In case + * signatures come from a system that cannot enforce this property, + * secp256k1_ecdsa_signature_normalize must be called before verification. + */ +SECP256K1_API int secp256k1_ecdsa_signature_normalize( + const secp256k1_context* ctx, + secp256k1_ecdsa_signature *sigout, + const secp256k1_ecdsa_signature *sigin +) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(3); + +/** An implementation of RFC6979 (using HMAC-SHA256) as nonce generation function. + * If a data pointer is passed, it is assumed to be a pointer to 32 bytes of + * extra entropy. + */ +SECP256K1_API extern const secp256k1_nonce_function secp256k1_nonce_function_rfc6979; + +/** A default safe nonce generation function (currently equal to secp256k1_nonce_function_rfc6979). */ +SECP256K1_API extern const secp256k1_nonce_function secp256k1_nonce_function_default; + +/** Create an ECDSA signature. + * + * Returns: 1: signature created + * 0: the nonce generation function failed, or the private key was invalid. + * Args: ctx: pointer to a context object, initialized for signing (cannot be NULL) + * Out: sig: pointer to an array where the signature will be placed (cannot be NULL) + * In: msg32: the 32-byte message hash being signed (cannot be NULL) + * seckey: pointer to a 32-byte secret key (cannot be NULL) + * noncefp:pointer to a nonce generation function. If NULL, secp256k1_nonce_function_default is used + * ndata: pointer to arbitrary data used by the nonce generation function (can be NULL) + * + * The created signature is always in lower-S form. See + * secp256k1_ecdsa_signature_normalize for more details. + */ +SECP256K1_API int secp256k1_ecdsa_sign( + const secp256k1_context* ctx, + secp256k1_ecdsa_signature *sig, + const unsigned char *msg32, + const unsigned char *seckey, + secp256k1_nonce_function noncefp, + const void *ndata +) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3) SECP256K1_ARG_NONNULL(4); + +/** Verify an ECDSA secret key. + * + * Returns: 1: secret key is valid + * 0: secret key is invalid + * Args: ctx: pointer to a context object (cannot be NULL) + * In: seckey: pointer to a 32-byte secret key (cannot be NULL) + */ +SECP256K1_API SECP256K1_WARN_UNUSED_RESULT int secp256k1_ec_seckey_verify( + const secp256k1_context* ctx, + const unsigned char *seckey +) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2); + +/** Compute the public key for a secret key. + * + * Returns: 1: secret was valid, public key stores + * 0: secret was invalid, try again + * Args: ctx: pointer to a context object, initialized for signing (cannot be NULL) + * Out: pubkey: pointer to the created public key (cannot be NULL) + * In: seckey: pointer to a 32-byte private key (cannot be NULL) + */ +SECP256K1_API SECP256K1_WARN_UNUSED_RESULT int secp256k1_ec_pubkey_create( + const secp256k1_context* ctx, + secp256k1_pubkey *pubkey, + const unsigned char *seckey +) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3); + +/** Negates a private key in place. + * + * Returns: 1 always + * Args: ctx: pointer to a context object + * In/Out: seckey: pointer to the 32-byte private key to be negated (cannot be NULL) + */ +SECP256K1_API SECP256K1_WARN_UNUSED_RESULT int secp256k1_ec_privkey_negate( + const secp256k1_context* ctx, + unsigned char *seckey +) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2); + +/** Negates a public key in place. + * + * Returns: 1 always + * Args: ctx: pointer to a context object + * In/Out: pubkey: pointer to the public key to be negated (cannot be NULL) + */ +SECP256K1_API SECP256K1_WARN_UNUSED_RESULT int secp256k1_ec_pubkey_negate( + const secp256k1_context* ctx, + secp256k1_pubkey *pubkey +) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2); + +/** Tweak a private key by adding tweak to it. + * Returns: 0 if the tweak was out of range (chance of around 1 in 2^128 for + * uniformly random 32-byte arrays, or if the resulting private key + * would be invalid (only when the tweak is the complement of the + * private key). 1 otherwise. + * Args: ctx: pointer to a context object (cannot be NULL). + * In/Out: seckey: pointer to a 32-byte private key. + * In: tweak: pointer to a 32-byte tweak. + */ +SECP256K1_API SECP256K1_WARN_UNUSED_RESULT int secp256k1_ec_privkey_tweak_add( + const secp256k1_context* ctx, + unsigned char *seckey, + const unsigned char *tweak +) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3); + +/** Tweak a public key by adding tweak times the generator to it. + * Returns: 0 if the tweak was out of range (chance of around 1 in 2^128 for + * uniformly random 32-byte arrays, or if the resulting public key + * would be invalid (only when the tweak is the complement of the + * corresponding private key). 1 otherwise. + * Args: ctx: pointer to a context object initialized for validation + * (cannot be NULL). + * In/Out: pubkey: pointer to a public key object. + * In: tweak: pointer to a 32-byte tweak. + */ +SECP256K1_API SECP256K1_WARN_UNUSED_RESULT int secp256k1_ec_pubkey_tweak_add( + const secp256k1_context* ctx, + secp256k1_pubkey *pubkey, + const unsigned char *tweak +) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3); + +/** Tweak a private key by multiplying it by a tweak. + * Returns: 0 if the tweak was out of range (chance of around 1 in 2^128 for + * uniformly random 32-byte arrays, or equal to zero. 1 otherwise. + * Args: ctx: pointer to a context object (cannot be NULL). + * In/Out: seckey: pointer to a 32-byte private key. + * In: tweak: pointer to a 32-byte tweak. + */ +SECP256K1_API SECP256K1_WARN_UNUSED_RESULT int secp256k1_ec_privkey_tweak_mul( + const secp256k1_context* ctx, + unsigned char *seckey, + const unsigned char *tweak +) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3); + +/** Tweak a public key by multiplying it by a tweak value. + * Returns: 0 if the tweak was out of range (chance of around 1 in 2^128 for + * uniformly random 32-byte arrays, or equal to zero. 1 otherwise. + * Args: ctx: pointer to a context object initialized for validation + * (cannot be NULL). + * In/Out: pubkey: pointer to a public key object. + * In: tweak: pointer to a 32-byte tweak. + */ +SECP256K1_API SECP256K1_WARN_UNUSED_RESULT int secp256k1_ec_pubkey_tweak_mul( + const secp256k1_context* ctx, + secp256k1_pubkey *pubkey, + const unsigned char *tweak +) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3); + +/** Updates the context randomization to protect against side-channel leakage. + * Returns: 1: randomization successfully updated or nothing to randomize + * 0: error + * Args: ctx: pointer to a context object (cannot be NULL) + * In: seed32: pointer to a 32-byte random seed (NULL resets to initial state) + * + * While secp256k1 code is written to be constant-time no matter what secret + * values are, it's possible that a future compiler may output code which isn't, + * and also that the CPU may not emit the same radio frequencies or draw the same + * amount power for all values. + * + * This function provides a seed which is combined into the blinding value: that + * blinding value is added before each multiplication (and removed afterwards) so + * that it does not affect function results, but shields against attacks which + * rely on any input-dependent behaviour. + * + * This function has currently an effect only on contexts initialized for signing + * because randomization is currently used only for signing. However, this is not + * guaranteed and may change in the future. It is safe to call this function on + * contexts not initialized for signing; then it will have no effect and return 1. + * + * You should call this after secp256k1_context_create or + * secp256k1_context_clone (and secp256k1_context_preallocated_create or + * secp256k1_context_clone, resp.), and you may call this repeatedly afterwards. + */ +SECP256K1_API SECP256K1_WARN_UNUSED_RESULT int secp256k1_context_randomize( + secp256k1_context* ctx, + const unsigned char *seed32 +) SECP256K1_ARG_NONNULL(1); + +/** Add a number of public keys together. + * Returns: 1: the sum of the public keys is valid. + * 0: the sum of the public keys is not valid. + * Args: ctx: pointer to a context object + * Out: out: pointer to a public key object for placing the resulting public key + * (cannot be NULL) + * In: ins: pointer to array of pointers to public keys (cannot be NULL) + * n: the number of public keys to add together (must be at least 1) + */ +SECP256K1_API SECP256K1_WARN_UNUSED_RESULT int secp256k1_ec_pubkey_combine( + const secp256k1_context* ctx, + secp256k1_pubkey *out, + const secp256k1_pubkey * const * ins, + size_t n +) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3); + +#ifdef __cplusplus +} +#endif + +#endif /* SECP256K1_H */ diff --git a/example/android/third_party/secp256k1/include/secp256k1_ecdh.h b/example/android/third_party/secp256k1/include/secp256k1_ecdh.h new file mode 100644 index 000000000..df5fde235 --- /dev/null +++ b/example/android/third_party/secp256k1/include/secp256k1_ecdh.h @@ -0,0 +1,55 @@ +#ifndef SECP256K1_ECDH_H +#define SECP256K1_ECDH_H + +#include "secp256k1.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** A pointer to a function that applies hash function to a point + * + * Returns: 1 if a point was successfully hashed. 0 will cause ecdh to fail + * Out: output: pointer to an array to be filled by the function + * In: x: pointer to a 32-byte x coordinate + * y: pointer to a 32-byte y coordinate + * data: Arbitrary data pointer that is passed through + */ +typedef int (*secp256k1_ecdh_hash_function)( + unsigned char *output, + const unsigned char *x, + const unsigned char *y, + void *data +); + +/** An implementation of SHA256 hash function that applies to compressed public key. */ +SECP256K1_API extern const secp256k1_ecdh_hash_function secp256k1_ecdh_hash_function_sha256; + +/** A default ecdh hash function (currently equal to secp256k1_ecdh_hash_function_sha256). */ +SECP256K1_API extern const secp256k1_ecdh_hash_function secp256k1_ecdh_hash_function_default; + +/** Compute an EC Diffie-Hellman secret in constant time + * Returns: 1: exponentiation was successful + * 0: scalar was invalid (zero or overflow) + * Args: ctx: pointer to a context object (cannot be NULL) + * Out: output: pointer to an array to be filled by the function + * In: pubkey: a pointer to a secp256k1_pubkey containing an + * initialized public key + * privkey: a 32-byte scalar with which to multiply the point + * hashfp: pointer to a hash function. If NULL, secp256k1_ecdh_hash_function_sha256 is used + * data: Arbitrary data pointer that is passed through + */ +SECP256K1_API SECP256K1_WARN_UNUSED_RESULT int secp256k1_ecdh( + const secp256k1_context* ctx, + unsigned char *output, + const secp256k1_pubkey *pubkey, + const unsigned char *privkey, + secp256k1_ecdh_hash_function hashfp, + void *data +) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3) SECP256K1_ARG_NONNULL(4); + +#ifdef __cplusplus +} +#endif + +#endif /* SECP256K1_ECDH_H */ diff --git a/example/android/third_party/secp256k1/include/secp256k1_preallocated.h b/example/android/third_party/secp256k1/include/secp256k1_preallocated.h new file mode 100644 index 000000000..a9ae15d5a --- /dev/null +++ b/example/android/third_party/secp256k1/include/secp256k1_preallocated.h @@ -0,0 +1,128 @@ +#ifndef SECP256K1_PREALLOCATED_H +#define SECP256K1_PREALLOCATED_H + +#include "secp256k1.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* The module provided by this header file is intended for settings in which it + * is not possible or desirable to rely on dynamic memory allocation. It provides + * functions for creating, cloning, and destroying secp256k1 context objects in a + * contiguous fixed-size block of memory provided by the caller. + * + * Context objects created by functions in this module can be used like contexts + * objects created by functions in secp256k1.h, i.e., they can be passed to any + * API function that expects a context object (see secp256k1.h for details). The + * only exception is that context objects created by functions in this module + * must be destroyed using secp256k1_context_preallocated_destroy (in this + * module) instead of secp256k1_context_destroy (in secp256k1.h). + * + * It is guaranteed that functions in this module will not call malloc or its + * friends realloc, calloc, and free. + */ + +/** Determine the memory size of a secp256k1 context object to be created in + * caller-provided memory. + * + * The purpose of this function is to determine how much memory must be provided + * to secp256k1_context_preallocated_create. + * + * Returns: the required size of the caller-provided memory block + * In: flags: which parts of the context to initialize. + */ +SECP256K1_API size_t secp256k1_context_preallocated_size( + unsigned int flags +) SECP256K1_WARN_UNUSED_RESULT; + +/** Create a secp256k1 context object in caller-provided memory. + * + * The caller must provide a pointer to a rewritable contiguous block of memory + * of size at least secp256k1_context_preallocated_size(flags) bytes, suitably + * aligned to hold an object of any type. + * + * The block of memory is exclusively owned by the created context object during + * the lifetime of this context object, which begins with the call to this + * function and ends when a call to secp256k1_context_preallocated_destroy + * (which destroys the context object again) returns. During the lifetime of the + * context object, the caller is obligated not to access this block of memory, + * i.e., the caller may not read or write the memory, e.g., by copying the memory + * contents to a different location or trying to create a second context object + * in the memory. In simpler words, the prealloc pointer (or any pointer derived + * from it) should not be used during the lifetime of the context object. + * + * Returns: a newly created context object. + * In: prealloc: a pointer to a rewritable contiguous block of memory of + * size at least secp256k1_context_preallocated_size(flags) + * bytes, as detailed above (cannot be NULL) + * flags: which parts of the context to initialize. + * + * See also secp256k1_context_randomize (in secp256k1.h) + * and secp256k1_context_preallocated_destroy. + */ +SECP256K1_API secp256k1_context* secp256k1_context_preallocated_create( + void* prealloc, + unsigned int flags +) SECP256K1_ARG_NONNULL(1) SECP256K1_WARN_UNUSED_RESULT; + +/** Determine the memory size of a secp256k1 context object to be copied into + * caller-provided memory. + * + * Returns: the required size of the caller-provided memory block. + * In: ctx: an existing context to copy (cannot be NULL) + */ +SECP256K1_API size_t secp256k1_context_preallocated_clone_size( + const secp256k1_context* ctx +) SECP256K1_ARG_NONNULL(1) SECP256K1_WARN_UNUSED_RESULT; + +/** Copy a secp256k1 context object into caller-provided memory. + * + * The caller must provide a pointer to a rewritable contiguous block of memory + * of size at least secp256k1_context_preallocated_size(flags) bytes, suitably + * aligned to hold an object of any type. + * + * The block of memory is exclusively owned by the created context object during + * the lifetime of this context object, see the description of + * secp256k1_context_preallocated_create for details. + * + * Returns: a newly created context object. + * Args: ctx: an existing context to copy (cannot be NULL) + * In: prealloc: a pointer to a rewritable contiguous block of memory of + * size at least secp256k1_context_preallocated_size(flags) + * bytes, as detailed above (cannot be NULL) + */ +SECP256K1_API secp256k1_context* secp256k1_context_preallocated_clone( + const secp256k1_context* ctx, + void* prealloc +) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_WARN_UNUSED_RESULT; + +/** Destroy a secp256k1 context object that has been created in + * caller-provided memory. + * + * The context pointer may not be used afterwards. + * + * The context to destroy must have been created using + * secp256k1_context_preallocated_create or secp256k1_context_preallocated_clone. + * If the context has instead been created using secp256k1_context_create or + * secp256k1_context_clone, the behaviour is undefined. In that case, + * secp256k1_context_destroy must be used instead. + * + * If required, it is the responsibility of the caller to deallocate the block + * of memory properly after this function returns, e.g., by calling free on the + * preallocated pointer given to secp256k1_context_preallocated_create or + * secp256k1_context_preallocated_clone. + * + * Args: ctx: an existing context to destroy, constructed using + * secp256k1_context_preallocated_create or + * secp256k1_context_preallocated_clone (cannot be NULL) + */ +SECP256K1_API void secp256k1_context_preallocated_destroy( + secp256k1_context* ctx +); + +#ifdef __cplusplus +} +#endif + +#endif /* SECP256K1_PREALLOCATED_H */ diff --git a/example/android/third_party/secp256k1/include/secp256k1_recovery.h b/example/android/third_party/secp256k1/include/secp256k1_recovery.h new file mode 100644 index 000000000..cf6c5ed7f --- /dev/null +++ b/example/android/third_party/secp256k1/include/secp256k1_recovery.h @@ -0,0 +1,110 @@ +#ifndef SECP256K1_RECOVERY_H +#define SECP256K1_RECOVERY_H + +#include "secp256k1.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** Opaque data structured that holds a parsed ECDSA signature, + * supporting pubkey recovery. + * + * The exact representation of data inside is implementation defined and not + * guaranteed to be portable between different platforms or versions. It is + * however guaranteed to be 65 bytes in size, and can be safely copied/moved. + * If you need to convert to a format suitable for storage or transmission, use + * the secp256k1_ecdsa_signature_serialize_* and + * secp256k1_ecdsa_signature_parse_* functions. + * + * Furthermore, it is guaranteed that identical signatures (including their + * recoverability) will have identical representation, so they can be + * memcmp'ed. + */ +typedef struct { + unsigned char data[65]; +} secp256k1_ecdsa_recoverable_signature; + +/** Parse a compact ECDSA signature (64 bytes + recovery id). + * + * Returns: 1 when the signature could be parsed, 0 otherwise + * Args: ctx: a secp256k1 context object + * Out: sig: a pointer to a signature object + * In: input64: a pointer to a 64-byte compact signature + * recid: the recovery id (0, 1, 2 or 3) + */ +SECP256K1_API int secp256k1_ecdsa_recoverable_signature_parse_compact( + const secp256k1_context* ctx, + secp256k1_ecdsa_recoverable_signature* sig, + const unsigned char *input64, + int recid +) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3); + +/** Convert a recoverable signature into a normal signature. + * + * Returns: 1 + * Out: sig: a pointer to a normal signature (cannot be NULL). + * In: sigin: a pointer to a recoverable signature (cannot be NULL). + */ +SECP256K1_API int secp256k1_ecdsa_recoverable_signature_convert( + const secp256k1_context* ctx, + secp256k1_ecdsa_signature* sig, + const secp256k1_ecdsa_recoverable_signature* sigin +) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3); + +/** Serialize an ECDSA signature in compact format (64 bytes + recovery id). + * + * Returns: 1 + * Args: ctx: a secp256k1 context object + * Out: output64: a pointer to a 64-byte array of the compact signature (cannot be NULL) + * recid: a pointer to an integer to hold the recovery id (can be NULL). + * In: sig: a pointer to an initialized signature object (cannot be NULL) + */ +SECP256K1_API int secp256k1_ecdsa_recoverable_signature_serialize_compact( + const secp256k1_context* ctx, + unsigned char *output64, + int *recid, + const secp256k1_ecdsa_recoverable_signature* sig +) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3) SECP256K1_ARG_NONNULL(4); + +/** Create a recoverable ECDSA signature. + * + * Returns: 1: signature created + * 0: the nonce generation function failed, or the private key was invalid. + * Args: ctx: pointer to a context object, initialized for signing (cannot be NULL) + * Out: sig: pointer to an array where the signature will be placed (cannot be NULL) + * In: msg32: the 32-byte message hash being signed (cannot be NULL) + * seckey: pointer to a 32-byte secret key (cannot be NULL) + * noncefp:pointer to a nonce generation function. If NULL, secp256k1_nonce_function_default is used + * ndata: pointer to arbitrary data used by the nonce generation function (can be NULL) + */ +SECP256K1_API int secp256k1_ecdsa_sign_recoverable( + const secp256k1_context* ctx, + secp256k1_ecdsa_recoverable_signature *sig, + const unsigned char *msg32, + const unsigned char *seckey, + secp256k1_nonce_function noncefp, + const void *ndata +) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3) SECP256K1_ARG_NONNULL(4); + +/** Recover an ECDSA public key from a signature. + * + * Returns: 1: public key successfully recovered (which guarantees a correct signature). + * 0: otherwise. + * Args: ctx: pointer to a context object, initialized for verification (cannot be NULL) + * Out: pubkey: pointer to the recovered public key (cannot be NULL) + * In: sig: pointer to initialized signature that supports pubkey recovery (cannot be NULL) + * msg32: the 32-byte message hash assumed to be signed (cannot be NULL) + */ +SECP256K1_API SECP256K1_WARN_UNUSED_RESULT int secp256k1_ecdsa_recover( + const secp256k1_context* ctx, + secp256k1_pubkey *pubkey, + const secp256k1_ecdsa_recoverable_signature *sig, + const unsigned char *msg32 +) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3) SECP256K1_ARG_NONNULL(4); + +#ifdef __cplusplus +} +#endif + +#endif /* SECP256K1_RECOVERY_H */ diff --git a/example/android/third_party/secp256k1/libsecp256k1.a b/example/android/third_party/secp256k1/libsecp256k1.a new file mode 100644 index 0000000000000000000000000000000000000000..0b3daaab76d1ed1d64a95f9ad42489a32ccde1df GIT binary patch literal 698458 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 z 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�ya_pqJ?mzw{_Me9o}uhnK1+>Z&xToQ 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 z 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̧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%0A)!aPDDdkAVKYtK%N@Jij#X~3ZN_>-f^#5T# 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 Ta``C#MH5{A_(2YXs=ogRf>?mB literal 0 HcmV?d00001 diff --git a/example/android/third_party/secp256k1/x86-64/libsecp256k1.a b/example/android/third_party/secp256k1/x86-64/libsecp256k1.a new file mode 100644 index 0000000000000000000000000000000000000000..9f1a28d817d9db8347714261b1bc5f83a5d1501b GIT binary patch literal 763762 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%0D9RAIr7x5V2Ax~m-*Kh!RpAU zuUgo~)BI_oiU#WPHya|V2UARGDXgq??qs4lev3ic%G4O8yv}`(--m5subN!flZ~4d zGm&-LcO?)n>5>)xhOtCD@{%(<#G>bokI(`a#*0)pu0_>~EB&FR=j4>KmP+ghyNZCj zoCA!HdWt?|QyQlFRgJtU3J{VnA|_*twqfzop?T@f&Ix#Vy|G&-qZ<&q98OXLw*TUN0x#J&5Y-;HK;{(;@WyG+Yn*b^U{x`e501AQ1RUozAwGB= z*0$~rYqAKkz`(W9N*A}s54?lyKMChX()wO&bIVW8IA2v4=@k~*7PqlUUoU&Q@7iL4zcwz=$E*CJ({@J~IjneHlu z`qIXCa68*OvWKgY_C4c`(M!jC z;78hstK9E$VP9gnh^?|u7O@eE+^MW(Ju;jcP)augr>vkYcsf-ZVlrIO7oH0FJkP+QCF5QS*}&f#PSP^Q`AlgTih$Eo;r^}Hh> ztf&oZSjiveL~YbJ;TP9gvY49FNp-3g0wOS(=lu>?cD*F!nwDl7XqD{loG47VYjxPL zL|98i1GjB69gX}`4z+Zv{UduwbKAsZh<}^SWfgqY!}iLl8spinN2j^YOK}cE?+6&R z=@uqCI0VZh_ho13U}r!p?>nHf7j*DPTyXMAQKcTLs=c)4(0Y>W;#NvQx$J`Y4YW|K zp+&?A0EvHfcCd+Gw?6=sP6_Xu4lz7bjvEsBv$iSMqd}Os|?#^gGH`+gyx%o(aYG^urXmgMuK4S68 zNO>EZ)Xz=_Lc5~JY^i54cPVh7N3e4jJ{LMu;tA}P@_W;qt64GlJGtLmKBet5)`n3q zR_H={;xSGmdp9B7um1MkVB%q`H7?q1_liu#3!$jvPQrP>d_%CCoeiWXsL=j|DB6Ym$YB6XxYA`fX+CXT&gI=RB6znK&O8TzF%demuQDZ~KuBJ|9Zd)3 zUxO99?FjK=jA~WpnCHCLpoewx$|ngoB-!VR4d44Q1|ar5ad!a{8IU4JxMbacey}H`{YG6{ggiG@pwe_$yub9gQ7lOZo)LmTsQ)z3j}SQ)UBf*ElDbV zj%MA5wZw=gO`LrKIXn5+f_8Q;QMCEB0`_T?oWorKy{ZJl3B>7AAwr|g!}W6~YE~_1 zGpBZYPzJ!jMKISJgb&DBcoMVwc1`qO)86L*v$qB`EO#1S1;fzISeDTc;Xu`xkCC$$ zb1gb|>?vYLn~m(k2lTn}_pC+n4#u~}Jb2|39#*I0wc&3?5Y1U10+LhW=B=h_0?O8Q z9`vt#CUyPKMavZ>tTVY8W@<3l-XGpf3BJ-NIQS`ANQt#Zp3G6AQ4kHX&*^J}EDi*P zj$(||hv(r)4h(Z8Lo@=g*_y-@Vn8qPO~Dyz>;fb&|Dh8{wi!q1t_^tivo^(V+72RY zQXjrp)+Z%cc@v@m2P4gq2A(fr2M~-fQ|&kEwv3nQg4vC#nexPt7;V07tI22r=+~yy#n1g6y zUgVuOJ{VY2D0j62!P)t)$QwZ2L!*DMjoa$Th%lx#+oc{G0A>j~)dt2dna4D`$@lw2grZ4tKHrsUK}nF8WC=Ww}9*QnAt74~%FG zFc6E+rld#Ax-5NM_ixn&mzWzMghMD8aET=3Lx!E-#a0N(EZ2RN{M#;Xi4lK4#eg7I z_McCT3XTu~_ab`d4j8;^5f}yZt9a-T&h_}PA4a?Bs(k7!mZ{dHc`eanr+6}(7i12?fYWJy1?tfnk6J1KjBO8DMD6}r@@=msLp zG=>0r$Fv5I6(qIxc=8ymuUh)6%3O^Q~!EaN zL3ru~`7)U1$KZUlHVl~auLAjQ zbN}wK0jjD%0-iSi8%YiQ5sVwR*ELc|&E{Msq!XcQ!F5_RzaD&UR^{?}mAa6lu2H`? zXvMV~3lk@kiH-Vi;F&3liV|_Ex&D+DNIaSOAsu<0MSm9|*{|ED`H<*0Cs@^`oTeB# z2o*aw*H8l8Z|UeB%&jt8^#dnv57U4?%s;-5fRm!P4o8jvdv;W9)f{i~S&vAZ0`ZQ^ zqIej6tc`~|O+b$`Eao06dDh*0=uqn-G=X^(;4#($M)~M$q~@)t4r!W5C5f*_{LUPo z5Fj@2Vv5_xBsQ#iX-VqOtX!Y(D}#+6?K*`QsUX*=QEZ1JC7n-LEPA&bi=h*kg3ZSSbMANyrD}M>zrSl zKCRipNkSJ(#30AV)AQBFO6%!R?Sq<(`_*@IZBDrp?o={o@Xs*dCulITGnKF-U&6|s zhn99wA5Nul720%(ZB2vuq+G(E$|htHuymwJE`WzeX;7#KZ*U!P5_&k6Xz)R$UNiyO zB)Cjkq%-u$2gt}fSFQD(&8?xSD`X55038H$6|qgq<8FZf@Enw=<V4H6t^)0d*a(-&0 zfE_ZAs-01_! zwLqnp76$3v&!9%PJ`OKO{@WXX#3?BzH1e8Jj}F=QhY#CB6E}^9>GLw@T03RT0Mqb* zsZIk)vu$>vw(NYlHbtLS72l~1>DeRXXs*MIqgsdsU*CJat=p!FoOa<;1Nf$*b4qfzVuOB zeHyJw+tQZG{Dec`Vm!BL-d*xD4 z%j?(;L}mE?#l2i?9nn{-;>&k)!Lbb5w{?-U544(+a`DzlmE=~SRAE&siX#abDi-uK zZxK>jM44BKF?jQh$($1R+t#@*e`xrW;~6eOn2-4nD$1>~?-rSSs8EEk79W@6?m3h7 zCC@1bcVyj|*j*@)F)cXtirFdhIr$~67rZc8Z=lE?7E{4h`f( zxGrDyfEVDhTKYiD6I;j1JfzP8u??|n+x;&K^SAmC(&Z&IA5aU{6V<-m3I7rmlyXJS zMx-d-a(rfWsmHbbNk><*Lw=RJ^SKjrB_oRi&YnNU>>wvIM?TjUggv1SBaoH<0m=0~ zbzqf!?(7gE%%19gGG`Igl|MI@k_FoqzT(6{Ou~wu}7V7j|kx}l$Iz>8Z2&u1Hro-C#AG`e8o;S2kNngRwoQIMU`LQfn zFLx~&z5^A5r(vT-lI5+G-MreHV1uJM83?$*;z`nK0;Um_6P_(!%}xr+EuO^3l_dPZS{C6onCNqy~nez;?#Rhe}rHM=>$Y7+i<>do*;n; zw=MixbyoPb1^WgZ!lQk80-uafM}oEYxK%njZghO{V z8lO**~CymTzYQ$D33M{@jd7Q}BjfDbL zh0#G_<&>7(q%7Ub^M9(fuRd+z1(Wuj=={QCFOM~y)0%E|^AODgtdalGw=;bnE0P8% zc8aS*=vTrYXotJux&hhV(5kdxxbFS2(X)sp)GU*%H^r~0pwB2h)Wp;d6kTva636G( z>9j|;2Xb9>_e3<#u|;@(z# zn?gT9+;=7~#1^%1NxMLyzS!wB1-cwN2cM3{D0&c7CKQzr+Ihq+w#|As>Z!1p5Rm^` z<(sCdD0ci)9xVI0y;hi9Gt{S1vEoHSzpY`1O#EZx@a+r>lDJIGp$B!xojGUaZ=V2O zQ1*}^ZMaj1KbfW}M#7=CTMmX$(e$jNwwUPFvC5YU7DM3w2-9n&wBe)vLW1g&8vT;NX; zy>!0?u)jQx^bG=c}Z3v3J^{SbkKXM3@8i1S?2 zc%#4d{K{~+SMzPY?{_u+6!2~3(nSBu=ep|EEmk*}5sF&re$#nGx``o)&PK?^=MeP~ z*Xu;kPHKQ6Xq5`PtHD|1`p4BL&e-Xwq_w0@$d!rUSQv@FFVkl(gr*LHfMZ` z#;RvS%*$ghXW%l#`dt9df@7LBQGKrtXmVZO!FK&ErixiR^2`-xfjSrgwZ2xQ^tJCu zK8~W)(!Pkma<)#|5XZiwHiZ`LriyegiAd_kTvlTMs3=%N!0T0R0%?wUtD%k;iSW33 z&zKc?-##W{lvi}a15(AZOLoj5r~oiFBmp}apF322I?EXQCSz|S;;hyGZ))^s^WFPD z)fs)z#*JKXA#(jzvvt&ckukTK{!8y;zR5Mg6LP!(HG}n^MJ1z(R7{%_-(x33?|+Vk z7Z5rzpYUxlLZ{(_MCbKBoCCEM)^^-l<<5+Bsm4EvIn;`z(rdu~wTtYwM99+PL-Is{ z!Dc}QN?URMf9q-~36$Y6i20}HZJl0HwnN_UVwm?igdsJcAB$}1O4*zx;UYRH;S6fe zF4p0z1?;hIjYaLM4L{`7E_$Q-c}Ffobh5-3#2JbSIO~D{^*`XZ317A)zbCVGeFiWe zGILL$#k9`FSmdP3ISM0XhrZ1{0+Xuk@3jL+~qV$_v`#k~egkt<63bLmF9gB{~-mKO`t zE00Tgug#8IeP-{D9hA}+Ub@Z2BcDw6t`D$jVVAETZQfYs#a^so2An3D;dQ3#GzJQnJtrw*ZIlQq$0IhB2&2N1fB-w5_FNdd& zyzBjj8}GXcz?XZ>sfo*i($$Rz7&yG9Sb{y~vFN$_S8do7We<&=hfCq!K==AK(t zWA+R|!+9FKe7%e|WGRDGywoJQvrDiWIq;WZ@G@G_-h234&{h!JLFp-(139XoK=zMo z{Pk27m7y*nMz{iJYB96mL(pd19H^h5O^4r(2zx{Y9JOHP%AUpt123hJl41_85t z5CevJPm~28zbG#{yCNRL^RD>4&!+SiGEqpsKcB_B0c1q!q{3KHh#p#tx=8b2r76Xd z3nW;nHl#zjLTOL=T5?x|vx`-JB^RyE>?w~{m1o?8;q2H?ZebQk5 zJOLpX_Agf_D7J100s0ePceR2W>e6z0VZb8O|1%KRNHSZC<<)dF<@_S<2^A>mg7mWkOpspG$k6mI|&P;8;H&GXS#_^2&VO{nC&!V&nnt8 zLC8L#!^m3LsYfij-9|E3ILjBa`W^}pOi2lYtMbyTUCD{5kETNMsg)BfYmVN3=^(-~ z;EU=hZP^N$E!FxM%SB>tTLWKAN6X1=Ldv|J=BIG0QG2ah;RK=`q27c1rf!c{f@_lV ziCb!X4LipwGAsHdRl>&h@poER2MexizxG79Mip|EB*t=$A7E<{$i3Fl-PsGmK))=4 z?GrCIQyYRtI%O<~G~Wau-llvF7gXQ8><{x@|K$A?7Rjibsh{! zN9L&FW&gCmsW6gLqy(0#3Y}(sv9Y+*pQJy=sF9wjb1kxBHn69B_%pPCoZo7t6_MhG ze>=>0)0o<>-{L&J_}DnD2U5lvfSJ8~r+3flg(5Tzyv}I1D@~T@{|Qn`(Vh*8Z|Qw` z4QujVJuv^<44p_6@lD~bm97s0Th!N@x+>Y0$8xn6r25sFD`wK)PsbCfAdVKlGRk5& zoLNVehS&r3%R_tMbPC6bOH%sA`9Lr^Q;%x?quGp*krL|?N$2qqZ3f+73g@T?pmT^6 z4SPu@RZ#X=D4QKTGBi{+>Qz%@VMobeVW7siB=7?i%vyZ83?avc&)}kYD0g5OWKuFO za0{sWB6FTw^A8tk3|=@!H&HgKPFe+Q`p^kOFwAEcDJuX; z-J}$zO*WY*0+Cn8X%3>q!~3@RaAi@kW}Wl$#BP*bRE3DJ-Jzu&7MT0&YGXk`JootQ zTWr`6_i(dD0LkM{2);i{NGaVAAp&-}8L4u5%NR=2|KCeZ%NKEu4?83TBNOGb$~OQH zv{jr@4=zx)g!3#suzJr?*Hj6;U=4;JyL8y;oMpt^g~s*idku~I!A!M_@B3gdu!$C! z!j6bx%z*_(MjL$)@PW?@pdD7A zOQqf(&K@KHnm9T{IF_9(?F9uL$dEe0Q&V{l$eh+yOBk*ckj9k+lr-B;Y@8)1Zl8G#vGxgKq!g!(B?nQU-)vr!)8|N9@K8& zxNq;qdqeY={$7xt-?bv_{C+N9OFfmdwnHuI{o`cF~?q64_o>gi- z>{izj0_x~GcEHd#VRKrwUPUPQ3)Wu~#x>eH^8*dz;m6-*1QC+~v)cHrsk982l8vEfE{z`@vYfOlCN4w?#+V$W88<^F^d zaHTsAEKl-F;|LZPEBCI0bU${Xpl>-cde_5BxGtQ^58mEJ9gv=W0x3P1(4)#K&ZHs3 zy8r(2cv2>@)j6ejhBGHugB}OYQ93AqxhUHZL@)cbF+9$2Yqi9P;!jtOr)_`nXpEUv%3o@viRrjp2r@vi8D9#l-HX}ml2a7B$sUD0%SnyJ( zvys7m*88(t+y?3gT8#iu(&0v5nqcsjxj)1CWY-4qy_nU@=*U- z1g9dtKqS7%G$|x}+bfZBb}duSi2SlskP9<|;8y*HO|G=PvATL{MMiMhu|T*R=cuUP z4~^rfcx62oXX~Gf;`7?Y-_#{b3@ZaTghsk;e+%*)fQtw&)RyJf(zOzYoCD*{YN&@p zgsX^4QY*+odX}+Na;F*uJ;{9xZpJW&XxcIsiy_cX{GPi<`Ciw*b_gx%fd! zyl+oQ6?vSNMZaymBg8IJmLrcyPpcH^Jr;oZr#PG(d9zzaVAp}p1%}*sMpUek^fxr| z1%DmZ@M{21pi+XKa`JjLqXb4It4ihW_1^Ddo(}NmX?RbPt=q`Q%SKc;rqAcd3bmsK zTU8k5>==#k*lu7(1{adi*PWneFK`9wEL53;b0h|X+v`^eks}?cMo^0_`I-^w(SW}K zj`ArrbwkI~*qBQlW5yQZC5M3{vGw2p(~E7kQ3TjpiGdiFwI&dJKX=^@sXv*xU~zGO zNK&OKlnHpnvLuYxV2q*BfJgnZ;2mYf1IBrPOJ-O9vXJlCUD1Uqz{%WcoAgMi%m1fU zz-4Vv>lg-pZE`lP$6RP|ng4r3E5>d=1aQE2;rowH9R{G=61KpryRvc;kfkP5grQR8 zB3v`%d8KkPEs8!vJ%B}A3A@)uK(K0&d{$!6x9B4})8SX&bx$bU&+lO^mT@*J5(}7eX zRZ9@ekm0_xZH`J+$F@PU;^2-Ta=Bc9dT1svXn3JyVTO=^$y32ZEvN5U&J~FT_*! zh^|aUHW}JuLdH-6Neums3_QG+Rv>O+KH8Kivb75Bl2zk>q*s|2pxE|4;Yx*{l$nq% zO5<1R(kaqZQkwvmTP_bdtG0xd*&rO_W@P&6k43*C$?;8qek$;x3YoxbGxNZ>aF%m? zuXDrtCX6a)HBq-NcA^39v)U9-!uq9Wj{id;eml=E{pZp1Y;j5KY|w-H?IO5YFslOj zw72iHkzXfh%vjJsz@K4ai^gz#i6KV%096_o;clO+wERhRJAH^f5Ju=mB8`xznnhp+ z)?HT|jL>crYOM{;95Vt}rdj&%=6L}CFg-ut#47oBJz%n7YFaanuCl1gnn$Ie=SqoiYQ{J z1rsn=j0~jlqH+$@akQE*Dh3o*5&ln$M#3Avf)JrNG|Dba5=auy$w)vjM_(O0&Uz|? zM$ayXcgLhhQ}+oYaF4wyU$S*>Ilwr|`*zDy~dx-=q8x6C}# zrL*~R^%UTF_W}X)$cc;RXxf((;mo;DhK&yVKHRLKh0~i-=15ddl4tkaq~5_|{Zl#e zzi-(Mi>t&3UF7oCqz1R>{EAATDAj5mAd8OXCqIav0Q1!vxp`^so2+N6g3Rst5-{dl zFexSUmq7Mo75(gG39s7e?ru9$v*WOpm?eF&MtrL6`85#Cbzl9S&yD~*%F^_5HC&4f zZ3JyVcPO0~at~{{-ZcD=61(X<0I9BarlAfXOrAS;#XUL%4o#bmryJXoH|uQRR8ppp zE(+JuS+ii%wn;KzGNJ5hoh`#9PnVmu$_4Fhm99ss1p_?TfZ$*Oz=OJujh{ZRQ3;;d zK%-P+R}Z#hJFMm%^(DI51hd@Vmq;LEk+mU!UURy-a95fAl!2LF+4&BQ$kL3F^@X~AzKr)4)YLk^Et)SZ1Nqi9N6 z$GQC}E=T`1xW0-kWa4mgB#S22n>@q6txlI#2c(LT>-;Kr{*FqvF@@Z>`dT$>xgoE8HBk>?c! zWU6YFR7OxbomEF*cEsZR^J5@{f})}uw;ldM&$JpOmoI={RtfT{|Lkn zHQROLGs$IJiW!j(X^|n_Hw;%TGKY(9-y1ao=^kIO*th;d>`UTc^%CEYaP!6p@V|tl-$)hau1mHe43A4Oz=%I99jY$ z_?SJw4_lBNrbI~mutdT+lncXSlIi_|;sF<7muk@>+EOt7;7V(rEf}CVzCUL{DNaqZ z^Z~e1LgEMo^oAz2@jRv)j0(h5nH1c4uYkej&T)V_4Dv|RB@ZyDu!9oT_WB+ zkO~7A0#<0t8?5mXk2osv>qMW>{FxxXr?QQh=$tkF zM!+I)pz2hJfA^9W?G$N;;Jk&u{iOG5Z9G7C1fEVCSSOpF{#DeuT4RMj~tFuJ8I>Qqt zKYs!Bq^a@1p+EDN1Xa0?Y}ine05@5G*9LF@O)YW;XyKxYAyh;U9gBQ?b6~vGg>pT zd&IqFaQK7vXspT&AnsuYowF;;^W%3GA4E-~!VZRI>!(yYzOcC;Xe9jv^|$$EWl>A$ z`<+RweNU!5N&&f=fOg>S`Ynbf);BEGnF8rI#%Y1IO;$}Byzw^>z%rv-vRVU>xJ?jnq7 zl&?cb3pOb=rZmsU=WWYt2kWLu2?osBQ}qD3%<1KHwoK)k`)LaRk;_A3C^F!jUN&Gn z5Rx1QdupT}xUeZ5guKcwJ?m`1yWr=0D7@(rp)E&eQG1(5F`^ALeQY>A|IcJG*`Aus z`E3k~9E37=>j$>UM~WJL0f;>bx@^TdvT(;bR%bICDr0*s_{qW(9yySheq_0w0J8=O zxVO)Z7c_OnI|)81&@y49aRqscRS4LvE!;`0<1eFJblrSZ_fI9VUgXFq&Z215&-KrH z@IqHpdH?j%HrUV*tBS-WxZO&^X$IVPq>WAX5$Acl2P7l#P2yP~M{lWM4kURW{nB4X zpe(1Z_TF~GHxyRpqr;!ha$9W%ylNUVnqKJ5jZZMycGy53REV?wNI>)KyeTKvXc}DF9T_6XX|F^wFW1KuxSX zk!72x?Slh)4G{?j+f~(6yz(&fVuQ1^d=gp{Q6Po<9Xwyz9HL9_YPc|gwJ9&)-Cj+ua?b{IFDxDdqrorLham9wD3K$u2i%j&YhVo1zP{Jq?% zOl8Ni9ZPNIg`|Sn+c?Si+ay+*`XqdX%ebmtgz(l-zE{|DA�)uhTEm3TnrX4wque zLdQlRUA&C%oWG5aMIe~+R-p_I=Vb-Z2#uf;O}589ZWl$8248EV6pu^?SEAL!5LtpD zcDT||4JTdbAEYDo^p6(xOx|2Jkq}Jh)RD$CsNEQs%2RNC)L(@LcV+3;W zzz-2O<|7IAEGObOr#f~RkdCpE&r(R(2)_}#<4<|8mfP7k|mVchR}Fh$1K zs2CEO66giL73{6kvpFQ!@MqT0P0p1XlA4+x8}&L;Ix{~|{C^$TRy6h-q3IL+lVT!S zsvJAw`Eu6>h)L;)y+a$DzcpN}?^6F3nS~|bQLJ7^#V7kF%tgh)iR#M?NF4o?*@o>q z(Rvfa=rw{FRqsNoEr)7aWVmuHrl_N4d}$qhQT(G`z}rXe;zTT+Zy!>PSOitquPVa$ ziT14dI~0 zj#96#Q&LfGzm0gX^LkTy!_Fcd9QhOt(9o%kE-o!04mmUzO=C`&)Soq6N*IIa6)P)Z z$*+%6RtqB)zSQd%oAD0-V^&iv$3KDlxMdt_ zc~Rae!6m+qXFcJO*lTl#PFM=X+CYsIoi@bCyB}~AUz}ZQoCXFMVrxyCn!**rM~60R zHAGy`z7@pVAk<+kn-fDBzOrS^D;V&>wx0Jek_$eT4W3}$X+rYt$GE10xh>dGV50H4 z`ibbew}<6bFV^X>#cU@62J{VqQ+MK&Zi>+wC%*#U#t-K^g$xB|{(cVlGUA|(;NemxW zGXYh|X2V8X66wZYGRd#KjOZBQREoT|x8O3LgcB`zDS#j4PI|k&c3~R5f~~8VOekOe zEzQGarK4f$V>v`4L}uDLfAXo}fr?ODOBW2RCJkUT|0-9`S*vlf#woqu4JuKm@H4S| zaVk3{f^Xiv*7<`gJ-SZ22+>X-hD+v>To^8xS?OyPvTW*y&VAJh+9w(@6tBFX@W?Zh zQEt|8%WsIyw^fhJZy8z4jx$OQ=CG0Xppw6ni;BA~^iX}BF(kCWOTiH_Tp{Z;SamQy z%Enz^lm=qrcS)Tlqe3AqdMSYcDWF`v*U4PXxdji->1E`x>a-fExO}FXBNs^n7o(DY zN)~GG(mZRmfjGW&;Y`Qdlyko7HM-(78NNSdVNY#M%2&_U>idj;%+9}TwVLzDn+4(X zCbN?%0t&7+vR8_F?S^!%-^(->y5U`tk}(&gb8jjW!70`Yl4L>|m5oHcq8N?J7(wxXF!G zV;zB8_~PB23wMoYkIlrq*x=)un;@N!e&(;TyVrs4x)3%xXgN1iSHbSdtXec+9iV4+ zY3HbXF`a0EBJEkJCZ4t3&@#b#@VcBBc*}2QtNfTrr8j!o3Ov=O!IuBTwjlnO`2z>8 z&tpj7K|a0UVGfk<*Se2o%IVkp{wG0EBjR2<>8*sQz|QNJ1c^O~RYxO&?8GB53Btz? zX2>vHF$g;T@HEb)Qs{T=mfw-9RWM`D=oJ;Y%ltln5fcf@Q%_Ab+IqqVArmua<&c{) zquOdmOTQ5f_hdk}QK?&ws0B|aS6cN_`N?U|JMn5c&qP_8)t9`ZXFH5zy)mjA0M*R1zNk4q|Hh^Fq4hA17)tdbMeUBNFtC zyx=kxDa#gB5A&+t&F+IHpopq?JYm3mzg*5?6E8xwvsQ65lzMIhjevouS>-#&hAIC_ z#C++(#|m~V%uvga7eD9MY3EV_H@cD^Oz7$jio3vHg>UFWUJ(w(JZ^jlr_<5)QNH@G z0w0LeDX~E;yg6klwNcj{&nuGZ#bgquhNqj%j)q&cLAR5$;2$#a-ZoG+Ra(wlnZ#k& z6WbZ@Qw8i00IqYE7=f6>%qAri-SS4nneN0Oc7YS$KX{;pnAsefNEL11Lu z6bBPo`-4t7fH!{;v~GNg3g}?k)DMUd`mC`HoFrOYd%ob9-1NW;;mkM-&u1I(Z5Rq@ z9(5N9fKEHNRXEI$m@nSUxMoOu-)BX6WDkiOc@?eg1hw)<4@c`Xmm=X?ultxlw?H{m zS1Okdkt#C3_6idEoz>p#eCK!4oBdv%sq6}ES&`tXG6QK(?iHs0!Vf>P8q$EYm6GeM zIJd;(sH4*j>D1zmP6CTs24@T3ZknGY#Xh&9Oi&O!is-Np7a`j*e3=aN!+fK3e49U4 z8Jo15?DC*k2KE=l3uQdL`|rUYJj1Fi7axMB>C!w6pgz?qkYV8A7`E5iu-kL6xRv>2 zowO}T=mcfsNk0|GFVe5QL+5dzUcKZdXR9+6`K}^ zJS=Y^*62o{RLx=hS@5&c6;ZX$YpGA?OH)CHIyj$EIT^i*B!y)nN3J?=X@789K2`h8 zT_qn0WiBQB&RhH9~L{JD#W?y~9# z#hxgTDp2DAT^?Hr(=ye%QxCuc4JKip**+Xf=XsVP+Um*QpU3kOREPso ze}V!h_oWgf?B2(krF*(5bhcxGAGnYJ_h{{^`HMUv1bhDxm%jabL^NtcqGWpkRsoNo zX=iUDMs-h7s{^VG!8+3cE;e`|364qX@nd&-KEM(yi00ub&o{}aVDIu_ETMP3^$t2# ztR^J+h-(;YEk>(AmIu3O2=iXp2npQWv>+#|ehkONpxWF^ZJ?&mefC{zc4=c=#bwSn zf!>YemX}kZsNzkgCDVDdYhD9Va~krzY;@#m3*W}Xk!TXN?oyAb<_>Nb4;CAzVF9UZ zOpxsM1`%==asLJ{=N9`!;b^wUVNO|c)!JRsJ@-^ei>yb>Eh+RuA_=d3)1a}E2Ww?El4;Xh-dEjqm40%i5jl zrnqBU7~nH7PN;#Iw9vqN=d8{-bad4*VM^}XAPxa$!%%b&cl%egY8?_Zt88t8p$)I% z%V{6r2EOdg3o(14ZUqG@GMTbezTayh-<~g{dhY|r!M(i zH61LseIR(Kb#GlRvDOmcV`sV$_t<2olFUio%7D#BHke98=3ZJ^h^a!ek>QX;fP&#* zc*d^7LYrQ7k9vv3KC4$flvF_7wu6Tj#@pjEmQ6|Mmyr0;7=tSg+?T!Ii=|?HpQh|^ z+(R*D0Sgsdhj*Zbc{V-*Ih5^Qivvy*%v^NSC0++_2HziCAPnphQS_S-91sj!{tQc`nt}gK z(#Z-9qMNg@0fk+Va`tbMYx3>i*KV658LKp>Io1)mWsn(Pr-0Je{s07+aOVi9l85UtE?o3x!>RCfm0vS6Wbtw>&rwJf9~l# z&_&<~z(Upd>^{G^AS;wphLzCTlh$a4 z*YIOJVj&gAAa&Wphg>GNO zQ&e~8$O7hjrn5CMuMr@y$0Ie?W#|0Md0pfXV53`xjBf5*+E1kZf-jedf0(`wOcM>i zP1kT%2;6&}X~V2Qewrg)3M3->AbfDQxW<^_srxpA4?YEZifZ);aa_&vcuZ(ry5Ftse4 z3^J4Y^;Y4o4ftDxluBGQibimo?s|(gl-u$?_cg|422j_d3ABYeO=23KNb*dygI~?-OkGfWPVDN5?+6za-V7-hH&)-|K*~H zn9zHTNdAJ@7B3IYCg!|8mh6R{;H_Tpg}qZ4r8WkPXalG9CKZ@XIV+HX%8z{|VTgBc z9$)OE_(j8kS4^)VoDz6AyM>I<1EDz*%SOvJ>9w{Dp%?re9>2sOlUFsO&-q-WsbV%g zOl3(pSxxfUL`yj*?4lBSQAla>0Y5hPpKQC&vV9-yw`I1tiE|Oei8GOo(h%Etikkn6 zO^%EUBi4d{tOi{2A|~AIq=jEFUjBk~;?dVe!>oph=H?pTVj~vqDR7r>2k4L=8$8-B zu*1qG_pM4+momiSc3c|C!pVGf*ac?B9_P7LSJRM*d$HjCsaKx zx0>n9rMZL;Y9g5585P|uhn(ZpZ~HcZ5YSFpRFC2XqT$=^InP{2p`R~3m$_{%7Ok3= z2NLKxLLqQf#BjWXa$@pMY6n1h=qvr@Y<*qwt(;|D)lJ%ZL4s9Dm+s<4TYptp2fP)00mDu7#>=7!8KnM_ACpuaWXy(VoJvlj?3r2cE z{sss%X8<)o%D?Eeppepcy6O4|dx@K;ytGj|>~i$Bqvxau<+({Ke(r{D=fFr&x2DOJ z%V~8sPA=p*Kcnx7Ku>qXMkiV;g71h37&-`k8O`k9nlHEnFi zgqIZr3$7ugIo{#~)wL+bg-N;_8N@7(aat8Qn*K)fn`1-7GPWxim3E{`Dp|jr^9{~R zROT=E>BMGZ*-JZkyU_yedEW=NMRbm4CGI)qBX6iUo202K{-CMeUxM87=v@=Vv1^^K zeOIGef(rbRMVS6g2_;&<6TlhVBi|`}p`l!ET;B|g09!G=GnFEiNXW*?@%ucKk1)0b z`N!i`dPbrQ9YDL;$SkXCDs~GdJ!6C1TW^G@X`uxms@M;FB3T# z&_BN=jA9;aBCuyR4HtM$1_rMU3+eM36a7K*e4VL#dTB?hPv>9*h4_YP*l1PgbPfL< zVq>7GU&6HdYo)3?FeTFT96wE!hIK#ItXv?K(TzgEi)+O_ZxY3#;5Y7s&+*;lmP+Ws zYMYq+q~E~oa_2Lx0>N|{@ET>WyJGA=mmk+j3(p$nJSDkjaDdpSj2D>4^7*Tz(*`qS zC*`D4;YY<3WW>Mr5!+Wm&6tqrIw>waAmlXaim`9hxvvqP=tgZ}6Up8%jbxhl+CpEE z{Yjj^mMxOksKkz^h((&B!XVWn50ucV2E%N#%;M1GOUWo>%Iqz>fl!>ui&wv^Sc&}3 z1MB2FU5hcUf*H2kY^T>WL3oB)h9fVS1<7DvoKQ@25S6l9e&XRa3Vq($3Xk$`GwvKc zEE2AmQ5VNomd&-IOLa*1B~p9k^DBdoND3j4euCVS61|_}sYKUED_qJSIaM+xv@L1! zjATGce?hs>0wya%>a1Ju-#)IkM6(@MK9H=Jh9l;si*oFhZ4Ir_zz((De&um+|QdFkATdi$Fwvy(t6V;wso7 z(Q{sJ82#AW>^{fN1b7vI(xjr- z!%?TsseCcUcht`dj9jAWCJ?bXibG<fdcrpO7VJEjkQ;NaV35U^abDey~|o_S^eY2oz{CXdhQ~LQA;Xn$$tFCh`QM zmB(c3(ycaee2PgGfoP~tB=tS8e5;ZOwmlw5hjx8nClh;gJi6&j5 zL%J3ksUhA6k*e2$2`=$tnyr&VDA}=*+zf{BSb)+-a5{q2A=aGkz|Z-udZndG@}$p1 zKeZi@O5HuGn$^u8-5tcxfTp(EVD1IAaomw56qVZfNP$vxO4f5q1WF0YJ^0kJ80g{S z@z4972h`X>KPou49rK6$PbvP&!R9=X_Sgzb&71g1yIQ3(lPcGpp39h9u8zGz4YnDr znK_Q(*N>s8!t(tai8@E^>{0pDqo3A_ASfjgBaZ9dR0^%*Qf>Tnz72GPkc7f z@Jw=0%@r2?ddFZT6Hyv-md4=Q;Y-^%Z=8pS_{#iX8G@PO8k+ByhKCJttBOuPx?Hw5 zK8<$(T;D(6jANIc?n2|t>ns6Hp`1T1L77O`Y%{>0pUUqZRrkZ~N%eG1w>&O14X1v! znl9lVReh8QYX#xbP20~!kMfek%lXktSK|vwkZ}X68%_+Ox}?&Dtmi0ts7t`8hqMvH zgKV!*m|BA{M^#=nSfZtNf2)5ypnT+&j|#9rJZfSoDpi(+&_=&GYXhe|3Kt2pJsAW= z6dn7?LIjmK*1D0>DTIWI<;%N2-XZLfcM%1nWVo0c1YJ@BJRPy@;xIiY#uqP#83w*4 zpp+?{<;P?hcte^cF3^?I5v`Aei?-cZBk|}X|7d51NZAZfGR`>IF zJku?aMjItcO7(PO~FS5rdRq^5`UF~N8BMf@#uRl8G9oS-pQK;j}+kgzS~Y> zT$oeIipJskZ8q3&0IeS9P9)6^8$|Zn15?wYH!)GN zni!Xc=lGSVK^WLY0Cq~}X*m6d-6wQ~%WM96kJqT|xN?!M5e!ec7S4TGtYwwf=9kB{ zcdr)#7DqOlL5_wXk{L->m{aZ$eg%H40N3+6Kz4UEAwpu|gZVa8e}YzX=v>E-Ov*_A zQ1HYoSti!oC*Xep_Fgn%O#iC)WS{!}!u2Fi_poZ^CWQ|{6a?^)7lh}KpJD^_-2 zv&OX6E@H{DQ>(ZBOWTR)WuiFo1{mA>s!vz5)vg{99#*75E#z=N`X<6ZV+y7#657IZ ze>gNVgwg&>_=_Mf;7P~Oo>gQmXBR8hk^(dr!JRMVzQ8C@I~1|h%jl-FjXmoXUi@xA z^?#(EsS1^d#le2X*0(=ceTV~Y*{v%#Y{n>?EsYJhVWx!_tN83gVL2IUSg8r}PdSxH zrIP9-t9;g5sJ_d)z6b-4Z%DOsrjm=j0SNX3;#^V$FVmFAvIdmA{g60ryY6Nv&Wj2| zC@J&?N_nSnCO){sk*-)PU2T5x5@-6MqH1M1B+DhczBVG{Y?_|r(lH(iLwIqbak*DX zJ&Zq|X*D%825w8V`ewFI>oHkS%fw}sD#b)3U&i-SM04Q1%RvtnD2BuAqU$umMvdd3 zw4aeq=Zp+-VE`7PI&t9NaD|4=26{MO(+Wtut^|WGzyp`DUy0mt|wF??OGALZ5-@e z*=zS-I@m-PPMWb;T|w1{3Gz{}NLtjKq;0#>stkbZM`trtc&gI5Z(ijA4t+6&70qB) zjsfV$p*uwc8{RfcPYr*r93NNBW_& z-+}3rRWSn4OlK`I-mo(1L6{){ViFS#`?pN1Voy(l;x$K@=#jrCA^$AWXj$32{5cGp z5~)*W(Z$&PMG+1+5pE16XWn;pB`@eT(uMjF%`<=e$J z%JPAt0m^In>wAf0!TWU~_Y$9&xf6vR^Z&!D8>nG-6_*`v-kL3+auy_)l?TM#;MKJY z#>*+-zd^lf5MH2b57r^G(TW*~#?l8@Vl5D(OJS`ODl+dbg2j7rac`q84AcrlA~y-i z2cWWeK3jM?v(-h*wj=GUxn>4CYWq0prl`}v*soxYt7MY&BhSj{OEP@!5TNfOrTbFX zV-prgzO(BTOya<~9#y z|GlI?Ig5PTzf0{wBxVeN>h5>vfiEDV*fyM?wwO)q^1`sQ6}a{86~T6Wde$MG%nd*_ z@fi}iJ_cFW2ntQ2~V!4B4j@FSE*r$t;oZC7YCh)|2R?z<|;-RWqbJWH>{7Jjkq%rG6&Xf|6 zDG@S6C|-84huiRf9G%d+AGkHZFv))?+KI2=_2Ck0r~qXLmE_z#3SoQv)hdEq2w*1P z@y|5#sc{?&|4)1Mh*cj5T)pKE!ZvtwyPq8Tup$7NdT*>s4?Bsi(ojRXt<@)%*<&C@3@qbapS)_(1dMm^!YjWaj4@;8HsF%`J zS@&Hb4SNkel>+tT9>nK%YqivOvcKP?UFMngBZ$SDM@z+{<{en7g_Ckzua|c@dvH8g zDwZ^$toL|z3N=O#@h)@!XI{Vw(UmdCA-z0A;*s6IJqtkfiUlVk{6KN(Vq0N8#hV4ZK-4OHliOyGdaWbd=1hJbyK3w?7;xQk9^Jlh~*n?EtHli^H%q|K2*jNAPXnWR&a;6H8(Aq!1Al5+& z^I&s&5tI}GR{l6gtcg7x47oY0Y^wjOAZ18krt(g}k82KC7!gaclLgWy$2*tDqbaWm zg%pW6v$4~$SN=zZhkfaJ1|w%90`bpCPYnz0D+?9D=5(qU1cJRLkk(@m!C5t#)m_TQ zTC)!O0P1Irc~tv zCE1aajy9auYio?th6Ex*9+=at5n%g6w|dw>&peLOO?nV8W#ZyZi?Hyj+f2%-7sRBX zwX*l*ZW=q^4QMFb;E5)^e>7{_6L_W=<>gPJ;tYFq)#>1TNB8bk4ur^-GFc?SL}Owg z@m1Ev4jM`A7J?i3{uit3zwp2!bp!TsseUc~dfVn?wuTq5SmrJ|UOvzXbN!x|>A1M= zC_YdMRfz&a^_` zl9p8^)3doQuwk=+{2ZM8V}s(}Psq6>N%YwuzBxn(3k}rHr&^DUGR;4YC$qX+IAcAr z5uZ_D>&t>qr!j$+jA2<1NNnniyal~@S9mstwNe4%evnhWmOT9o7dQu!@uYV z$*4w@nx{D_lc2m4Nu1W`yN0qc@f`9KjCY(8(4<+D#pb2B|3ulDVyUA6@mi4Y51Fr4 z8%AEzJC+hL6o2Z@dw9Z2t#?a$-i^bPeOcH@0O^n+N=A(Nq1d2umHjR9ZSTtP*rBmc2L0 zoJ|yb--&gfTQO=x|8m+`9ZS52&qO5uH2h&XTiGIOR@jMVzj+}Ctgcibrp1H>sDbY>kt5524~1Wn>gK~ zAhc+e4Roq{+U>`ziiOwDL7RSdEG_rPewcIiJ^{6qIcdMy#P03_x?k21RGf7y`rl5b z7HjNvW|DndwwX>u3rKh}GyhBL8vC=-T@@=qa^K?@_u_7oBp3pM3`iQ|gyll`&;k3u zTza1^)~e0<7%60fo2q}zl#ZV^(J?bCI^AQUuz3xM!(5NRz7sk(Y=p(%nf9}2NgN)9 zRUpF0H$(vJT_PoYaYE(&uf$zSoO(>A%S~hso6S>dnK0IczN3-wh9xClZhhwT@N#X$Lj4ViO!gR5zu}#;FpHxAQDdV=@#u! zK<5ZG%|sQ!^E@g|F=x#Q4DxW?t-hQ~&5k^`CkhUEgCY0vI!<}NzlVfS!8IZ}2%pdQ zT6xjmEd@5<^Sh4mOAr7@ttq|lC^}Du7a?C1|+dZwRUa5We*#v z&o&5nP~ATqs5Hi2;?o`Vs@ z0p?>OFPbhlm-NeY9#eit34$*n_VR$v>MyCvy|a7r$SsfuH4wA9v}Bjf%`DWbPyBXw z^!~blq5tk%wU(!2>wkwcp_mA%!2PmMpi3F<2lECZ_Mv|$t*d^F8yrl)jjXP)V%J_P zQYK|5NS4eysQ%g^fdk&lETyuI&R^|QY@l+GOtgI?mpqY@GC&#BpgNyiD}Q)0an_@m zfMIAu!yrTiV%^su$dCk&-v>gItK``WT0_j+@(nSaPmBxm)8SdwGvO)JRa@&dHBOq; z<+09^>s``YPcZr6zDW&Lqu;Nt3}N@GeiXjWO(e{d+oQh`ySdVlBa*7s%Cq8!+#RTz z&9fFNebWH0BRiAXer@_mzY10X^HQ9$}wwxI9f6aSi%tT4@ouCP)9nz<$c9c@(^}A z1KXlCwMrlRXbd+B03%J4Y?o5X(==WE&)QlZP9vYEt^XAHoPrc5r0}sn!aBP{bv}v4 z*`J_q>BY0C?)G$wh*jn#PNo6-N%3c|3W0)Nh&3|*?s@tv4tJq|XhFIx=dP~u8G3G_ z7&PWK{;Nfv5@y8w{U9oQ*SHxrRC}%a3@9E_$?>$kuLX&=z|H?+jdw9ff=?2|ZP23m zas`WY6Rrc=4}$iTIJ_VES)HuhUYeKCHje%mY?19?6f*)p-Z@Ic(&aX0a2b%|_#4Fn z;^0knOEM1hMrH0L76j`EQtDA1?E%}C@bsKvUg36s^?1Uz(gdOzbE{V*xisYguATPC z92$T0rpycCUMoOd9aa|sI=KV5C{NWGUDH7SPyk~ zn6)cx$DswN0i!}A9+8WU(NhR$A8`T7P=i^WJWJMxWI2iJKA2=K@G$b7E~8MT?9Hn% z76~TM&OCl8M4oeFqe*b?K75gX&PWNy-l^2oLJj*QTXvkcK*B}!6`oMP`LP!qH;3yk zFoAbY(Iye1S=cX)Kvo%<%sS3$^bJYT`nTF#-_dSTY8;w=nsd&l6KmcFkG8uoLiP7x zNV6DN>7%@w-2Bctn*OMS??*-EAE;5dp7|EObaiehC z^yZZ{jSM|A%9PvmC7ZTL@^N#5tL$Vy4(uz-XwHa!!R(+uKkRgieXWMj3ye?#HC1Jp z+9W9kiPGJceU}2lGFUNW%!wpOI9n+j)HHb- z!CiU@M| zXbm}2D?ddm1E7vH@j&yz$zBFHk3eAOn=haEkX@-)Wh2*qLA9b~-B|8Rz_-GYyc-H* zi#Ar0!!45jxjTAdzB-9I%-=u!{%mqJv|FWh(I;!O&0nQfSsp{1YqzpZ$v-nblyXjH zJyo9aft^fLet+b>f<=q)jGLvDt`beju9LE1ndtkL2xi^GssC8}f zhgrC3@qIwQBx(_|C>QVH`iK{#jDJN?UQp18Q(1mALt#xy|ObD2(yojrSes(=tjCvsQm#r{qnjOAfpAj7br9Lib_5xNyC={(4M zY#DHtPjSH2vqA{z8wD9z&<7)4=* z9!uG{Hn3JLBwJ0B441RL$vnptQ)Bb`D^DOSVG_B4Lw}4K#bh|A>AKW@ z=S4jw2_mhVDApEXrV}(*W^_NG{`_3dyn6UUbIq6-xWTJbq-!}nMhgx87j>0na&n9y z{WRRKl1784H3j;4{$VS25Fu6Bwboj+Jd<3dv|cN*3W_IuwpTu-{N>l`Kzv-e4l}*+ z&GsMR+)BQGZOGWGaTBH$6j9m8RvmYH-I^PLr3GH$f501)s%gmQ@47jxxrZtHtpqSE zRDJt6vB)n+wIWl|6%J_zBN<-p;j;OiN2^LN?n)mNi+}SW)(O+UuG&jtIcP(cDk+40 zN)Zc9>iZUsED0lWCf!3CxRx%sbCZGQ&I;E#oLQ&N7C6aOq9yOf3yk_skO_@eMC3t> zMis%em>`s#5G494IlyeiljxAG>5QA1Pabq_u&p})yEw}IN2vG#;uL1?^iD2$v@I$= zi&lK<|KX+O*>2FMi<40&9oaxkS|IH{*h%Ef%VCwXG;^=5KSL1GT=(g$Ec*Z8Mc&)F zJv>PAX>Nj5pK;nV|R608&BrmcsGu$NVXl zMFnYvi7U6eV~pmmnR+OG58R`o+yDWGD9QpPRDY?N~sP+Vf*e1ZZ-i9+P zRa1exr}dWQcLa7M&_BA^!B}E`XGo|%z#)vYkKPF zqlV!Ao4vG}p27B1OF^OL=*dcuqUlyIBo5%ntbgvNmylzYn{KkfU_O7orCFNxcxZDp zo*t33A$1jn8U#dx87-~&-PzQrFNZXiFbyJS_S=t=c54u<+h_T|;(eHpJ16CCI?E&f z^8jfh^xRzuBN%<^hXXVOlO9tI$b6?0M@F$pAh-n#*!8lvW%+!8GqIEA^@v=U*sZL1 z6Y*^Jj^OFWd3F=F%uFU7>@EW01KU20I{m=awGn4(iQ-tThP&;GYj;y|fcrCr5EUvF^V+l%UKg1 zko!KEA{i@BN(%J2;kfrJ0Dr3ivaF*gbFA-_3Qa18Mq~==R%k{bLjPON4%>RYuGrUT z5uL;q$N@vqZDBBmYz{QM0nJ?%|N2RGY3cgxmTqJ)4$Sjc;@iN>qQ%(cAV;1q|mKRYqMQTOy)$)l%s-%MKd*#UjP{m!X{Gro#rpG zI2Uw_^XYa8;h%N18QyN<1o`YjveG+ppF!9{It~~WrOBigq@EaYD>7SycM`d%_2ojb zgl;SoHWAPb3aC@%JF^a9pLa3*k5$r4cFu5fiGT`W!8@qnCd3Lo9!3qH*P48<))-(r zY|6tYb$r$%t5ry^6K^Ia{fJ?%y+)C}A~?D9#tBPRf_AUQefo)-Kqq}NjL_9|*LyG} znV!gFEvQ!EQK2&@G%gC=S*j!AU^)md|08a*-}@#bw)Gl+a=1AJIYh)-?igpXOYsa= z!b?LL;~OHl@K+-HyfKF>R~O-pR8D*xMWhM=Bi|#vGzt*LgPe%n0bFt-b z91;f=i-#F|DAG6^FeoOmI?~lrc?j83h z{olJ`#MWrr&fK=@J2+5AQmpjRmt&o?oyr>e)yQ?@p7q|DN?Cj;ZYWosKas$6e@+1A z0&R^=BAsA%SUIAvl?h;0MERp+(r;V7ME%^w9$6?y9VPmB~(#!Y+=hxI-0 zl_;8&g6}NP%nHHu+rYP?F60@%cWqf)5uKTQwf!c301Bm7>wmv;o!>_|rp6+|^sho5 zJ5+|4zs0Ir8gjO}P+R4ozc|hz7M*n14XcT#_JVlbQw>^_AN#mV`;=}(%ClRyuw`pO zn5^6Q4YRA;xk44elj4?436iA^*D09?$1!5Yfd7A#ia%(^q3?3HqlcKCirto#Cc`|c zrKoPGSrf6()~MXod<`^H3!Unqo6Y%k_H;G34lK14d^PH|>Fce?Y?u!;w>{Wu(C$r2 zf{ASb`i776vI)Nrt%Y-G%r5ER=V29yz8*f!{-{Pi^5q*(PiPXFmPWvp;in>wNnlvYKo))P)U5upS>>~L@DI) zj=zAU*{_$`b_$@R7fSOrZw^Nwdejm!iH=-34J#Aakf}}(St;41fcsttj^4cO{%5Re z;!()S-R8CQdCmC(`%=&^e||>1HXiSympK$cl882mNaeMS1XqAIt}cs?xF*{XO_LK5 z&ZPf|3XAlm8$0EL*I?cEOF^qyK|?Ki(Dw8({SumkX;eOyibQ~R&Ym9|%iuwfVwxog zxc9EdJix7;1$1ozX?f*lX%4crU@efZoL2w~Z6#Gm5>flJjp-58LkT`IeV%CF=$v?^0?S3*_dVuc}SB!_T( zuSq5wlO6kk4Z|1pYcQJyLMYX-oOerV#MA=FFHxkNdmQKR7F3EukrSw2(a?-|v60Sz zr8cUc+D6jmB*FQ51l`!C>BF2)75f^}jx3H+r}i%EyF;0eB}I6KFZ_iHj@Aot&e%+n z1869o+I{`?s~EJuFJzzoO@1CRO3Qgu1;gR8>{erTsc!V>&q_APcyuIQ1jA(Q( zyPZ^iLq$80&bU>nTE@fF`o|*@{B5RuevE2EEV+uSVtAn^7C1bo31!qxkEb0>PX_oT z%V`mHf;e0Xs2&#Gpb=`S*AJ7eubBtlo9i4uzE4#;diAK&)?Y+=Y!Y65SwZlM=$?7- zD=QNtr-^$pyj1p}XJBxM!JMzv6r@&Wlf9e@>av7@j zb#0g<2M*afkkHX)9^FY0$mSt%piiy>k?11C{`suA(Z=~t@!mCG?4lQ{w`)9S4*4~o zr!l$Z#NVVCvq57MmoD70*wkcUbBzC(OI*&SdgZ)#w@rfEcReB@^jV(~P**I7R@p>Q(iTi7Gua|lzQYFGQ%SH0)U>&w>x1;q0JP%lATlD5? z86|nUg?Oh`g)Sn@^P&(L122cth}|KmY0^5K5gGyB*|g%SIhehl3>6F5CF8t@moku{ zWJ77s!qX_a-gM_DUdz%K!}@+s2u(^AA;$m#pBo2Zw5v$N3Y7Qz)v$Oor?68{ZN=1T zseB%Yx^6ddNvq~E>?KM=H7+h#Kbv`M<@5n-)ShLtztz~R)+3yVo*h8gWuu$LBc{7W ze}-k;xRxg_jb8K$VpBuW0Cedu(B5OUx`fmanyonbd0~c=p8UkCr^B z9V+^ood7rlR6?sKkwLoH|r zsfR(dr#7%(BMCe~eZ(PuI&kej9;sMcXxV(TX2*Lch??IOiJl%)b&6Hb12qe+Yx~qW z%XnCR;C!&PUj{+dpaWuy6^nFIx{|<3A&lDog9Ne#j2zExkMCU8ySakOKV!H!*7x2C z`+_A%{i#XQ$1tv8N1^Tr+8)d_yI~vJs&OcngQMOJ1E>nU^lhDO$5s@Ix}Fi`&ET?3 zA+Lad*_MxhiJ2TeLehP=JNG%H`V;VgqYJ zAz=>&5*U7I?yebo`+pxIUOj_EtC~W`}QPy+5;{Hb&Avmb-is%4!?j8*# zx*`48J4S}>8nFfAHLY<+eA(0nd~mksxwXVI&>o;pbm9Q>_8_Rl1C9XHIx8AnSW4c( z3iLhG2Xwi7N}2u9H{)VZc_EhVu=X5Ubumu{NT0Z2v9!kcTE!?H=ZiuUmBd_1YQ6DMrA_Oi%ADo~q6P?8? z1x~hT8W>qUHVrov*5RGg)ef*Su2Bxv>>Fj8j=DrM?+;B%V^cRRI!s3tEV1*DkG^8Z zVD+D1mh1vm2Cw5z|I;Wiqx}#xAZ;Na2zEepAmc`iyh%oC>Zg!j%NiXZw2{>)k@wdM zgJn0g*Tg}*0wnK6#qCrC_-c`cQwrAvWg%;dGmzN{TtghGDEzT||KLH4b?gOMJR0OW zAHcf{&Gtw=y*vkBAw&M zI>XrlQRd4a`ES(aZ>$Bh#;Mk#LA=7*_L|sCjzhKowWYq%b8G1#(l!O}P zaOE#b?TR*bEO_U=$!!LHPY59)WzAy?9-f2aptib`U=P>I%v5bULSV@7#AGMrp<3L@ zpLN&K0Zgu{j{|WS6Q$Ii9fpd*$`z2+C;qU~MKY!X*zY6xF&)0SVI5DBehy(O`2mK6 zD3q0k)|{paMyM)B;=*kv3{wb^Co&ZM6%)4W-IJNkq>^FQHu_&co|&r9iEz=G}YCcViW1|h<+RWAS| z?Uj}y55Z}wowxn%5O)j%rSyQw7$7LG9sWgaL})o(z5Y?vxmqP7K0zLyC|~n+>u|dM zCm205zGa|7e7t3R!?>QZxoZi=>3X3C)ItJ@ZA#~piRn72JFf`#zfH7jX`Ox7;lSwg z2cN(kEsI@+W!hj+hZxpS`<^jz?7#?AEZJfuT*^YI-5VWLf~;C*Hz-Din@4r9H|QXh z(;>{5Opk89%b^AyTU0j^EYD6xUkP>TvO~d19F7z zhOY&0_M|oZ>+-d%7b6koF>M=LsIoT@R&ICD-fXFuul;yC$A7cgAe(bWGBVi1B8>sx zH@3yaR)DEVJ2m0biZY;{bR3NS*tQSxmJNFviQMfz?IoYM*vo2C()B-m4=VtJ#31Vb z_L7eueZ~#ST1Q*UR0=?MfizFC{x_(qRPw;ak9{37uX8i+G8AXte#a0Hq1!&T#v^95 zE)sf?5^f3l4n=xA_?Au0xyyP&FYLnt;au3DBXTVb9jZctHrfmv!e{zG!I3IyIm?Q1 zG;@Sbt|r2nMorC++2vviK6T_3)n(fWzZdt3r( zp5x-bU%8vB3oFv)$0L6+Tbpx1UPURkl|Ng0C4;8|vQO{w3Az@VXTx_y#gb1_p0K);9$G>JW4zcryUT zt4u8kiyvP8X?W8Zs{l8-)M44Qc}U+2s!(3E<#hDzX)5B5zk{s9w|N=|KFj$UCUDNi zKPRPnOr}7A90kJgT96Uk2GxMq~E z5+t$-V5)5dE-i$b;h?Z@-TtLDP0~BIb+?4 zRVVqa?&Nuxrv66t76cO7hBfafxsguKc9x918ATP;;#C^$GSgd)U z*sW!tC{%1`m0yGYw9b^KJX}C~6unr#&w0Cv5yqQe%<|m~>g}^%LM`84Dqx`ZIi^rg zRA-&XVY}MMAbm5+AmEg%OF4qiS@({N5eCnbkAoCtfU`yZp*&7F$yxe`9ewdfrBNpk znj`+9g4PD8#WlwpOuy=-J63Q9K`8MuLjB$I@PlZ0!6Tzfov4QRtzb7R0K3~F%{#bu zC&!CFD?|*2N{!ZGz(Lq^XBaYH5ooq$%1W$K1_uGm(1vDDQeBZh9-865m#eK0xjj)r z3_@YHS9te+P7A>0fBeA_Ct+i6F*!`XSl_VuRq_l%E{t|pAazqk`&6lHILM>)zlF!@ zOkB`jc3tpvn-Jwgy}w~=IL#4eeM;O}p+`pAGA}@Kykr@X9|`_2h{SBR3Z2QlKpBOASit8yCr&q( zkwEbCPOm)oWim_r`JO*wM8S&wGzzH6DSsTANM|Ts=7}&$k799_8B?kdD|;3xQfb-H z{$g-Jl^MMo$(Gw@-yP+Bcsp_qbVWU0knHHUj75e*vVmG$S{asynL6UL1<;W`u0T^@ zSvWCqVh3+hF7nv;Iqm9{~ui)?So4eHf*8vvzBX0Ek1g10Pt5`+EJM3p~BO;FUkJ_`W7QX1S^!SIq3;pb?$X2tyc+bFm&O|F5wS z$oW-GBbrhca#H5MF1c9_Y`&x=vOe_=0^}C*LRB+}JoWqoAY()r*2@X_WP%Yzb@th^ z=DUjx^oY0v7+li0Rr10uO}mx~$i@d7R84_}G3E)ta7mmtSW~fPGM@;dO6Ll5uD4|k z=rk3XQDw~3Lv}Q@Or$fC!dQ_bvlPni!UYgH}pOG!P8Q47a zJ0qZ463ob2SpYUNH{tu4OG&55#-crG)ZJUVHaq<+CN*QLQ3cjQNV^iZ7=qlU>#%#g)(%3kWqk4QnysrPweB!lsi>^?}%K@ zajH{UAhYAzUbIztN++PrEd$P;{_}P>(BN8p+d=cqok!hgT`ZnS#B*E6Kd;eDcxFRT z(+u$kot`OV#%5T}(|UG1kjuJ*tPWYwd!9JVNBS|q4tRiVCg9!v@G6Lgnemoh_KxP! z#h^`-gUsnC&VCVWEcfaDGc^Xcsedx?;|T^^mm2xZ-4u3>z5}Ig8(mD4>l5~5b*SUo zIak@1HJ@8-^elfi;81RFpK1Om96+`}^eMlRy&NZ@0N#lV)lK=#2-hAO;Q`M*3a+a- zZDFGJCb-u|;VkOlU7>h6M&N`q7yCwmMMi56O(SKaG!V-r`i~RNsY=}SS&8=!p-Qz- z*b$E|u)4793;kyD=r|G_DQWD2+*hy78Luy`=GGt7q2cluwKs|0`fgY8>{DwX zaLHy-cosV@stK^(PNtKpbO}r@i8R=tg1yB`10SN=U9j#SKif<6!*qSRJF31)1X>+3 z?H^0g98^S_`H7t;ECk#!x4YGkoEHgWZS{AHt?j@x33kK3cW-W;wfCpngLvK^M(q&N zjPgWhzq1qTj(+M_+Tr?CC}vdQ%^cBz+ESdG5s35wd@Eiz#nj1@-g%p%A87i=IaU z5`ZJ|_C15M0khDnnbMa*4(G6zrX$}zmFk#}#0)J!iZMA)UAS0TQ1M)%*{{y9BhEXT z@;cgx_~wMj>i-YZAuORqw&JC=6RV$qccZ=|K;HTe~v*9c%isC zqMPLkK#U!hRvXZ>7!C$YKAL6^@mx+mbwO6P9ZY+b4BY@2Q(9n;B*&PAh@3y;1`zKF zVcEsjvv<|nSIp?1QZeet-<9eL<4d~>`h>L8GTY|){TE~v;LAlG_V8DC2#2QvtEFyv zu~I%ESJx?lN`9P#R2&*a9Jh$*4ND@RNiR7Ip<{i9WSnWH>oW^kFj zK3oKBuVTe_Lp$! zE+d#jiyM1;bl|ZE5T{w9rItE|;CCmP-_9#_K;R9~8`Bxry#eXlLYxVi1CdiDh)-yC z1=HO#KHiB~a3MTFyiP&9y$Lu~ZP+%vjhW|U3<;HaR_4r8W<^3Ip$ui7$&ipSqO=o* z%2*UKl@LOaM9HjZK<3D|wAa1#?7g4&d;a%3j=$rmb>8Q7Uc)`CweGd{jt1`^t$oF_ zq3!2IudN<0wQ`Cs5ccsvT~&)(25)MEiCSu67p}il~Vv41fH> z)+jR7Y$cZCKF3K%2)jsSjwZ%;m{pK$rge>E{>0UN=x2Q@c7u3?S zZp`d4=jf5lZcd>T>}U`Y(;1HK!b;Y}Tv_$Hg?Y!r<$6KUuf?cTwSsI;trTh@`4 zaXs45y9?+mWs*_CQS0v9M(0kags$y($yz;XT}LRpCNH42gW1mT^}4X`qxYO*0s@-# zipm0_rQS0~4-KUi)GBj3{OaR~AYe?rDqZJNLio^3PF%kC!!7<3>4eY2?))axOq2Q< zMm%uqh2=Oo(SdH7LgvuZ>^Y_15=m7G997|ay{c6FMq#$~#q!DA ziTiep9YZr!q&gNOBrkt=HB%mau{b1MTXnosgG%E1L3tzJ4F1C2iIcx0G{lw(_AS?& zkBiK%u2fvK@0adhZ{o=)mQcAZcV=z3{n+@|OV0O$Ye|1q=Ip5oS}`!^f6nr0B2NoUzt_(@bHgsa&cEa{r;RjebsZrGIB=oc3A$6@e|T! zD_6x$G;L_#@;I2@CDxgD@K?AQ<;j&Jq4{!UT8&V7t*S9tiB2x|UdxPn0-ZQRx!Ed!RnMOl(M*`QTuI zaNto{?kwV==5xx1=EurX>^NOmV z|ImG@;3^ZH%sCtl=dgK9mS$oAro%T1s-+veCS`rud>K_ru5Svz@ zY9@ZwBsz1+?9jYp^&3|j*Y)4(v~2n&5;fnb*GG9~+T=a>NYSJ65`$JjA0J+EIuhmk9D@)(|5;BeY*lpG~>Vap6RIg_PK7-*~uTJ7uU^5 zYf_%?NT02oT}er9n7B}u5nl1V#7{B$a?a-|Thf$!qGM7!osUagrdQu7WqFtF{p?Dg zz%7C*A6~C3{C14o+|m^dYl2lrX3ig{%8!#9=aG_WO!yYUt|(t3N+57)_UCAb%Z14w zo=-J0?-m3cNsnS^V7?R{1Lfj$yt8pbfACqB|6A`bKy85EqlH0hzc+3`VRx*xmbh9%K*T1QE5@V==M zBPF|iSX(s2= z$Sdxv{)H#1xttrq-XC)(nEPLJ3~kWo7k`;#TV2ujz1K5O7Q*h#L??3X_~L%wZx%wm zp(h472@YpYK|hd2L*!d7cgvMbozNq%8tJlKBW;TsXSrAQ1{VmPh?@5Gf6HE)|A6)L z>LJ(trSzO``9|LDWjmXR0!2vAXY@U3I9a5=Fm_Yeuk!T^Ayz}p-zp5PaU5|46>qNd zr{^D+zGBSVYrm0}F5_m&p0oNCNO-7V_VR{4oP z?^wC=M4a7co`R&*2?u`eZ0T9C2fv(8d+a+@w)yM`hmAqyrrT#8r?Xc-ynA-XL&u6H zQa-HRXzJB?13lX-%?1BOlKjy=JIdqvW|8GY{iVOdbkyKduD*cJn!(5V5dH%8qVb$?<^J2x z=nU4iE(YtDU3q@fbm|~Kb^o)@scb3TLrkun8y7aIBv-EY>fErH@9__zoj%_fmLNG` zo00OK%gUjRx3x!yc~hTISZTkJcyZLBUk=}WK1RFS=MfX4lclx3em~CsTJZQ`{pLBT zra+m4Ix2LLj=R+_NcTs_T#gwi`)FKt@?x-_;aQWE8OKL~gPoK6uh2YHyd+4)+;jMK zPOX5~lm5*|I&yMBsl3bCZ+>3uE%i$2r;}b-A0?H_HdP`Y<5p)+^L?K&zL&g(H*Z6F zcbTx_r=6YiWU3Wzo5bCxCU?c$_(i>R?`eGW=O$N=Lh-bmA-jVQCvOzIT)B9jb;3Wy zAZpw%l)5W>pXk^|BfClKXH*VZd>qYo^x>IFjA~Po?{p`;Z9kA? zchH+#Jvc?Mi=4l@eOHAxT^wfIs*L z)sHkeyBmY;HA=d2DaSwWwcxHkwRfg^bCzM~v?t{eI_ts^&5rjyAJm^%#UCDHeSi8_ zs_#2iDSlPIE?$!YvQjhON9_GO=}p^uIczK5?4b(KFX6Zt;w729FkJeEeIeH{zS1Q# zXn!MfLMCs;*wg$}nlF_%16~B4>E(YHl@_hZ6X_82sESHcmwvs2UVLZarQn2oHB?%dH-gwuGn6&ekO_B>`x7xRO{4xlgbyGQuC9n-IuK@0toW*tk~Kw z#KhiFiRY@;I4+hZ{yO$h#Eh|F3eEJ-gAbDyTOOz`TZ>YtXg*MrlApf(l4;5EanHTa zzv69ebtD@&dOFB#^}bL@ua_|d9DO1AjD}peM`FX@{2F@S!{QAos@d$_2BpCJ|{;Vao=lt30+FC*@jF&?dDDqT~P|HtVIvd!sQ@MIDyD@n6 z_PMk6Z(cuG9nlZ%;%a#LwU9EoI_pA{G$~KT_`dMTk;6QD^H1bTzB)tf-83%9#;m*U zvCHa1uKYfs`8#OC7dDD-%cVm4ndzJsoS@%?u|3awJFDqFmaV z{Y983ly}awJ#xHAO_+B+VsfACE<4d`sqd_Wc{7R~x026!Lq8kzal#vyBI7S=kv#n= z)I(zChW&zxCycFF8)sJ>DWBaxXW8qRmAfIc_d(!&#r3fe4Lmq7vi1@1?ln=@u94Rjtym*+qY_>Wp3<`>K=C zzsAjeVvIP{XIc@ zA$I9_=`!8f#|zheqq^H(J@LCM;m-O)xc?|mLLi?&;htgA7d!=b&qY47xNY@oEvDeu z?S~e(k4Cvr6(w=0X9IBdgM3qDBZR_<2hxpJhara^?JvNDl2p(N~@#eI>pjUa! zDgh5)UEr?>autKf=B_)1EbXK<=cq36)bw|BD^Ez}B}=uDRDQay`7`@PQrk;{S>)`o-a%w2~=p7Glem!nIm7>FbZ_y6o zft-rdD<4ii6XD6oW>a28SAJUQCzUb1tYUiG%p_UtCjW_d2YY$x*v(pe{hu9gsMX9v;ytM{jhud{d-(*9mK?EU%suPc|vvzhk^j98NJI1Q()iY}v6#w}JT zhR^x86LS1)B>Eusb;oeeYw4ez9zA}V4R#`fFJ(>7`O}lxB^vrh3#w^aByca4b(|@= z{Ng0XRJ%!&6GeRL^-tkBm5zp0Ax;^FKXMHzE81H=(2o}Le)0y^ORzVuu?)IHMHD<|^8&RN84O*y>~TTIiKB zwKc*G@+|_%P3=sz%-8cDj0?HW$QTWoSrfjprG~!e|CG7lq=HVP=S7!NIzQS4Ukjyk z&3a*h>7UY!tGsSqn9+5bdAT&1)pzR2-nm~f;U|}UN?WKCtGUb{1t!@inmNbm{NN*M z@+UW967tQQnCV`6)~Ot?{aC&rqPbs_exu{6Nu+3ONk+Tg%XImjxtrZH4c0TuY)aI` zi{{6bhkqRSB6DljOD{XzRQBh=Yow#1DNm-q4j*7uu1`zWu4_6_!R*U)`O_`hHIKp^ zHdUWV0b%~k61B`zPu(V0BzE{na)g=5PA1Fl`*9~2EnZjgDUB}zMY7+4zW2mg^)Thf zGFrjQ7Y^Tx|2hy?cTPX0@|)oj)pxI{g`RI$MOb33P=h6lqX|hG(*e7LWR9&W1~J{D zYWqIxy(t~~wBNYyLd%R(hjZEcRh3|o$~PCvnNS?9ZdGLxpYrDxy(fKyIP_#24+Vs% zcF++qmNym7UW?jD*09R<4LU%)w>gKf;>7no`GHG;pGT9_d^gv0ch33F&;Rm`=XT?= z2qMvIq?J9aaR2nn<XF|p*eVrN=ycf&H4l3#o1m*S`9J6k7G-np<=2=C^NxrXq%B&^*adSY8 zveu2u$^W!{#*?t;!Lf1N{ojxGaV9n|$DNV(4B!_UVSlITwb8QU=eI(1qS{{FffSwk zoDXe|I=m6SE{BQ;9_Py#)ybx%Omb(9-!m6<&)xm@BKpu;##I}RkuLqKCKjjEdTK+8 z_&ViLCLH4rol3Kmh&y(w9U57#VGx#9Wqu%Qu;48n8n-&wb^XdX>(H)^hLudBr>#4r zAKxo=z0+mEN=ubEM8%ZRZ9!W_@#9h@_2P^q)u$aO+q3jl=*yN#L!Q-lsUC@QiSz~M zl4KilM7%5;e7loTewW^U zsJc5}aUGXE;t;wbJS88IXEhx+_q5Z12knsiq0Q;4MXtLLtEHFl89marU$iMo5=R7= z_U*4A4Sb!b9ff99XJz6`^h~m zYo#dgMBgs;JxS?&*W0ya*HZTKn9*I@eV59L+V{Arg>~CWi|<+=eJPhoLs!?WSqzKr z_9?uYyd~pnqI1v5BY!AdUxI}6+JY5VjQA&#ee70Gb>?@`GSHy)=R_r;`q_o#rQWUjC-dw+FwD%w?|LHluAN9GRSIlbreN!(bCvlr-*nTq< zpf3xo`6NX}z;QK$e&EYme98^M$zWHPJ&K=JWYm5tO)CbYCf@8)`ut_HXzcn@o?NEq zThd_eQnA64_usv|aCL`_l&oN3$~ng%XJ-=5L=#`0=6z+_U*<3OF`1=)lnL$mRnT`j zqhe_)ivFp4`YFL9Hf%OyEZ)WMniP5N2E_GTm_%9(B8pE_ON#R$HaWQad^{- zNvljLQr}!f(NL}!uLKlBZ_1!UE0yRsrc!j>|H;u_Jpy(~J@>};EcvO* z;wcVZ4uKc(S$?OjKi{7gG89ewl*!`fRcJKW7@tFX!ElFvVAiXp^F+$t=M_vWoxb}r zJETdHhECiYkP;~=(oLY~o(a!Ad_8DsAdOfunotk}*mtPpZr(H7Ba3yb#9NBr^ zjeN>iEnWOoM^Jj*$=pNFn4Tnrm@A$0;u%WHlC+o@XjDkn-Qf1|p_3|`SbrDgCMA?P zB_00!%~cfR-R{16DS_5L+9gi2M<*YD{YkvX{73D}BTb3owImq>Z%An_#_Yc9l9^jN z8$V-Jt=CUUd0ANKT7S2YO%%1{FH!-%~(b9SfVGx|r2emPFDo5T^s^-+pz zvQ^v}Bx~vGZJc=5<@of5?uq(_g@B{-R#i#WA;CYzldgPsU_Vf4AMyFk>jL6#pXAJJ z(-zeeH%eLGoi?>&NJ+TwXlzyc)gEn__@o5Yqnr8Y-rFy_CzH;JO*DD+kT&;7Ozn1j zvG8F321~Np&2z11!lpT!Z!;XU*KqBvHxTWZlx_N`Ri5|hb>+3lD#Fv$a%Y%TPdUnZhRev$d#QvUWu~ z*j&8s$kVXlDNr&^`Fp*jJ+>f6eq;Vc&--+u>$E%*=Q+8(Wz4^M`w9BdXvq%d1(&_m zckwq@EoCUlsX0Y2D}40u&(%PA;m7Ft9~!}?yYdX!#i`{f=eAA1j5IxWu*q@<45282-vAQ&S5Xa zmrrbMkhJ60{K(a?H>Qk({*H$k$;CdL=R?Ky>{anoQi{xYw!@L=p;RCA%fBp5+Cv+{ z^CR!Ejpil4E)2`+en2jnF}(5XgqF3Y^Tkq2i&rLi{uV7-|$ z*`BN!L&rMmm0TnH*}uPsa&~T={Wux)D|Xcru1&fMEx&y}72TrZL1ZqiDnw4Rka#w= zLSz4jUb=~9?qn5V;gXBrPu`;=;IZMbUHCnU*3&&>b*6u1;=m81%?{1R{G+pOPqhc1 zESR51@$dHN$!Rjb(*JvGDXQi~Is5F_csD4JO9j3d|{P zte06pg}Z*xtH`yqC;C~bD_F$w^8x*i?rZPgXT;STU)VXoz-~#)e}idMs8~bT@oC7B z5(f{H*4-^;j7+89)#eW|`nzhSf8eG{yp;Liy~I4NS484ET;3 zi|IwQ6r4IDctr8_hfm@OVN=~i4&PEW6(l8Bf=FIism+V!1|4f{s=J_d@JLMSCBN2J zZx1YeVaYpmnyQ>Hx3e~zKIlyVTVQLw7h@Gcx2$}i@<~;v;n`se!A;hkhpeK{2z(Q= z?qnMH_9(~Q_$qxKWk1zv_pX7*$Cw1UM6WYmAm3f5pU>f9V`4w9$Z}6tsntm2I%%5o zJ5p|!uyglsQ=|COBX!%K+~+<(apqAeZ?MagaLvAa^cds9fb86lA{>Rv_zEg8XcsM_;kGVp8V6>BBsZ_@FTA`n&b$*y` zX+(`&P*)^@_=>9F>7!LgThiE)?rTSXO}l3PR^0QYV2r-C9q zGfE?Dx&|&0ju|r4_ZGdlDPiv-ZaiEh^GSI^p3N&@&kS$pIBiFj%Uk~#;kuWRlA~$$ zPmf8Ses$8%&Pk1)IwN6Job5ZO;8=IZZW;@RcSG$;U7pT2 z8VJ%gFVv$#FFll6JZX3%G&bgDkATpw%fFb%({~kz5*m@kxp7q`mryr7yy5kRx**-} zaEWNd2@C7{miN+|gE?PKa=bE;DIIx{W&CC2B^O)>Y_bQPyfO`(zLuj2h=$xk^dZlxBrha7xs-1%IhXd0M`74p%HZkaxc67pUFL(c)azuD0wbdRFjPIfP zKV|T)k)P_qvv*&we7-;}BJ^u-ntBqOyO^n5vhdv9J|>5QeP@1kNA{4iS4@pfh4f6I z7p?b3jFNoyD$$pjydBfGBE?YNb;IL};;llBOPn!+S%)|*CC$m-oo9cVV-}+=y}5@q z%bZ{BXQye-U=Tq}{>z<0f_<7^N?f!f1NFnK~67SQf zs;v!Q_a|^zsB*uoV{LwKnmu;#!*gQ&O!4mb_jmbAuQ?8%KNWMtd++0Z)VKSGa)ZK~ zE&N!@!<l1MUz{s)@=V{cK6Xg%wriuc z;SqCM=~yp?6264yvmx_*<6Z~(8`XchEgvnWcV}n6sw`8FV)7@HdF?mY$`Y6rO%SO4 zvUYHF<9i)Fy4dCX)V=;&Yovt29ru^7HPBH>w#~(~y&;gQ4JgPwCfPi#e%r%zTq?SH z*<8JOztM-u)5~5m_e4W&yeqY11*8H@>3DALynL9wy`?gQ@Q%a1^{;PU9vk946B976 zYdE|_uYTaEZkXDG&m8h$`_^&<_BYirPQK&XooFz+-#sBh{S1#)+0(Dmm*#FA)*n{7 zQJ>vWVEDV|?ytq!gLc;I;ab{-rC;@>_|2goTg&09mi|*Qh&i_;GV!AIQW-}+-N7W6 zN%M)mwN{dk-$gCn?6?(h$l}UM^N#lSb;=gq@8dF99a~cNe?F?Z;uc2Zkn>?#N-JH{ z=t*wi@#+S$j-|1oho48Q-@C1Tv>dtVFW%V~)9YY+@L0M1pk=K-%2lDB_pLfb^fOnv zuQ@p^;W`>V2>}~+X}c2h*}9p#4u{8xyjYZr&$P|DT|dDH{WqTJx1C>A9^84G_oy$@ zH-{sS$0sg&IpIRI&aC{bF(tWBJ{`Xax6a5lnxUO0rlj04wh9Z;=p461gg@79xR7qq7qDX9b+GYa1ubTX+4%)gOw^4^Q$ z$5f>HW;V&E%L6yFHOn`S%=@oK#2J=aI&r-I{!;!<+F1LHQI4y`jvJSn*Uo1L5iGvR ze(!Ec{IdVjtl6gL0QJru(#7$ROrfl^6B)yAt!?B&nd2vkzVK*oHsuEfl!@WSux5w4@^_6zH}ulU7$mA#+pSf6&aZzMkN9 z99_GA!&RPp+T2FgC)UNwh{;dKPmJyw`Tnk??e#~(b&{$>42g!K=U-L``TdevkG-4n zt0)O1}==p!!Zzx9}pDGO|#(%EHz+W1vUck+cWjiVF6o-7dsgV!xFc#l$#!*9In z(J^_>BbB6w-Ur`TVeI3K{+?y8S${VpVY1}ze8zs}1pV_;k5*dIb`ib3lvTDRMNOBM zokN~yN_d*=JQEWU(mdO+|6Y2|8S&@c?t-^}e@xuNa5;=3#oo-iu!Q6ZQSsCjtwf^S z^Kw@UFIAk1yCZn>c}mF%q6n@Atq%Rr<5od3Og-wD zlrt?*+IwxbaH5_ z+i?vp9ap{VSeb`5=`TOihY^TYQce!(x(6+fYAv*ynm6_RcF5>$rXA}i~JOlWxdDu9kYncj_g*{-W@p9 zxk4WOU?M>0mlaoV?3I#7-@o`L>+;GiO5T&@&2WE2?AojO;-fQ{l+=f7&uu(* zjTN|5p~u|jrR6qpFOE~om-<4Sv!2cHsLo^in(hJTm_t3`FKQ36sqPxW*jWgR9ht0DTEIjqvcaLQ)$W}!C`YryS?~8shJPq?2DY>g9 z8z5HB8WAL%&(UyNNx@~{{+GK7we`W5i`owNZFbUFy|qlxv~>~K8_yiSeB)+!x!%;? zjgCehXQ?~aOY%vR1Usk(H%R5>H6QbesjL`!lwJ@1q@Bsdq+Yvpg@xqJo2qD+v&H7e82DmQb*?=GC%K)y z4AVbWHSFZikP&9<%2bT=d1Z02p z{q)Y--LA7vjA5?V_}*Tvj8*vd>&N-e7Fh=;)7^A6w9AW|K5>+@dp`4t3h{_kTqzu?&|er~<_l>uRIf<(YPV`R?Ba^0CG#hX`_68LJU?Z&6GF5G4M zY%Rst@_>h6vnQT0PiZ2Ws*2{dG*dwx^htQT^LGv}PPxjvrlT5H-L4!oKP3=EZs5P9 z5-IyshsIcX9W6<5Dk;jkihJ-h8?#i?(u|%*U->Yx>Avg?mRY_s?f}946BEW{^wh-P z!Z>ZZ9;@DZSU6+waKB8C-n6~;+YNQf-W7XG6HiHkYkEcm$DCpkX~PQ&I~RJ(1wG%i z3auJb-^<;_{-k83!D`3IA(ccan%51`PfO{nJ>kr#a3QAPd8X|!tL&5O-&u%9qzQ-u zeKtr63{ZL}E3BV+P@S!1=X*hK6ivLiOG)diS4W_`RN<$RgSuInF3PDJ(eqRknoW27 zK7Q;VPNO~lq`A}kE&o@yve6NLzi&TzcgT-iS82$5VZ>ILAgX+Y=}EPj!CT`_Ln}7n zxQ-_lzQ^hY_rF`2G|v;8&`|Oj)^FZKmWl?Vo9kmyCAKlYKL+97CTUYAVy|ig(mK z*Gm(W=p>2$arv?FwHwDSHH;q=yLSGDo7)HFnWRg$y3^sxPPR&upWl3Y5a@DT1Dwf!@k{e-x71JG!7L{lYQiR#ll{2beW0QRaca2=+@}Qh4gHxo2wCXRu!y^<&50 z@Grx6*G^R4jAMyiw;8Bj=qI+F{@PQUvns8qUtj0<@QK`N^cOw0{p;>GV^fv(^S{2( zzCVS*TQuf*VCAoK^RXN{nv!bk_U+~u_h;qwbC=0?COk+Y3G{=07ddkn*@G)N>F>ne zD(pH=dC6-ykuq-1N$Iv(!`xudQ3>VEuf2Dz8NwG9$H~K{)kdCXMdYPjko!K!9(2`} zqEm$7xXkTGyB+e=(qw{EPMW2bKBp7V%)jJBQb5#+dL;3Rd}&W%)Zj9C)TyItS=K3E zowH}JkgzH7*6(LKHsbJM_SBDRdViOrXTI5c*ScFQt|yFl`P`q`7?klgtrFIyeRt8H zYMR3{caC(!wE*oB~E_3)Q|D<3hySRI@I&Uk7=1cqO9`#JJWs< zrVAvCE0>2DXWpM7nr0`qB&@z6oU6dmV;8=|>T|hrMzv7uZgTdfB-YA4*BaD%;{4ky z_n{v@Sk1p4MA}zXbMsb-;dlM@JA}gTN$xIEJmjnNG!E%VhW;zE@BMBG5;>d6i+Zn2 zKBX9N>JFdeaU`yw^@#V8&&tg!Rh&^M{H#r1zasy3&oCoZ+l9;1^w}M0x;Zw`m+z*P z&Gv+*v-?Z@WE$vV{~jFpjsE40qR&JHnfXcHH7QnHb|b3GVkaM{cZPKi^JcpH5ca>m zvAlDhsQu!3;h?IPGh;1pnNLh-D4dc|^)-t6(qtKCY9w9WsPXEk>!l;aqC>jEoQ=Iw z5AK!H)So{YAI2-N)F-*xSUrDP#8Gw7+|{q*VX^s0vZwxq&6oW;3m-|kGM;`kt)!_^ z4Q4SrI>M0>du{GlbyNNr*@(@WmBMFh=9DxmslOFw*n7Z>A|8_j&DQ%atx2Z74=eo11rlrR&mdDWz;~ zYY`O=#c;JYo4Fvfhiw}2{Br6tF+A%jr$7FvS-+g0FK{R?`q$I6j~gAedL}>1n5A30 zFBZmXSJ6*B-;w0ApWDjrH?uqUvr;bO8k@Y6!GlL+W=j1zTi+Z@sk_$movWzG@V=a~ z&?{pJHob`7W4|LFIqg#4DgWw?f7PujlDIi78j`_e?q$AbF??>UPh9rtFRV~p){j-0 zq!1$~&}={NvGI22v%6vM*-qO;@>#NQ-+QcGv{@Uw8TakX4~HuqLz%``q(TVR?tN$7 zU8`CC@w&1la}RY-K>(lYgI}*$9^NgBqrEL?UGnSn$3dqDd0ejvOv=B;`VA-S9oNb= zb)cRbGFO=|(S2_s%+ELSB`#fGK0@^@TktNfg2&uBa=ODAH?17(nlFeb{hFd_E~5=t zTPt!Q`Ds()T>X8<;GOGxuSZ0+;&o^A-z7%b(z-RpEf*({Lcb$sK(6XBvy9ub)R6T; zUCt*9_w%I7LXVuQi6kA|NllS7xn#sVTt4jJZvIRB$(Tq$rRfZll|ZE3OdGS0V4lLs zrqnMTk!p_5D`n|DYJ3gsdW7dU5_QH_?4JhPBwyRL!hAfO5QV;)F#4gK8nu3%a0g`! z4a#~ysnv^WO4NtdkkfVkDAbc)x?hRiJ5WuTs^(`d6QdsO+9)8Sr$IH;8xELjQlWDB zeFqL{qqhGLU|`rb^Z$m(VRr(QIe_diMU47MV2%bY-fba(2mT?18#squh>EV801a9o zER+|(?QmN{>^Rs-AxCV97)+@BBO_?3!z=;H2-^`5?uf)3z$JLV2~ZXQ)>30+geYGY zfc=;-90AJuha3hj!ACrWf_x50J~IFXh(RDz00-beTk~Ot2H`i5@TPDSrPz_63Fh9mVi2~5808yAgtJ(I%5Vq9YfDA=uPRVEDayB- znAhn4s{3!z@K^7@<0Xp z_dmz_OZ6XOL1Tqmd<;5~JuhmC>N}0%nO&9wBJZcnOmv zP;vAH|~=9O@oZ7-bL2=K~9yv(lRc;Q@zfL8|MWgLy;WxPEU7zDh)oI%UA zlmP9D<%nVb&9@54X!I0zdn3kRS2F$*l}a6c7o{e5}L$JB|dl0I&(6OaXj_P$mGXAhB_7Ttu*X2jXRX1%~Me zWr96mM_>~ug8*e>15AD$2qna>=>@C? zCl4ff3sVzFARI48INJQ|!~$JXE-c0x{!-)?Tq5znm-#MyyJaF!g9fRgb~o){besPGnqM})ge!6(Am zLIP0=ALts+)kF@i=r}Ks;9Si9LlhtZ{ldSHuvP!Ic?3FBxF-D39AN8q=Wr$^3+^}A zLu^e7?nw@c2K$6vC=V2USObcKK9rqaWjB3y7`HDA>7G5vM&d2JUtobY5~O&Qn6cdc z_y30!HTyB?Kyi3?ehpY6=)~GC5=Ph>ylWJX2zQO*5#eq|u|@bN`@gCBg#I}O_+#x7 z{ih1*U;)m>7+Zwz5`;&CGnzmnB!Mw)EkWFiI#7YhgH-+hNrmU4jwjatI-?X^HK+^k zP+^Pk4HX^@&QM`%@DJ7hPKEbuzz&61lqdZkRtvTW-w@!@;0yt_2LC!Jgi9(z-c#UQ zvw`H%zf1nV<@z52{fAuO#nSd0Ae@R(2Qi~T0w1BoBM4;%Ac&25qlq0J#CixjVx}Lo>X2|aBLgIV6@eWaNdAW?pWy`G zkwmzs*C9+?O85v(B!F=UWdq<9n8J)Nc16IE2T^UE6`-Y#gu~fv0*MIX7}7w1Hi28A z|6s9`V*5hxPOu&EyiNgLG5=oFe%J(xf?fiEz)px4&gmo$n}C!6Wee(0K)h_RJAvzE z19AXw0+h}F-RnOD#u z8MYnq#KQJE0IS6iFPsjlz@{VH5&*pr$`n9+f?iG?$GNw6txTLRz%gu=N} z1Ft)X#0Iwp zZ~~!h0R#b|xdL!IHqKmu*sVw)V*r;B$_79X5HnYxwH+R3u6Dq^qDFd$Ggox5iD_E` zpb$dg%oXtBLnLMZio+ECxl)0xdWfSrfM|rW1@P8ivCMJi9mLW`9L)gCMkpHq|Bi*b zh9Y2x3?ySHbmPQcX@;=X3<-}jo=0JmH6k&^j*aIo3e-UQzmp`vIYB4z++DyZyhO?~ z2e2KcwkFOT4O(5>LI8XJA;cadkl`8PXa*pNiCG$;1;XL^kPO5EB@&~&p;_sGBZGP{ z?0={OIQ|bAK_*Zfo*^8D(=Q+$GzU;p5nM%#B4HT4O@(V=tasoebcw(&8pI|-yvzW! zN4zY2VF&_3ACCce2~n8=m<&^xQ3owFBEiZBK+MFn)w6hNN8!W*M;OEU$f zfy@LbV*s~{z`5#zBJ_|VOaKH!yVW5RG-#!73jqW}h7n?yhG9W<+mm7f;Jv?kW`c7q z;DPgjs-VwS@RWi*!N3cQ9-b53T?yl~Ex~#1iiW4**d?S+=Km!lh_M@97fdKwbSjw` z)?e)5V}?hc4?aSdIRL@LP@}w1beotzJD{Idi}eS{#gPa`0B%R{_&Y)}tgPPlz>0|i z5#$hwF@W1aJ^v1R1y=TNdte8pfK8T&1n2%Z4Nn9}f`3AQ3Y3KBG?{|~5hA&8KFBnH zO&Rc!1eMBdm5Q@=bz$@WT+%sMbsaw9DGB6TLL^oIG9Z^*oGQ&=bphgqBe?*Z+7XF4 zfIkt+48T={GNy&of+Y)Gd$H#%09JP*UdI6(LnzZPFa-U9dQS?+rh<>8s0+{+PT0_( z&4P5<2s*I!mSwi2nn$V2ZaBLgf~MV;$;B>u_2ThfV?oZ zmC+0hS_ig;k}&i`D4ab2D54uF!Wh6tq>nZLuIOVr0lnXEK!FAU65Rw83u=LuA%NR8 z;5@y68c30ZCII##lqra3L>$s5eUbI?w|@FALsx9>KK47 zND0;ef)chou_qcV8ZcmgzTX8JVDuo80B6be4d*2V;ciiXaUK zc!~rv#qJKCiyy9+Ev^^NVwZz+D8NS|lu0TXXsEy>=@x00N(S2MFi#HiMyX_gIs%)h zwoT@#WPm*lTPab0;z53p5s>F$BN-}{4r2jKHf(|JA1sgq_Q31HW{`yzb^h;57j6a$ zD1!%d&*y=*4j}dmI0z{!)d<>B5QFw>nBRp;-RJkuu&LZzLLeA~g}dSUqT?brh^#|R#fU=LSODQG9)FC0DCIu{ zz~HEhiN%ewP9?KUCG*{vN(N26uUINsD)&D;fYJ;0;QGr0uLBT9!Vb_dfed){K$oS5 zDTy7Lv#oOQih&56w0r*{_JvaUvOs_7pubxIxc}@LiLp-)F!k8$OAsD575IqflvRXH zafrkkI|@B)I*CY30NnP%dD8HM)fW*jBLIOHbZHa&w`5GP8zD*zXIl#jGD9@J`vAU# zq%#KauXOwVEgjH655!mD2tVOl6GUNq?F6e0K0>#8ZWs!|N2qVy*lsW3$o<G`I)5;TtueAw!C`0`LGrnF07$HZtsVAkq?2qz!<4NF-wb|B8h3 z5D6mvMk1L5_?H_Cb^$!_?GoHR@ocrkVF|cv;gP7qlIBR2P}+94jR6FiF}|R+Js8FSo`Orm z2>-3RA4qj30D^k998HkwERpI=00aeNgrH_Hh8PyKK>5&n9RNY?7$InZ@*yFBfA<9U z%@LT{J#c~0u6Z9)H7M~9iCy6z5_@3qgd@Wjjtq?_92w4K8H9U+jI%L-PhpA(5f%NIf!ZiahAE7L}U^oUJX`tOEJuy3d&~AU! z9&rvd;J@IrL;oiO@EiE-k{oEj6ToNV)@~LPpFRl6um@*GXkZ~Yaqv8fd%%)l_y}EH z0W3!-BOdrYfi!%C0?EQqZ=1rNS`a%M31kM~BtqFt!;l#XWCPOeLnt!x>e>o#jK(ev!-DFz2g4XZP!C23S_VjUI1jsEtiibad3*$o zO1M7gv?K-?6bfyc0Brk925JK-@ji}%q#)*>2U$FxxTm-g+>SF1`uS0Rwo(2+Z7lCNMwbH zhB+lbYZGR-oB=L|AB><^e*hk|{o5I|lwfwtxg5ri;UnY>Am|t-^LC#w2=puv>6r$C#s(sx69=@x{E(wCJoJG9pcvrCW2$Wv^mYQUw_q#Hw$(R@IF$_W zqVRJG9c=eq*?KRqr2v*nSi!KR@SWW^TUMl{k$dkrwYu|EqK)MtFT89zY2Ra zFTn!_Dj-79@t{A!3xeV}M*fEc4Y6&K8x0yqV3H7Jhz9s9!W}^ad>P>k&;S=8oIV=h zW`xs213ZLqx@dsc5KadTFgJWLAVg`S0aijdEi}N^2&ah#H~`@^&;VaYICV6@jR>cP z26!Cd4x<4kJAoNNLX;{RU>Sr{K?7`!aLQrlnGIiXn?_$ zgAgTw1{hp0{;a@%Tf1ZM8TLm68o#$mZZv4@f?pSHEmMHS5bg*XU>$@rKm%-#aQbL~ z!w^mn4R9vH>7oHHM>ric!2JlPjRtrL;k3{IGaUs>ND~dP1j1>c0X9N7bu_>i5KavZ za5BOjMgv@eaH?p42M|sL4e$oSDWd`AJ_hPjLIbRZaEfSvPa~WH8sJ!jlSc!bk8p?3 z0KY)EgJ^(f5l#*bFeAK;A%s4}2UrH-WY7RxBAhfD;2?yPLIa$KaFS?%!Ig4rnPRU< z+zY2K9U5FX!8(UN9RyGmJ`JF47w(FOT(RT7fEV?44ZdU`C%8LoZEgN*p7I2 zaUdf&t)Nf#8&GJ_0%JmevIMXO9x^;T$v)WBk4WI|Y?nI;n?C=$WY!KNUx1I$#uh;O zlNb|}+rR+>J>essazG&P6Ir1BAAl!dFU%7OXq`f0nE~ki4`Hym*Zf;1XiebkQK1RaH*7AzL4pU5s+Yx$hJO& zOr?X|u)6|E07^VxL^uv-080wb8|g4uQV1U*34k|FVNz}_8gn#gpc7I{ewh|HZpStT@NY-lH5v&z0*C+eWK94!KqsK{6F?B{k8Zng3`&NB zU4@TCTf1t|$b?DKEfQK2pq&l#e|G;656v#1_~APK?EWz(n^ZEu%D~pGkCqW5AXQ-F z)XM062wEIQIz<{qf(?L1PB-GeRKT9q8Q`Sa}o(g>#PZ!X_{nc+S!ySn?2wf>UDy zZ0g&V02mJcz%G3EYT))2aWezZ*AX+y&__f>a0FWT2wiIcWPvHn%?q^lZVQEBXpT@g zFBd@(^hicy06}KVoeQ*%Be9GD1f9ePvDXL4u!3~c1i<5GKsT*H_`^te69BiXw|0Q7 zAS3j%*|5_w!yR!rjj=!@PlxTc#bNvDz<#IT#UB97tkRN13 zNZ1H{ac9f;$3_Wr2jSz^mxCY|>{YP@#|L@-e8CAc2w`8$Mqw){U_j`w;J0M)@;5$Js!U{ql_J!X>vS)l4u_icTp2$-y32_wokiD2sv^tT8Y zb79d=Ao9HgX^~jKd>@uUKhgse3&^1P!+enmC`w=@+y7ziO~9inviITJ-APDDXc9I< z00|%n2ndSGC@L-pxOR6sF+fOM#%&ZuQ9wnBiX-l1z!BFA>L{**qa(QE&Nwb{+`t(X z755Dl6?M?>RMmOUy?v_^BF^vsd_0=_o>Om~I(2Hjb#He^ne@F5;DYl2b9=kFYR9&q zR8#{KGXpJPk^{^qI7hFRax5rU1%S4u4c>$ER_orE>V2g$4&u9d)j^ldE*wSg)I+zp&(o7VEoTuWuCTwr(qgX#MNa&plN{&Y&ITh6#A`M@8< z`EpAmmz=r4-kEddhC<(ga2%u{P*a?xXO4sPVwpZjMRmZM!tC5`xS&!w1}->vFgJG$ zEEvdfMe_Yj>y+!ja23TDI4!{ol#3IcHFJxTAs3y3j^yUNkBd-~ZL~Po1RTvrcm1V) zG^18-u0*q(M6ES%Y*#S4^LpVF&#)u2?&jHu-AzT}9J>o_K(T#f% zwsekd>2^%P7SBN$!xZeJ9F!SMnax)RWj-g}7*GI*Pc@FyE){TRR+$@DNP7pwXjNhU zzhXWMh}>p-3n{Q=ZL(nNBe9hR{F+r}i)!2Aha-V^u$3pSX8@5~*~<8k0>7-+S8Q9g zE?cz@TYU6s`?Xl=I1z9MakU;0&M8+XI?VHdePA9j4u*e7LJ}KUZvq^ z;1!=d2fiVESBVQ5z`(0|cvUCG)!W5oP}~CXAcMHv9jNZJLS=P4IJHciss#+%bc#47 zwx`%m)gl~lPWAp;A5!3IEg)PrL`XpeY5`FZLxl9AcvB0A@Ec+fdxKEfqouMF0g;hf zygZr>90W$+qC$9_ZBfROE4a;W;j7XiPAI^6=!O!|4>SouAIsLX5<*J4M+y*~mTo35 z<esGb_ZU9^LwuDWfKs5^iH;MUrL<1$3cxRhWVsxxru$~a>X+XF|)>oVS zp})xYv-HsnU?|_lP!0o;?+3|O3mD30f2SexRf?Yz0Ymxb#i9iwR1F*z>as(koX5{J zn*7;(r4NMC9vxzLR?}_1QZJ~aEj4sUa#{(}^j!nAUvO$W^~n}>I|0RC*qc(yHXR?| z*|UN^i*v)d#s^et2=zUELuGxU*rCsh)@&b+)^Vqp6vxLMPUWOy*(GZ2wNW!(ltfV+ z9wj+Aqc+EhdHg&$Ai~V7(~PbSF4KN~zWrskFocS=&U%^qKpTp4INiw3qAX_+qa;@l z9ULo&QI5M}U|llH#8I*AvpcZhc-vWaz_;9%?bns;HT-f0G)i&>)WNX=3eGjs2dtA& zP^R*TcHGc_0+$`#rznWQ8xI57)}La!JxO9jroXP0z94BPfM;0V6&)FfQRzX z?%?Ho9YD04FRXIXv)LFd(Pzv6-;i=LfE}cqoKHGN%bCtOk&QOEfa}C)8t^e*<2Lij z@5?zSve63#fOFV_V`w9!mq@uOKup!t(tv2$68cCxe+ZrC>}d4{v8_>Ja|$2~b@0xD zfnOZo>;U>WvCse*SeVnAg(%%|{$9hzVUa%70C=&qBX4NvJ187(Vhuz#8lxXYgW>h! zV){s3_{Fk-8FjXUms2;Gzn#76?9C2UeU4XgHhsImy_~q5uZ|DUqc5X@>46tIjW5nw z_x}5{LA1SNRBvF)m_}14io?dBc8sby@kYKnUbw!PlbZOd-{yvJg(ztY;zj-;@me9# zqf!Xi{I%D;*1X{k-HV)ohQ`YbUlmo_i~K_|%bB7#>=4#Sz6{`cQB?tsI>*>_jK%Mm zy_-<1S-2}FmGf0U(}2)Rlyq3%pM}Aqq=yuy=-_XP6R+ky7d6}{YdF8aiLVQZVhiC* zR#J5Ui+M9ovl?IrQCZt>Sbr;Q9YUGpO92iQRR(Z-QCaaq(k!M>1y_3z7XI(^En}09 z1f~JMVwJhafwUnY0v66i53v?Pm|rEivVbtC%x8T_KLtdql)-k#wF;v1=f&NE2B9lbBTwv@X$W&5!v?K>7O7R>VYi^2iXk)(C-g0+gk2+su3URzJ z<}gI>Uq*du8*9sobNF4({%4e51UdasY(HlZ(OG4ICE$H~Cxu)x^vPSa!yR8UHpN>9~^s=f)uHVe)p z7MHw;xB$-6;sQCV%-U2?US#T4TrbNe2)l7Jwj2O3#xRqP~ z&#W?fr6@u{(jiPq(z#-|NubYiI=#*`P}&R1iJVBUqYkGdPHIVLrf>?q%ruJB4J;nR z*Onsz#&OKl!F4q*2*)$An`#9RLwyVBQ<>M*;%Uc`d=k@2b7@QV7Zj4#SSNOcf1+3w#zA1$8rYNaDoXGnulaQFM<-R$oX+hu@^oV_Gzr2stPKB#=m^%qdOOej zzNodwY-Hj>zS05wSYXSwSQHWL15>drVt~4pSr$IoOq>T9} z74B;$1eBne(K2r3+Q1xDp$(ozbJ4j;sUOX!m76P1wNW&q(na&#!G12|Yr>;%6ohau zD+`p8W+TWeSYO0?nv3z9lsSQ)a6p{{PirO%R zi-LX%r_+WhNQd%7PNWSJCqnZBr_dVg`fA}9xdMAJ&DoVeLf3VY#_{k9#=kYW{GKTo zFOK^f453S8uvP=!BdS#UYfP^l##fqaqTLvVZk1eFz)e>hGL1kODicFlzzSBGNd!`# zfY?%r_e+UsKop~FrF}?&_i4Z#LxtL(K0_o>5k2`pXy#&ROqZYpnA60lzp(boRVGD~ z+LW`5a}1E2jwb;~93~{%-9gxmmErHYf$k_yquy~G!{Y;0v=%7l0H)|#KsZVAWdP3? zRTl78QDvgmn>gv8LdixcD>>;YzUr-8lvK{`if-iS`D2)pl^#|Nc(tgi?qzs?paMMR zI#VijfJ)$#SV!dnK76a8slHh4zsOR%+l-dR1YilPls(`|p``%(v&z_uRvfiDPW;UR z!Vx+kh8M4~H*|Oi_;$$MtPg3E5NqHr{BS(affJXB6KOz{Y(^%egj6#P2=j&*ttMLP zOfEt9LI?|3sYWJBfY;8E32SI~O@e?Ppp_7AxYl^2l@JhMtwh0SHm!t!%4ub^Zs=by ztNH`nM@FTK=Cgg9IoywCq@~3E;?-zQYSL&vM=L+fVSY^7fYxmYPqDH<-9OU`4EZ0d zFJe92k3;o5CzS+AG|fT#5~p^|Nu`Aw39mAtQzd` z>ZC^!p*(>T>5Vp(sLxrTyO`6|Sr6HZ_ODMkc<7hTuGA*d%{)uqDzl|^htLMfI=;=s zu%j_CFzT~|W1XZrIOUtOL#NFv>}N8cu}7cZVDdYj$wUitA6vJLwPnRQ{Qj2xZ7q@x zjulA<$BHC4v71edC;*O^)4+m9ZDu*1I5}*!jkU#o6>;6*y{l(BI95Cz94nq>Tvivp zI(9m3phQb@_wTl`+E82@C~xwP13M5$y*_8km$Esr?tm(IV}XU&VP!Z|_LV(IHQ@20 zO4Zz9y6YKyb=(2L(BYCR3%IxBs)3;?qRIju%__C!$@-9{2E^#Bgc47c64QVv#%!M; z1>UCt&khx8-vJ>KsEFRMK)8sDrS4sV5@61`vw^iH&ZtQcZVD?QbYSl^69S^Cm2E2c zF}7VO<{Z1A-*X}Y@8~OyOj*cRq5!@js;VCt{v4v18n~wCP#J8 z(37QVzS2Dd;3QTld%!0OEd@B8RjN1GA2UF$ZWVvCfM1KM2DO53v?GLL{iMV!;E+&> zSs&8=Laadz;F@ED3BO(tC(?i@*>rD6DKVc0gn2`Z4j?q%gIt2{Q4n5crRv@&0bXlj zOV-d8GzkJCsg;Q3hj$tqS_uIG)=CtNmefiJsGL?ty+N0QS=B}0J~Ap@G@tDojg@Fd z=iV=xlbSS|&(X?pjzNLMg6LDjtAG(czsuL&W-bO&%jZ>}L2qaW6!F3yf zw5^%b!fgbS$1$zt+XyfYU}lTA5g;7G#FlO&kbVjC9JdijTFjK_Z3Ogpa(d2f1eAAk zV)!-!x@Jym;WlD>PDa0UcBM9veq>9SNL6nJ#!Tv%#6RcxcD>BI*4;-NDBIm_1`b9m z6>i;qI5^fG&%v?wcu@}R&Q{xZA3L%~BkwhyIqp6jh8h#r)4H~?wyZdZ-=o>z)*|WP zSdnyatVl*V6iG(_z#6~YMACit0T%pjGpm&nf3+>gJxYqbhAmgmba1SAIyhE5Yq_kt z2hiuNEjTFuXqgf%$=$!(#%e=xZJ-S1odh;6j%j39ri_+NhgJ1sISK2v!%8DlE(xpv zHnFOOO&h0zfa?dF-94hXo?H|-p$tDS_wyHuCzaY z2G&>1qAd#`qCp{A77Oee^a1lhBDY3ujzfkxSBUumt6+#ot3t^Jf&|w>UVa-iWXoPU z@`cK4IUh(gMAzG~gI8^1ZK)5xHebP$CT8%;)iP0zvt=A4yJbLX|BNZsG3Y_5cy_ZC z`0S2%CoZE~%Z54}_$iLGqB!=d1oyPFEHxL`koxnTiH~ zn>q1QzLHyj_rGaq)J!dAt9%iW%K{!4WE&2A80+Y?<`jl!iz*9v0jtc!1ZhD)1iUtf z2x)0R1Vk0wQyuF5fz&+>h>TSC${<(CHtd);C7SIYob3^IjJkBQ=fll7`)IVA%d7fE zG^eY-pv*2oFrucPW4D_5n((N*LU@Ih1xiWJOCYaieG%*FMHQ(2!$~DU5{(pS*K%sd zoK$)ugoJfW=oBT;^C_f##GI}U4n535@|R32chl$*4;UVYr<{L@f~rG4lUGzI8B`C0 zm{G>ptrSzgpc5g2(4UE2G*SJ2YS9a=dv{>Mk)aI4hk%I)OMB~OqZ>;v9{E&>$z_5-W5*= z$BL(eW5pAk8~%enXWf5+(o0sj|6>a3?H(m?r*&3Wb{2aWilJ*i6CKRwb2e;W98=5H zOu@#*L0QR^H~C5wz|RWIEf4u)-Pa)7YRQ%b+;uIQrv~uj_l$}x%>tgV4zx62sK8k! zG5CuDUzGyWfJd_>vL5gmeaBn`~~~cd#$nOxFf%s zlm00bt3zJQNv{jVdIRnhPFlycaeNHmXp55aBLDVe$}N1QeIg(#>zG&fWA@>a%QE~j zC++Z~r~lEd)MD#y*+FWYWB9>e2Wf3QNH!=+qOsR(&tG66X0F}=4jd;-^X=2oEn~H@ zJcs9%+~Y7T9A6*NnJGP`b6PJ}7I0F>mMItR>g_v388>*jDFH zO^Is8a@;=Y4*GpF9U-ms{3QkGvx4As%`{qPP}qrC&^ z^0g@_WUFl~#|H8o+m_=4*w--Y=?xMH2dkM=;TLt~@rED#jdCbh%dC0KL0Yj{5;fs^ z`xpkMUisemK;_v#^#l?eclU-ZW3{zFhwt$Dmmga3eK_}Itp3jOCNSy5{~AkFK}TPh z&8aZuYQHGQ*?ta^-F_gQ`-}03N*iNP@E4qynB&-iJ;6z@2qgpf4y!uQ4>0qWP`SRG z2@Wh^dY(6f&RHM@GsIb>4O}y5J?Ht6uZ|r6y!l8d)*dF$GqX^Vua0WY=iIl6l@wr^ z{ zEk^egqg8+~P8}ZbMlpJ7Yesis+GRplKlg3^IlkHs6+43I^a=h^^a=ifJ`~NIknm2i z5BS=1Vt>9m#>hpS^v|#z2Z4uc-%Pn( zDAwKW{+xt@oYlXHNv+rcr4?^LK``>XX|AP;%lbupt_B>_&WsZpANMePCQ$u@;hTZ# zZHC_js%VJTb1~ZqB?~x1R8?m%yg5+8g9k*F1%xN&F%hKZfC#@n2vjZk)mbQMzzL$N z0fein#Izsv)@b2y5VABNTr@;T-v;HhUd^i!bW(H9U z{IWVcdJ39Qzd;FMEIUi%s{|MUq_5KioEW0PT@AY>W9u=g21>V1E<46}}TcOX-S@HOGl zXW1bPXJvs>(vvaBXwD+m(=$h?uHY;sK@y!^LfgH_G=3-}R5LhGg&q~8A7es;>L*l6 zw2Gs-yfNZGJ@SLFulR3%;}J6AfnRr|hh71VW7#fJn9m%oh8|_fUk?H z>T`z0B?xF0V3)x7aNt8(N1uWKJW^EI(-@u;s1`7UrB0fPqs}Y^SE!PSwIcIHyKHtq&=1wH6RA8zQ8j0=0msh#^9HR%%)c zi0~U?OO>sW%1#7CMr!ea(QM!#FnTut;qPpVGIlwiyU3M6_vwN-p#bMr0wth#Y7&Az znyqOigmKavQ-J8Sw5K_XQ$H3~9pG1@s_DS-gNt-J1lX##1#AKZs$W$BK1a;gBN`~N z^zxKbDLRh@{L z?iLCIs=J{hdSZj!r5o&?XsrzYb3;eVIGedK-x_ChC`a0;Uq&0Mo`!HOWU)EnvPfEo zMbfsxBE8KM4V*eSjJYh5whb2NJ1vsd;Uj5Vve>l~TDC6gU}&;JcPCZU&=WjY!jL=2 z3%1_w zkBn)+a7O#E;Q}svY2ZY(dCuUZ^IE1%<)j%cQx4;#<65SS=cEIKk^#J3R4KqmMP<#} zhj7vpLa|mpSOG=%q-f2fB*)Vun) zsT7e`SsuiPn#94|qvkW`+pl9C#HkZ^XpOarQ-dngR1huECe5teGE%o4jWeO*3M@-e z5>1Vc`kfy!MN89|sN+!%g>&AVHjwPM_o9{@D^HZty4x4?1nBGr-YzCgZ}F8%1Ki~h zlSI|61Rg!b=%@=H%J!mPwVpb^{aD~vS0eiDb-Q?L{$^vhH7H_kFyX80YjFoI33OwW{V~3{iMNc5oRdfE39^MkQx)w(i|jvxr~x%R$OYIQGm7U z9_Sa=*&ZnHn+z?^v(}DZ$HL^`cz4iY$l>>`?C+Aj;kOm<>nw`3T5Www z!a=e-Xp}^~!SP)sU|lBlx4IQ5@Y~(3(7un3HSO#!ZbzQNcHygI*ZM3c4IGCKQw6xM zs4ORu3lu7Tg}qH{X4}PLs2XrZQ=N)pbrnQ zSdJEpv5k-|2WuZ@VShnG%U)SQIzl!f*69iI2U{UmFM6ojcphS{wfkC>?Kx%Ouwnz*|IB1BePa z?(|`3iR5Ykd_YvyfQWtv@3hw5Zmq00-KL=d-6spU;4q^ycMH(~?Z6rL5t4)-) zS}eHdaGuUOPkF9yNJO9#iWH60FpkqCzN$FUJ6t_DP9wR1Qc|CehSD{U8k)xjHu9Bv z2;dMlLa#|ib6w2rCdoDV3(HU)40UEh9ddqG+uHse#TM3y(HcM)r*~=qH*i%uc=A)} zu1~2P%EsOhqba}|w&3^<5p=^PlB)`Eq~vOdM&)On9_nJL9but%E z8#o6GHJNj~*qUeC`YWfxZ~Yz z*};d<`*BeweF$Tp6lF&r!tqawvebvrv`Um^K7{4Zin5ar;mzkn+1VH2MNxL~6D$mR zNt9iE2X6W~n#BtQ#FG%7*kTo72Nb%H_=H9A%Wn`ub0;G1;Hx ztDYes#Q$Rw%R)IEdqIR8GZSfmn{$_nzV% z1m;ZIK`yqQvqnjDa4|f(r;T#R(Ap@+i;~DE#|F;9YJ=yk*Y6*^DQcaCD72a7@O~qg zgiRLNqL+rEp?HvYFDQ{hYMt^#InK6;l3Z;Q<+!WoV70;V)~oj@@5fqaAqZ_|Il9C9 zToU$o6s+M^)Uk&cCffxE3Ep6nKwd4jU(&dmw+=V(?!e88ZWqWa`+b&D-Y9G>TLA|t zx;2P-herFtO#z_wY(%?;&-!6;h`FVu=M=0k{27G>OrFt%Ql2_M3lhl$ejA>4X|C}Tc^*MBd{xDTPr zv7$`)5cd6pC}}s!!U-pcl6Ipk{N*H3#(fB{o-9hwhp=h7C}Tc^{xd`w_aPiKOOy#8 z!f9uSGS7!_-E2|j`w*TwTa*PpgwGpA+0KX1^*m7)`Ve+MUz9~YgrhDHWqTjO6&H!J z*oUz45>a|SgbywgWz2_A(j>~b4`GJ|qD=S@YOfGwo)6*dD@B>_L%8WGQ5N_Rp1nqt z?R*I9uM=gV524#)Q5N|SM&BUH_CACoZW3j&4`JTTqAc+t+_hAc9efC{+$PGT58=l< zMA^}YQ2AF;miiF(yIYiHK7b2KHHM#NZExMPS0mOZ?fO@qPc3@5dQO$C}Tc^_OFOC?n5~6bx|gK2y@nm((@tQ z@^4Ybdepi%vK7?`WM49hHIOzjX7WfdZ{797Td#*_aW@^l_-mS2o2wevc!jQ!MCF9;6wQ9_o7Vt5MKX5lpTEtzx*W1 zQXj&$KZ~-=hj55zR#9rrPCkU0aZz^mA^3Ts?BYXsra+WkeF$F`in5yzVPmlUGDMc5<_N@;Z*ynplqS7d@4iZOmHE+wdsKbsHY# zkfHU_eU=v`sVLZ+BL}Mup0{4VS-dT2orNg0ndR{QHZBR<9J00EJ|daQ`v;WhIwFa3 zoNW^&x!NYmaaYg5YJ=mgSMTJDq>KJ$TL_ig`>VMm?64?U_7MqI@%J9W4Cf%B94ynS zJo|`be_p&Zygs{G(FL2lvX4ks@>2bREXEE}ba8f^f9%bxa)uXR2cv2zBg59hvr(zidMw!LF)N^v8v3RXHaNre4G=X7ZQCb6@=BSEbvH4Uoi#wJ=Pbop5Bmx>I+UP36kjd zV4xk$cf%cXQt1a{kuZ`8x!Iu|&#CmArpg^EmTW_r;Y9lV7nP{fpsV9FdYwz9h3ceS`)u zFgmTZ*Lz@egcwZ$!Z^J=1sE93c{8x3m?CQQCJrDhI9`6;mR%Sou2^qq!H))}gul!; z>O_Y4 zP8!wUOkfmdz~r`2S#MJ!SBd1x0tUIPw+)f&tpPBc2KYUjAWZawVwW2dP2ymHRu0{pnxZ^tv;Ta;T?L&Zvw6+7nWSg9&?f%7wErR)8A;$rhz8rs|K5^<3nCsMp?}UHw}ehYZ(Lu;ih@h`Y>sfL%nal zxd{u^#6>CyrE3@^sr`Mi^)wu;Hn{yc*NhBNuv;pw4Tezv)(wSN4!=E zbQiEAI&Gv$gKiu4NT=;+(x7{cUDIhhm^A1RGMzTUq;1acA~jfdF0FOAt&?`rNl~wL z(ny^Yby_FwsFR{T>!clYQq*OgG(smuJ^qAy2WsaUd=8E^_@W%=-~$QU6~}!bD1Z4K zI)^nrk^9(P4JGdF;sZ|;-OfI6`w8HU@PThR6uO;!;C+vVZln+V&Z*Gt=mVd99&|hS zz&-v1-3T8z2&sL_c{f+@O!n6ii5r-LYB+Wa3lJo+V!gvRlPTAaHV!&&d?qnvF06Se zzz0Q@0h}deSs$V~oZ06DxuV?-m4Q2Iaj~DCfQ8o5Lym_(bbsX*)M-5Yp*xUUQm66o zhwfu;QJu!aAG$ws%jz^9{?PT~7S?Gz{Gmfj>$KtSsUcb?Jtoc65Ur9!Xv*)DW$XPBK$Nv^F|vxO3LHi+d9)PNRKww5h!)$u+e&IM&n>#h^iCJF*aGNOGZrZo zTI>dNsu_)x3N1DUI@OFvN`)4C1f6O|B&9+-?P^m8oodD;r9z9E=~Oc+DK*+nqctp6 zanR$E$k7VwL_IPoFG@j8bB> zYX9QS^!-@rE+=tkT9_487w$|Wjuh41+?ifDSyTseXF9%7RG)HZD!g1&jocszy<=H} zQ)|SjES#DlPG#X#XK^YEr3i>M3ZhUGM9HpJ?c-+h;%9u=k)7MNT?=-EjHD8VP=DUm* z$8bg)bqdaeEYdpUut-{mMaP;IwWy;OHK>(Qd(Qa&kIhZu2+mtI}`r ztG4nUL!m28{i!$F-8xEgb!!L5T0Ns2_s|CG<-5hD71nSB>2CI$OgYBCgXQ?rzbFg+ z+I|Bl%5;~ynjJ5?*HpmGx{gyn<0}nuKvaqvW1jUu?R4gUDEZQWp?r;2zG~)QDEYF0 z?~1AhFl1_@sYR$KPGJ5~k}nPTrl_g`L#EbSrus4eA<35l{7O_Az>ul=Rs{z$f2`!Q z9;tuFNg+GyEjtdX(_<|Qd$NuRN6dW5kqoayFPvhU~1g`kjNc%Id)mlHJW6 zB)fC&%03Wew) zs+K7?aMGJXsRCRtsv5wAcvuBkAS$a{-(lIdUhBG#DbGq-DZn>Gl?H@oj(G-#UXffG zz|TdM0z`crZ$`k-hmxxr(37fW0MTTTSN)<(-7wC1+7r@cSJ|ILJ&RKxeM(sCZPqiK zI^cD~Qac=LZ|5NKhX6yaIY{=mjzvk-_dl}dCa~UL^=n)wTZ`?_M8Fm**m{W}RvUul zE)iZAJSQQwx64URM1d6d^;X;+B)f4OB)f5bfDDayMZL}X1IarQn zj}_|f?M!MX#~gu@LxF1p ztL>$>%)El@ijtinc9854J4kkjqa+H)O1s;FbJ@@u;4n`Y8$JS5`VQVM~SQ0 zYuIugS42r}=iA2Gjn|ASzS5V%0?rhb_3RtDZWGERz!jphR{y;@DJ2xk@I+3!R48e{ z#iGgr-Xp4N!23jH?S1Mv2?iZ+dmhb{GsH>*;60A*$u$}9I#E>tqCSp? zIxuvl_1b;J|kIL0%Yz*Xgj2-2U;iODJ0X+XrlbeS7ia8M0tTjr<{t2cI z5>r{gig%E!2Jm%OxxWi#GTUfm9~?)xNVqT@J z4tWZAJLih@WMP-p8%k`i@h_eA*go!RIFR-7kc-$bL6#_*W)%&es9U zuH)_BnAE%YO1nzWhp_7pCXtkRK77eJk%jhnws#@KwhE!mfLY z7bQM~rZJ-I;6qp#C_Nv-NBamf?nBsftSA#cguMf$=R^40gb))#!2zPo^C1)kO3#OI z`XRzh_z;>?qRjIlyc{S!A3{S-hza4oLq(bIL%2UsdOn0fb;3;e5E`e5GS7!_UZC`R z2;Uqo%!ChN+>xTp^C9dXC_Nv-YsZF|5C;E2l=(h{p@Gu#A-p;*#Dp;D6j2uV5QYRw z&xdgB3}MpOD6{a*Oi||f5WWkPo)2OFGld!VAzVLOlnEcgl0fPC5Qd&B%sd~$-19`4 z??bpCPaCW}y$E)2*T`@*#8$l%5Y^$z8(C^C4{ft0?n*2tNf%&xdg1 zeIX`6dQh=~VFR@rZBm-L)ayH_O0=`2`WdK8_ta}ldx-2j?9QbZA zl?Du%8sAb45fAceAn<)+Dhn7gHKrv~ivq7Ifgco8wSX|C&re#ibzNYq9C)SJng|%O zwQNpHwr&V)l>$E{wk83FY%R5HA>Tj0G2Mp3bu92Y*3p3)V91vJyUnombYN>5@Y`Z5 z3mCFx|4=k+Jr>xS1^kBCN&|*$&2O=e4+XY7;8(>~1~6o6QH!=#1hxu+o5fZNFl5XA zl6J&7yFp@qShTH?*1#OSy@l{cR_d=R`6X6S8msW3Tfu3LdrjE9By1DHD#@2x%W$2j ztPe?l!AYe&>p0GN5}Z`P*MvHIgHR+&I<10{E~0dtMGfb~v3#Y&7r;f|VK%G>yp~n! z)Y1MiZP?mdY-Itj7F!K~VO#dh3R`=Mtu)}D#a10)*p~f`AE?k5Y)dyfggUWSb2P)* zqDlc?BP#3F8CYK%SdaM-;F#kO9r@r$j#uAGwW|R)i7E|vhImyC_(xHt0Rtbbw<8=r z%<sMI$*w=h5N$Fr&)MTl+?+i z1H2czvz@qA2UssE%hNhenl2QpnHO`?qe7_$9QG3iN)_NJR=EcXY&|5lvVgt3;y27LW{_*DZ4TePU!CrC-=gB17d&yDUG;n22=ev>`g3Xd`C1@XXo^n)aL zMn{o=DBtPi;EkqIAi118HNtT_+4TowX{3bQ`f8$4OlhsKGa?*!Vc#<=??<$W6_GtT zsTF^YU`lKLEQxU3{*2*DA1alv23+(rT&x1TfmQDA3|m>Tl?9x;3AXAR*~W!p-U>Gi zfs*h_D}4y?p@5X7l|8LKx0Fkt%|*I8#=8*?#b%}5dw>659^iUW zO#%EOaBOiL!nqtYdTrw(hKmAKbmTt4KE5x$Rs(**DynvK3_@q|qWTcFib%LdA)=p^ zY}S1M;?R}NQE{td5MbN!5ES`d64P~nJ>$|~t2_w3SxKecuANC;qrh7m{%CG z2caD+$sXX_VIG8cg;xzYc3{XJgrJLBFD|z-nopEoHU)5#s3rj}kiL@!ERtrJT+Q$c z@pST-_Qu0U_)539fS(qdB>E@^;897b&qfczpXRrMCbHQZC^hq_c1)T0;=>Q43|p-rM_ZVDxt5P#BivDzV=9l>qTYV zi0sWFe_KL75%3}zk6FNh68hQ`87`7(XVM1@yK)oIOb)oKs4{^2No&*tKFzH`;acfI zI7P$6bny41=_F#0c^dPK|(VYRD!R@9?g>bqwX68wT&xk4oc#Je<9bhp} z5Okae_%y4ifVCckw>qJHCj-vzY*d;D;cQmYv;{b%ONa;I4OUXn%ef1^+Z{zrso*Zu zTY6On@IqG6R8S7QK&GF1z!K?vbq6!Nx}Vrz&9G@(s2Vmf{I7IA>qu%Gce_M0-9V-KPZ_u%t zJqY(n$4ZxQN7-4Lq+u4ry`@R&&t!On%+9ro8FrMwPOM_spQA~;+KCJc2O-wh8CRAA zicLLrM!?%-R5t*Ql~`v1Z(tRL;-eUZM`XuR-JS!#lQcjLV6CV!fKQ963UFVU5VC-y zgJxRmLAX&S=oH|6(sFfx7f2)3AJ6UZt+YoK;Pu=t)YB`0r^*Pf2kgtkRndSi3Pv^H zP#M7WfNNN#assavS{m?T9@2^id|5EepJ#YOIofyfe;D2@>wV37hFA9$Rx`sp2SAnj zf?=>8TZf$!xvzAPj!_Hvgs9Sh1A~sSF$N(e9b?MH3@;N^3b0;!K?C4f(zBF6jcWBuiP4uI{r(~%>qJqYbtNsHD&42N+~jCqr$ zGaMijSUS2%tmjU7IbUfr4!E6k$|}ICSVca}i$i!vZWJaC;LbQmI#TT{h98P53;31v ztp>nN+-GRSjshMaGe;HR%dAo~;PYhWs0VBkRSIyoVCEPFyt{P3^yv)$ARS@iEexxq zf$J7Ayhc=M!0n{X>j9q>)nvdIMU@6zD67*HzzMwkQ?%E55YCY8K?d+1QPlt*!2L{T zg>Z*-s!4A#ysJNEuv(x~#4|>LPF$mM7XVfic_<*P~fHP#e z$^yP2i`EptOM^vgMGV5_GOcAlV7NfqyyjJgkIU$v6ywIcPwoUKeZ_F249$k29GxB< z5}FPg7><$XOpFett2ipxN_0|y{}EL+;PjwA%VH3M`lJEp@VKF_UJg88#?nNTTxYi#ld^IFM`(q__3&}0Y4L! z^~s3U9D$+IuPh1<(y?EnU&4rnd<^Ht2Apo=0Po>=>J=8k13{1hOM)P;_8=hGv=Wc! zei&?)rvM%ptZ#+DRdTyK1+Yd`sfFAPAC`z_0iPFD=3)+8O+N&=4)82dS+|9UaV!p! z(}qdWa9zk0+?vq-AWB)zln3}q5e3}9!J}Ep11>Cri&cQ1vr5r`e-K)#iGx-q8-Xlf z7g42#b2NfGzbe4%IEfmz*@JMb+@aV1z|jkC2de@9)6aNISyy@xK4T@#kAPpWimFfo z{FTtGZP!}~W7d<%TYY&WQ*c-Acx|Z<=k707Qh+}Pksk$|Cn22(_)-x0QNV8sEqyfi z!`adw>i{2@$fp6H5>@6^j`&X!FM5mxpM;D}|Qo&C!@H8IU1Ks2qptwFRHY+ zjfuuPe5FYY@Ox2J1O6x~D+X<-++9@ZD>)cP@NSJBsRLdnsw%)H zQCXp@;L2XgSJ$g%oP>uXjuZIfm@-wYWB?n2(3Jw;B%w>6#UXn_f|6az!MIJTI~njb zQB4ATUsUOK{Y^IrcC*!hUvQG17$FqO4P+XySX5S|7INJR_}0%6sk@nidjQ9_@(rfE z#aE&L&JH3q9QXv;(PRM!bEIej9u9nh93xbX<#^OcT(W>O;vx{pTFBO+oAcJ-KV01XwJpEZ}aUngqDNsM0+KmfQfQvN0IS!cwI9gOSXK!oz zUGNyH8t|BbCW&UIa^TZh=a~7|aCJYHYFokkHz(n-rz3bpyxpC`SK2HCJ`e;i4|t^n zuNLs?Ab5GecLu=&Tqdf_2^`0NNjx)v?~1Al@K_G93JdT}682iaTSQfTEBDJcCF~i% zwW6|SwCy+oRT2p+p5r+QPw*Y_T*s78#YzV7+u-hZZcGF@k*ZEG+{7`ay~W%Zg!3hQ zb$|;+m1)nFKR}M8>h|NBo+C$6b%1k4Wd-3A-ZS8^$kFfGaW(KFi(`p-g()8gyN&3$ zevOlG`skPwM{_*z0Nt_9AITJ)l{?;z{hld!Q^IjK_ybe$=*Cf_9e80{C<~NzM=*|) z@OaNr(7R0OBX@$z}6I#d1i_4jUr~Zy!xRNPeaAO&5fP*>d9HCezXs2)z-T`sM zr3-Jj@zRl_je0R(~cX{6LO^VJc$O`Np7 zY=N!!gDN-)58WJA9%TxilsfKlo?%L}6l85T4&jC80@(vuQ_?A%gva-e`_LkuQ}NP; z<7}@JQ+mksYZWw~lO7g|b)I!6C*cJl$8tW7Cn~&==IGvOrc9Cv-MUG5lat!ZbZ2d- zenM`cSO*!4I0?_GX!{%;Bukibn^>{hXd6Ce%*v^^)xG!OBs}qSbj%l+g2(8N>F{-? zyxnp^wS0Iqm#>c5`!r6%yB&@JTf&Decq7MQr7KhV$|;pq>FYS@8KGER>V8hb+hdM# zG=cBk@w%d;OI0zYPR=~6HhPhhHVDP)yPt9r9%?x{<{$Yk4i7OMzRYLJ^>V{!`O=kd zV)m3fWy_bHISG%$9jn@#Ou;)Aj``&SrhF|0S-zafTh<$8yKjx7t2t@0P^@KQSKe;n zr7Oq$vM*Co!5u?%s6EF?-CEwEeaaNPTIlGzmvU~r_~}@L7c%AAmJ3Sq25D#6C|Og` zKu*FFPsf0Lo+%r|iq!zGaT1;?J6d`>K4QmnGshqq#}vHC;8+{)Wy))Ob&TofI0^6Q zI0_oh$IcV^>X^t5;v~Ek=2(yJV@hv1fVH~RznFrT_8g;eB#C|z3v}O={pc-TGmqj z9#b~()v;3@!?~BYY-I{3;iY89XuOvx!AAj3OdIU$>L%owCkWVDq$3*6?Tpx zr6?9t7TWjG7K+tn7h;rbLmBocE+*JP!Q$dQ2qwG6w(ahDbW@=6ly;=Kw`>6Y>16y; z=6jN|bI8qn>#fOrIwED)&M-Y(~&Ym3==%sQfur-0L6rkDPfXZH8Ztgx8o*UB! zJ+JRY=f)^w)86D}zhU$%P}>x1_dKt^vJ<#4AnJC$a(i2;8TB=4YtE6c>M%&^pvA#r zPm9~BoD@kd3<=dQU)67@QdDn6)z#uKs$~aNr|m;k(J8}~A|Q?!M!i9`&$itw$;=M< zrjTOg&yJxQC|e_$OBI>WS+RFwwsvXfz>?~TDt#ArSz8+w>XM|M`1)8V@Dw`Fj^? zoFIGo`z#CazAL@_MJfmV%j;TLnAcIK-KxYgD(Nl)MfcO6_5+lY`A^ax^)J!Ca7?1F z=DwrEex@vqx2g2C38h&saToI^YXjUMg5EIo8KF7NQu(4 zE9{^yh3)c3aYDg1g-Z*%Xj_Mqs-TZ4bC$w=P5l-s+;5WxEdIR=Xrs&F8d4ufoPexlVh9REh4U7>z3i2KpW;jsL4SJ!g6OZ*%^5*TRAE z5}l@gq%mF^u5!MoE0>>_pXA>qDC}BTTG&a`wE zUSco$o3|hR(UuBgrHLvM$~vif9Y&~lfR}d^T_vFHhe=w=R*j97G%!4Gp<+A|3p!Qa zRZ4Rc{ZaplexJCNU>8-pj?WY7xF+|H@}=W@^v6s5i~ed~3S)`42Edm%gao`K5^9OMyFq@?U|H);aU9^u^n0&IpOBIYOdp@a~DGX3Z{b{$2N& zSMgyv`NIERplj*s{2qBk@xP>m9dWT*6 zRGE6W&93FR!L9}2&q-~Ilkc_cq}4dqTXAvQNok3`cd&u*OeRRlf^MW8Lc z^0!z0qZ|jr?bD~ABIy2oW7+uGUf)>)$ut@v(u+jilkRY(>WzJ zBASqn&!CLi_-xMZ^*O#zu4iXSO4MhSvsyflTFz?A;?fv9J?e6_WTe|U|JNnw)~w}V zmJ2m?>wi7W+Obj#rC(WV$48V<`gIYl9rOh@Te@~MY}wlJ4Hw&%wPQnw zYfVq#8CTCY--Rml|7O1VKIC8SIvBJ?K80l%z5AKyKA4=(i5>4~@bR-0FoZoF+-?i5$UYdb|w8a(88 zRDJv#M^=;L<7&?^KjH69DLwLL&}RBzLPHjZh&vOp)AAS-Z>1DH8U39=uSC<@_+th% z$DUV!g13gQWaG736yml>mhF`b2j#esM{R4$ zZ`U-7oJskX3o4g#fjlH`PDp#io5rY!Qimv20i~|8IHm$hpmB}~=+IMi3sA`i$2(|v zCjHgm0`+$Y(p9Ud+o|Ls@eZaeogU<`;$9HRAMWq!Fd~`KHEfJ?eFu*yQ^Ape}7hWQ2uu$U6W~D80|4$rWA6!Ip)7jXjtr1t1Gut;inJV5o>YG z^Z+$dxb?||6?&C}Lr*z!L$5bBI{0ex;OMXSbo9w_6a4Kji0Nrcd;E&>_t1E!93|c1 zd&!!3r{Ui-Gg%+cAKE=`vLz4anD-@xZnI%3C1{fdR9`iU9{8rw#J~|D176PDq|b!J3*BPdAm~MO$jw9G;n0%;Bb5?{QOwd%oIjCXa3VETZ_oY1oB3<&LUT zP7PO7)x@f&qP0-Zc++^U<}y@s#T--3psDC9p>zwWrpk@FmWV#+(KWb&SnU-9ypYlPAYZbto24 zpQhQ!^R5TD72sZgM**G%cokqRz^4SfAs8XbU=R8~d5Q|@S?cRuDdfZAC3CjcSVohlp_P8i`U%s@(V@!GS+J@{XlP7%5W?cY52$ zh~o3)M7=6!a?-)yYQ@YQLL2 zN7+f`OtQM)?nhlpgNz>3;e6F9-?@}8F>Roqle1T>M$vo4>Q#1cNI2IhmFv9FOd-~# zJUUiZPiYeB?mO{AcRFs)t00;Fm37n4YbwjkgM!^jU6wRQ&gx{ntkgWuQ1|I&olEtx zw8mY_y&`qIu1^o>>416;kUx=)7W(=azFnz08}kacitS*ob10qRg^HRtm;NROQ>V*Q z&lPr5EcH+Ajbn$NMgvm!x^oEVs$4>#;xH~m5!K;qewEpROjr6o?}t+9046q^9vv&D z`qzj4H^&zF+m>q${mI`}6&(^)wY`xlx#aAa+KI<@Vqr%$LnKDg-#qnPOWajEoYI%AOXZsVV?5?u#KRRdk@{cLt7#>W&*-&&MRh%F?81|JYp z4{QwHKQ@f`zcWI0O#9;{RE6`Db?rfNgYh7_LEWfn50V?yJ(-tKMic50hbDGfXNaBF zoe5&6btZ)9F&!uYzX<*=8%qKD_~--iZA~Wg9=CQgc&cKl+=eOlfZNy0{s21XPRb5(!V$T=h)Q zm~4W{rjW@dc=klj1vJPkdiE1btc#;~( zqt%?M{^d{a`fI0FuW}J*Rt5@{kvaJlcZYOkN_TD%O@j9;?dVrg*!e}eu(wF2yU6Cm zcLa8)2f%UiZpe=G2mj_0D9Pyi(&mJ}8>Lj#g_4z(@azBsUKb^3;sgBQOkhq*c zMff&DJ$z3dr0y

    &tnqJB{BF6We_I=C?7%_Zp1}KJ2M9w;C1U-C}?0pUH#Ud@Q5r z?i(r{k(N$la*FJyiaeyvMJl?xNZr9UyFJY*dp}inD!)g5QzaeP=vx}yvE=ZkF=5}n z@71CQs*w`<_tD$Sj%A!5qB^`OSEarcqIVf1s)ZI_XLlFn06e(AV6PLuvRvf5T4m@le z@N#0_jlx&*r0UR16FTI&-SizK_iXFHL}lT763UZvPeKnbRFhM@S0mnya#ocv@vbm? zNL6QgL_zCDZ9*kWa)9Omo z7|%JTRXmK`gmr^%POVf0`7ET7kF9dTTB^Eo+efaV|Ida|S5@{QCRBP5>B))@1zbZ& zWsuUlF^&s>TwmEMBFbC!iYsmqkSsFwxqS}iRLiuqeRS5noqnM*?pCve8uoM%T`<=`Pp z9U!N+)YgoD{hwbI_WU_JEV7rHIGLw(U5C%psN>q_X=>^!sc5@TIa6KEIM97yvtE*4eWnhf zzx+?1Xy_-hgbn<{LeF1g!zoqmuJyy*<~*;@se0!RLPqUMh)0xsO=*nl4D=MU z&yIVc1bVk!y;`)CtdOy#39rvZhlJCzv@s?|-i-O@RJM>tkBeJBhZ#yQW11VA;>B_o zQ@mImW`sobVj;bOuu7L+ykr(_SV&ZFveK#34eCx@y`Nx2eOuq1AJ`V(^oO$zmn;zX zFT2wliz=&PF`5W}Fr)6gn;TDvtUhFsp8ritkWn3;n62?-`q=Qun;#bi*nB zYktLhCk1?U23-6|1x=?bWB!+v&`YBq6{TWE$ls}SMppcoS*PYGe>Lx7LNu?gk6o!e z56>k-DQL-yY2KqFWtmK<3~Mq`M4n8DnEMbX-ZYADI96g>S><|$)04(i@{+cnPbYN&z zhUArW6tAQ!v29xAneA^*jSE#tm;WD?UP6a|9o8aBC69Jl%Oa6<%&^JGn@YM zKXq(T{EX_yt33Y*l~8eFD7jW8Kc~!4@(fBa=o~`3|AK$9OGwoAuT)w4d_vX4Kboub z+mJMw(fIE(jNWg-9xX>YxU5pDG({s9eMPNJYjMZc1u6$F;4??X3K$UwydUkKG8H@@4PhInkyAe&y|W6ohqmC zR5{-~2c~v2XEQm^oeogm)Nn!Cn}i8fc<$a_d2^^HRhoUED$nvp(b${Hh&SpT58e+> zaQLNCFv{r zO@Xa8$0QwqY1jx;kyZpk?J+Il5WW7w?J*C}q=P`3Q?fp%fDo9~`gY!HaK}>XtuvGGTYx6neA_ksRwPr z>Tsi({pp1!_1=${{EM0XX}+gbAS}~nK1Xg=Vu;@uNvDq&aP3ICFkg0?T^*bf8J>{_lH&`@Bd@(OW><2uK(|QFE<7W zFCm0%xCGol69}uIh@zl?pnxD~l@PK(AS93l5JeEM;tm!S*WgyITWM`8uEpJ2m)N?X z);89qXsc4SO6&Ijo@MU#-VH(W)BgYe-}^w$nKNh3Y-i4_cgELqWf9k1)N@Vt@c1m( zWU`UJVtw0~(uT?QEU1GoXtY|)y4-EDpiZT&R?B-z;b}_GuOpe%{v#cBev)R_@!xoQ zMAm0&35+B(gz(vT`x=7V^WV!^K@IFi=kIG)H1m$%$F;FJVvc>Fs66we62~CjAF+KF zVK9}$W)6(mI++BgAW-0_wSk33Xdlq=RTT(4LO#zRXBp%& zgIs5jhYfO%L2d(L6&a}{xt^pyh?bVJZfmsJ5x>xcaKt+iwm%;4SQH~-E50St6-Q~f zMO(bx=Ucs@IYRt?E(#3|!g$UwT#FTXip<@j>28@KL9REK?nrLQ1toy3^ zb5r$2>KG&E=n%+MCe54;Iob-+nSv55N&`rM97JLm5q1p+hN<0NehXvv5RSq9ve_P&ADj zok&956ogD;8+GFAJx-ufXyKL*!CYjl%bwoDXDJGaACCijOAP_J)Pl>YDeLn16F&1T z-_(?Kh3nHir^yz+WrlCr7dp$9*%#6o5|5M4kznm{6LN;5@E6g{9L_a#CD6vPgWirISA=VgL9T7`(j=l^;)$6j8FrRBpKDU^jq9rOl zg)g79#F4#0Bh!3B8s`%;@>oJn%{r(g&!1BYpm|+u^18)ru(hb|_H8F#n~LbKrEln3 zoDVF3CFGU(Os|-D#-!B@iPxIEZb`P2)Q$3bJ>`|6kbVM~S_R}fA+r=hs}+p?%yRW; zZd=WE;#!m2EoSf7TeBBXZg1o-2HRZUCO*yWmc;e#5>?<o z2t?QNeR)l%yx!jK4RK z#Haa$w?Ch-mRhG9%|cX3lD5j(-1Ng_b5uWM^H;P@St7Y4Bq5W;#hE1EU>>EBBClGN z8+C2VSCuwZt+~0{F5frJ_c5qw`ss7+K^tNiOMXpzJ5Ho->V&PGnj_^$`c> zFfz?wcQi1eW`_)JbOr}(fC3q$LrmFEV{LO9XD>1>yxz=tC-C}mM&nG`3ZTeTE4L>z zq?b{r@hoZOcE^wcOUM@SseyraFlTGcQn$0TyfN8ufQG@@&y!wK6rz{F+UPaRz*&L> z^QhY$lv&gAk_`i{!+C=2m$>CQ!+?!Rh5^KT#{fN8;P;86>{l&LCGJ-!7DxL7pEZSeXu~L>|?&?mUm4Q4P}f9Tk!1AKjPM&a7UEdAsNr8ITakPr0%Xj0}P|?3S1UFDl(PkZ1KyY^gWEb z=6_j~_5f&4jDPW;@Rb8Wck$|0^}ix&L;Wo4F%THpY>>MQa-%_>H^`L+c@2o=3frK< z5*ZyCZN$UEioC~_dHoJgY-07FPApqK&j}#JuZCx=sj!*7t&t#EX~#{Vg5s}L(vG9= z$P}f|9QfQ*+8E-HPdw}*;k1irt&KVDBKAI)z_KqMz=5BIn``M+AinS2_6K9yI5`qW-@6sOtwBiu zd*;c=^zWeWWqmHbJ=e2XiA2seBt4)tggERnDnTu-vLiv^(zIvshhRgACB0rhUjgEN zTUH<8@8g`W;>y7pnU;ByE{pADkb{75?v60X03g0>W+AA3wd909>nos->&%Znx3jP9 zj>F$O|JJUczb9Z<3b+w^Hsdf*5&l^6JUW8t^(Q581y!k*z!g*i1IXLHf)qvy<4Q-% z>+g_%j=s4z>VFlTUK`l^x3+gpt&>lqXu z{XD3&(awvd$U86Q&m9K}n`M;&iA?);ie_*RSVUhe8Su9^d6nfn@R}dhmwgY$+YM>W zmlEAu-Nz7@{d2AApL0!)A{zaM;lI}8z0QK3eJ|G&rG|d?ebN>a64iw~y@~S0>%?&) z*ffrZ-8dfhE6&4ov4zK%J_<@Kf!}&cz?;WpaXsZqd&(czQ~tP~N*>qKA#pi%)|2x^ z#)nesn;#Way_zbciq25v6< zp8)Zx4SkQ?eIL)q)7Iz+DoTG`OF3O>{a2Eg)7ANgHK!{b&Sk5Z)0N6qKBLX)M$6mA zkwXryvm8dXE5?y34j7-}h>K65RdS{BhnJLJE55(y^J_S0$iv^b#t+~l4q>>IYSv7N zCu=6H$a6Zf%G}RHcLlBBPfEE!vJ2e;$u4w~EhtBl-IEJ}xw9T{xw9T{)A6924iEaU zOMNIQ>fsHd`dw**`L49V^Id6!=Of$(E>ay7eJCYlf4DzRL`xs{Aytahrv34KtO~I{ z@U;iw5B)lgPCKg8F?iW@Eb2Qt#OuioqK7I&q-)(i)RFSfTB@bfMnIstfvn*_>YFx4q zhd5;|z_(M#_kkS}*^euN=2(o-EQ^tZNfz<%&eE}OPY`-)#fwcoX)D!o&%5;1^=aq0 zi*wJJbMu*V`gPA!w1xs_U5h}cU%X!=9ka;1=Aj^?$r8E&?Wv-cBq=55L0 z=Fmm<{^?x*yL7_hHWPt!l7r56SVx*8HQDkSOVJLZ>JO{OmTjXzaA*)sQ}nSjFh~E1 zgOoEDM4WMcWd;HH(Q)f_c{Impz-@wEN)27kRFe-rEj)es|;wKp3+olnC>#`vfR598n>qhlRsf(?1g1dDI;*{=9DGLLzN zFTRaB0FRTH3oguJTg6Nd{{{8_{+_JHSAx#SjX=<*H>KPq$eNVRf~<`_2E?}-PT%jv zTWOhWlN?q_FJNP?P!C(uhpCdM_MFiEe+kZ zF-lIwgTBLx^IgtsW9Hn>niScNFL(h(VSb;!2F7>Ox%A!u9mRnV?@6h(#{MbD=Ga$C ziSE&ji+DveOOTC`y#?8B^(F-SX9Lw|`3NCQ94pY8A|9KfrGm6X<^thdH39Ke&ta&Z z?8B*gTAf{Dq%5I^h)-=K7=tym!Z}Z57Q8nnt0CSEAFh$g|s$u>)8|sV|Z>inqBb~CbzB0mcw~h{21!OTb<=_U;e zSA0dX-14sYXs%mlsTk5Ux5!RH-FkM#!5GXfLTKG?H@o5+&93;0WVz*C@v%H$adNvN zNp3y6;_&w87OhHmP`8_Xw~fh;0PwE(@swGL0WC|gHZtqk6-SV;%(}bcdS@b)dXn8K zUOzsO*N>geoQ+9FHs1B)#Lb+9U2$_up>L0ow~HsW+pKo{uJ}~S=XPfV2P{E@J-g!Y z4%TV=cg3guFxli?@gIFpyW*!O-xWu>CA82scf}Ea8z@HOx@+9#t~hChj&cZq)mlXN)GYz~eUWdVZ$Lxx?m`-C;vQC3{#T!T~H#waK zuml6+*%gPk-@wp!iP~#8yW%a$dJWzcZz8>Yg@3P**ECgfW=A-?aFNAKdvAc}02bcb!k z<$Q)1nYs%K~Ozh42#UV}w*($I_H0Sps~4Q7gT z6HSrK@&W~-MbYdYnnKUP>;mshkQN`a_aY|9;&qP#bMY_9ppRd(_m=e!=WgG`Yk!>^ zffKL&rQ3da3fD>(U*T8ay$tKmAjJPc7XfJ5tpG2x@5YT-g+KQc8?Q2b*vVHieJIwC z(CL}u{)Bi+NH)6d*WEQ_`}HFcMpkNHcb3oX*I%o17H$7>A2@I?;h#ZDp_SW_|x1o5XnC6uH+;nfAJAm;PXm27l}>EZ=pf z^F^kvyK{t=l6{NCv>#$;>WUvP7$%4aUzAl|x z#i=NM`r(N-n{$X=;H4c#v;ou-dp1vCUe6|-2bGqRah2OrGOk+Q zpl!m3I{RZ8S5X_`)|PQKQ3bt*s8)88%GK>HmQXurcacDH>F<26>VoAQ85Dwt#+7NLmXOryBe*)L%$=ZJ`%NE{Kdi%XDI z4tbO|mf;|2m)mf868>U^y!TH0)4c21-lc74je0yvPpTrL zid4s0h0drVjr2H4gFH^s6mwHj#+QmyLAXM#+28aKvd7h2J~!fK+nbo^lU8anWI6=p~M4ccO}&m`v{`V$aR16h%n2J&lxNMwn6r?~9@5m9SOfC`Ft8p-Pc! z%I!&~+;W@7%F)5xCZ9UwHc|bLji7zwQ?{n^6wk9>xr?a!3u>1bah5fQxXwHXC-atq z%8lk+gRCXKf@?k8bmvd*nd#uZ4OD!Ce~;mPn7Kxh;M`%ZrOO>gW{E9g?%_lh^e{rj zF6NH*aF2FuZSH95?S=c;6AHjRlw{jIjq&TrY9hw3XN1Bf!&A;cpjapTO(AQ@>C3p+ zjWOe1XYiA8uWOX=rBw5fD1%W>N5%o>H(VGVsxXeQ~=8K+T{h*|YZL#U@jL76Kh+G_}TEfqs9g!`d0uWg40YEU5-(nq0 z2sWE10kW2!W{}wisW-?nAcf{yHIn-^v@PQS+ef3XOEMm`y=K@g_;cZ@=4o!A;O7Pk zer}-P=SKVmJugtu;!Z5++O|uw&Xi=aDM@=FmEa^PL6cj%Ud3F8GO&sanF=8XgI|BFja<*NZx z%#?}s9tjUd#t}!6_o6d8Fk-KabYXA0&#cgUOImmM z=3d<2^7S{wYOkjLW(xH;K3(Ms%Xq=9f{YjFbgme!7pS-sQ957cp^ABGp%H?hFVYaL zE%cAhiLZ>8*E_tg5b7~-g<|0H-V!~?d&|*-yti0Q*p%lUqc`aTaUMMYP8@8?73WIJ z9UbL~tb{x>77>m!V~*j^Ju~Kp6kI}{73;K|l1FN%Z+n#)J-U9B!oIv+RpxBokY=4b}(livyNJ z{9T>CkSDnP%&B1tlS1Jx#i+$QuI8C1h#`iWz1Ozwy)M+7&HQD?IQh&x6`*}N85}$b z^cNUcgAB!7!?=ge0|6 z1m?^{OEPChYe|?hX9>+MORM;`WuOsxgC^-+5SU@RLB2FdSF|mLDs|u z2=a8w5rkl;bBqvLBPXd(Yz7eD-HKfiZ3aGeq7s&?6}>ivYBpo*AyVw(y$BM_FO$6g zL`!nF#hTBChcKQ`ECnxk7^|V58T_I-KHlCcj0p0MVB4b2+kqiht&y*Q6kU!#<~I#N zbC<;^lGaG`^%4SMZx;+6Bo^l;!Yvr?eF>1r0{)y&m@W zNJqwBG|h)Y3w-xfk$sdWDq16fCn^fO{VjdhlJQT`{@bWGF7Cb@fAPymgGr|kX?uad zc|VMNe23P?5nnnto)SJeg9&F~?m*W8DhR{@z9HZ z*TmSbHPO!mBd=E<@CKWXy(k2mEEAcOb!l{Q2Cleljj*hzafxu?OqY?h1+uRCgIAW5 zItu0YLXw|GG?+e@c>6lPF5SQuHSaj;-{9QJ z{El-6s0d|zH(=S&pnIYyJQS>iR$t$ybQzjFsA%F1JA zX9Ax$iu!-oc?@O0;KDo($^i}nnm3Mg83#tz!vm&wBLEDHbthm^wTF2xFy~&1)*6{s zFRW*?ug@CHB8hyqV?)$5O2{T_AVv=eNe{OLk!flO5R41~2MabxuK_xpq8!hehyBwH4{96e+*Vf^(c|^>DY7T0JB^G}03jBaIk~hj490$~irO za*7kg8Y!Z0N2G~4ML0FH?THlcJD@1tNZXauB$2i^r(C>v-~sngImL_U+mX}6;zhXd zoF=q}$sB1!S_4Pl?gqi!+9temso~_E6p$Nf4wait8sceakQ-@E($=_;rl?$12XJa3 zA=|s4g9xXEgm6I}^k#-l#>o`v1~nO+ywJ=9t%f%3rWac#5sNdnp1?DZJ zVq>xc8WasJoEe%{IF9C^*h33v0;Sm3uk3I%2jSW(9By7!6zNvC zhW(lF6;7h&AgUxb=!?CPnK@KAu3TX4&>V0jX;xe~b2Xh>IN;P~g*5C!;UJva9)xSF zaQaY<)KH|Gox(w2Zzgt9IN(lFIQx*?S}Gh@F0fF!`Bc9?0}bvZg~YaJfu>gr37lF; zTiei}MB9UKT1W^-g_LY4SI-sVXg|V)<{?pWz@4OQxK%Z>;y7}*`V}&yRe>w4OcrT6 zjpDScRV9`QVlax6v`nU9M4iWHx4_B6Td4o;rk#&xK}tf}H}8_UbkmM-N$Rr!t2KFi zCaYu8PIKP8bHd6UqruPyJD#-NXU*KSBV1V8S9P$?oEw(*jxBfYV$bW~w4WcA_6^@r zXAmx|+%N3lv|s!^rv1{6OFQfPy0El&tiH3(V7r^GO9$8)PCMUwnas{~Y})U@ML>C1 zc5vFS3M=;=-_gz>T$sLJ({X9%{`$JGw0EqX;l8Q4JLb3<6#J62~{-*4);v~#)N z5}Nk!Xd|~KwUMmvw{~#ae-@VZj@6kSozYhD_E?A7nY+T$-myBv-wy&atP`@+(WHWxaMY%A?;wABYX zIPDLGrG3M9Ogq9QDR$tSDzVoxo$;LAqc4;0A31*=( z>70-4`%@j4b}skdeLv;S_Wk!Aoc8CwpR}{SztC}MXPtR5EbadTcIJ;Amv+{fmy@TR zUj7R;k>OKq3YNsmyq$)g>D7))`6;wY@EUDPw^#`s(~dR_BxN~lkpST+>HE-{mF(jO z_nrA2Mmimxup=!y#s8%~i}?6%vQ+=~`(P_Lq!zv}pYKv`-&flH|B2^+Yk>~n|IlsW ze^c=N)j~3j=Oa;V^fEYs6=E%uN!ywA|KHl~=-Ljig^n%j?<=10RR3=Z+R~l>EuG|} zXt7A)TJ?ST{P6YjU2^)vr~3O!!S@x<|DCn)|4*vFOHRK_m>*u>e)tr8mvZaaF#pYE z@ZX%a@LKrcQ~krI;J>+a!qXP+^WR*e;i>+(Ekk#CXbkJTtyCSbzVhn{=8 z!56%daILweyrr|g8?iQ39&_+rKzaaLb^L^O-vmtTyYrTVFYfLX_lfO}o7g)n?t>_9 ze6g0gZf)v*z2)*w+$R`Wp9Ys+;0aYoxZE;pHxuE%{xuKM(s9ar59q^wEqh2ZjDu29 z^eY`NMoZf0O6Qk2U76LbR*KTZUq{@rxSZRFKjq(ZaA-SguJ;i+%%u~!*UG(wHnSO zwHiudwAnP99Bno$BGhb#o69xh(p+-PYtjfo?WNc}vZ5DhuFXkkCtJ<)D(1`Mp=_7H*A zq2jUCI!2H!(GvyPVE;&v?J2Vbc{-&*dFTO9=r$1<(LD(0 zds65?e5W4&3$7vHmZBHfqA@4*7{q8=LgK~FVJ*S;_zzjEcq?CdpjMM3Rf~y86D%f$ zpvHl2u($ulW26@WREM^hM=iD*h1Hj;6Qh5Nqu(AeZxJ{*E~C}A75(;z&uB_}@|Lz!uVl%Xfzl}Vn;el!NPZPbv8p~Ha`%?P0>-{e6NFVX zqARAN`>g#%NBp~0bl&{5Qhxr0{G_bg5^e6NEcK==ect{o5&v#w$#j{>jWs|b@53gu z9jZwDyA`?j7VG1wJimY{;w_Do=0Bc7mlRF&+|}&6on@pjA1KW9q!=)qrss>Ti@aj{ z5a$jSi#u#sELT{Vx`V|rDFJQ zI@l8;fcAuIOh@dzx3ohalSnKD`+F>fFZ3#SQZKq-FP<9Bz?fot#EM3&zR`62wTjIx z_3&(9Pi=J2EpE=mra6OQ0yA(cCNbQIV}GY6<8ti*rP6M&8tvuG8J)&dS`}@|MfuuQU?XNK6-z~K@MNJiUELB)q^gzxz6*(hR>8#eQ{cm%Gx4{`d!hP9@Y3aQ!q?mI4I*wI z<5|Sm48~Ll#FBuY)gL+Cc+sJeWA!c}@)4Xy%hw;x03Sunc?~O7Z#CdqWGlTi+STNW zm0xq{>BRhl$}}iK`aH9wmS9%MoAd5`0Qi#{BeI1g04ZEq<5!Lm`1+vQhc3jylJ(KE+V5-HIrlOc61Km zV+Og=3~U?I!`S2kXqEPKC>t?2(zb`P`J`>=5*DdX+Lll@l7_@@>mr5KJ!xT0;p@$( z;%_jv$yAoO3yvP@^l~LBagVqA7Uz{%L6%K|xc?pD_?Q02H@~DMYg}y3i%9XWUV;)h zH=l{qw={EV)fD62ZY^+%q|e$xxxz;s!8 zBZNCp^pMLF6x}nCogSFT5d{oi6&rKyFOhhcAloS_-Wed z{4^~KqX%h^G(8a>r2QVAp&d$@u&*&UcwghbBLd=+FPR&>uZhr`^n4X7=yVOZ6{Ek@ zA@J{)_^WrYZVcSPiZ>X+>Fi_Jc%5(;-4g=*6f-WH=ZNhaBK>8XW4pL-iX7qH=CE(% zZ>75n$tk`7$}So*%#fn;%&mxuqVN?AdouLzf4A#ndbZaU^+kp7Rx&o!sl& zdCsg?K#I-A-;`pI*~I4d(A%GT&^DiYaqeoAqgL7@fl7NMawIt2N_!-5x$`4|N=$TL z<*T$uSb?xvwF!wrAv|g>)?FKLYb`z|{&edkv8$6lkn*_QN_~Qp@46pncfWB|82ZB{ zUY7k-vL^+S5}!`S`MYGqXK=T#cVjD?B6=~Bi@^!r4&%M8{Y@fh@Jl;(lIcH0=E8Qn zss5v=rdJs2-5Zg8VckkZR#A;7Q>?kPsDziHtma1Y@%gjDy~7J_CF1SB&3Xu>bsPNk zNew*n7LhkKupSuEM>YI+oJxl=DY`D5`zF*^vP)2>u>RsIR8-jUk<(57dqqy6u4#J8 zx;)yOmVS!6F*iUY5P-b{A*cyVNm4WH{~8dgSkf5U>CTBy^o;P!33Cvp3Bf#ILb zeH7Bp_5=R(yo9li89A(Cv}w#LmysJ;PbwH)$A&*6-+!NVMuEQ_W#sXF*2O2bO5tVf z&8sHRj9H-Y0B}Abu*FLNeSLi&wEy@V8lq$Mkk=8DJfclZVN2PlBJKT$YVWUWh`!#R z-foRoC)oqpmy(>&`|tKsuilAZHpM-+-EkB9?o7pe`OcuY=kd-bO>B7i0K1@s^Vlac zEg|oF>~8#K8JkL$iZ@<^lLEXgZxyd@B`PjR-X~)7VCKqJUB|l7Aa@yLvq2s+$nyqy z4TwkBzA9{&WH>Riup;l9Qx#DDj6z*YNa2oiEn&*l`j=eZba_qnB#LwPV}YTz7;uSDoJ*^GXiz^(Fa zGVMufnGBU{Cz6)QI0Ouo35C>B85;aH+1G>ag*0XiS@-;v13#dz&8v8Udl{$z|Bd1tB2aYrh zG8~gB-J)cDP!UbP`1L6pV*zw037@m^165Rj!3)Eu*z49{n~1tM5*@fQoaeacsSr+v zc<~Au;>9bRM+D;)biRmZ((y`~nR!qNlr>laWeq;laAqAwC%u?6Yshy)hfy#Yn&zJ5 z4o!1UqK=NAy2w3=`Y;d5@#RjXr$+>xLgB1jQ_%fkxn!W)c^M6}`PX?F^`ssrW!K}R zIB>Bz1|ax#KAT=1#7wn>T`QJA{sHVmp3CpUU)Q;kVt1YA_?_%q;BCeKAsIiWHdWG0 zjhNMIR~qqj2#`ix(%ha#d?N94BQ9wUJC5dim5^3dJM(>G7$(xXns1ftJc!ffG0e*Fhd7!16_YqTAk0&(2Ax6JmNP;?Ge>X>^YCmx=AEFM56(ljLmoiNMkg2LQ@JxozQ&jA9vXwM~;MN zZ;^yS@5koJvP>e`+x-I}`x6d+2>bn$ao_tL{5Xx-X5@#K`gup~IVAFnNPci+EQ4k| zndH4n-%WmT7bp2&1(N?&Ao*WK_CM8|ov$Q2wB*BS{#wR)a8prR_BT9`!?>@Io!Cm5Rz1FK-F*yr)w%9|~2d^PUr1 zDe3ad!NkT+=f%tw(dKEbP&i&Po&^lU(k&JbOL6!wx&##8xRhQAmT~D8tBqrM#AbH1 ztb}zbbJ{3P59PJ;JK>1QJ3Ra$ho(F{Z2!=d*gI@!N-uz8Xi8?pYRC2nvF}#g-eGAk z#OWE97VW^2n)#9Gx4S@TA}3pDJftzv=FY&J={a$*`s9L|tV7SH{upg2Fiw#5Va$mO zdCY(|m@rC^MH}>hJue{Ztv_Lp(hvhm3#)LF@zD;n53P0S>P;WF*JQGEpp5E!z%AxI z;Fidj7;?(fNiC6)s0xEqJ7=?&^&%gN_TnNXev>`|1>^uM?{Y}s^NkeXB*nE`Z^NZ# zw;Ox8X0}`ONN{@Hv>0fnr*?LfI%1#AVAGnT8(d--yiayr0`sXe0+f<2W8) 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 literal 0 HcmV?d00001 diff --git a/example/android/third_party/secp256k1/x86-64/libsecp256k1.so b/example/android/third_party/secp256k1/x86-64/libsecp256k1.so new file mode 100644 index 0000000000000000000000000000000000000000..077f47acc40b59c1cc5ac77bc49092bb476310b1 GIT binary patch literal 657040 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

    AXSca&o?&i?~_+%SbU-o*Bc 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�)uhTEm3TnrX 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�ojdV+2>0(i|Rxzs;nXBlCC?)+di>sg=okfKv+Y5 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�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 literal 0 HcmV?d00001 diff --git a/flake.nix b/flake.nix index 36849ddfe..cb70b5bb0 100644 --- a/flake.nix +++ b/flake.nix @@ -31,13 +31,16 @@ openssl_1_1 zlib libmicrohttpd - ] else [ + libsodium + secp256k1 + ] else + [ (openssl_1_1.override { static = true; }).dev (zlib.override { shared = false; }).dev ] - ++ optionals (!stdenv.isDarwin) [ pkgsStatic.libmicrohttpd.dev ] + ++ optionals (!stdenv.isDarwin) [ pkgsStatic.libmicrohttpd.dev pkgsStatic.libsodium.dev secp256k1 ] ++ optionals stdenv.isDarwin [ (libiconv.override { enableStatic = true; enableShared = false; }) ] - ++ optionals stdenv.isDarwin (forEach [ libmicrohttpd.dev gmp.dev nettle.dev (gnutls.override { withP11-kit = false; }).dev libtasn1.dev libidn2.dev libunistring.dev gettext ] (x: x.overrideAttrs(oldAttrs: rec { configureFlags = (oldAttrs.configureFlags or []) ++ [ "--enable-static" "--disable-shared" ]; dontDisableStatic = true; }))) + ++ optionals stdenv.isDarwin (forEach [ libmicrohttpd.dev libsodium.dev secp256k1 gmp.dev nettle.dev (gnutls.override { withP11-kit = false; }).dev libtasn1.dev libidn2.dev libunistring.dev gettext ] (x: x.overrideAttrs(oldAttrs: rec { configureFlags = (oldAttrs.configureFlags or []) ++ [ "--enable-static" "--disable-shared" ]; dontDisableStatic = true; }))) ++ optionals staticGlibc [ glibc.static ]; dontAddStaticConfigureFlags = stdenv.isDarwin; diff --git a/test/regression-tests.ans b/test/regression-tests.ans index 61191ea4e..e2057210c 100644 --- a/test/regression-tests.ans +++ b/test/regression-tests.ans @@ -6,16 +6,23 @@ Test_Fift_bug_div_default 1ac42861ce96b2896001c587f65e9afe1617db48859f19c2f4e306 Test_Fift_bug_newlize_default e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 Test_Fift_bug_ufits_default 51bf5a9f1ed7633a193f6fdd17a7a3af8e032dfe72a9669c85e8639aa8a7c195 Test_Fift_contfrac_default 09ebce5c91bcb70696c6fb6981d82dc3b9e3444dab608a7a1b044c0ddd778a96 +Test_Fift_test_adddiv_default 8516934b6fe143062864a90c76271c1d6b9b83bcb07cd09c43ac5d3e41997e6b Test_Fift_test_asm_nested_program_default 2a19decac67adb719c444ab42879a5d894447d450d1998848c469605531076ad +Test_Fift_test_bls_default 362b67d27e3081f75a59d3d2ca5891fd000cbc061d741764924362aae4235737 +Test_Fift_test_bls_ops_default fb0a81d4f247ab806318b051d12158f7f1aacc5513db5f8cb0fdca21dbb4f9f4 +Test_Fift_test_deep_stack_ops_default df812efbadfffa8a3f553416f68c8c4435bac07266f84562cf98fe5f0dd62a52 Test_Fift_test_default 4e44b3382963ec89f7b5c8f2ebd85da3bc8aebad5b49f5b11b14075061477b4d Test_Fift_test_dict_default a9c8cbcfdece5573185022cea07f59f1bc404e5d879e5157a5745757f8ee0525 Test_Fift_test_disasm_default dacaa555f5f217b2373e01e3bcd59634e480f5759dcc43edbdef35273ae38492 Test_Fift_test_fiftext_default 2b0db5d4d4bfbc705b959cc787540d7b3a21a71469eac54756e76953f0d9afca Test_Fift_test_fixed_default 278a19d56b773102caf5c1fe2997ea6c8d0d9e720eff8503feede6398a197eec +Test_Fift_test_hash_ext_default 686fc5680feca5b3bb207768215b27f6872a95128762dee0d7f2c88bc492d62d Test_Fift_test_hmap_default c269246882039824bb5822e896c3e6e82ef8e1251b6b251f5af8ea9fb8d05067 Test_Fift_test_namespaces_default e6419619c51332fb5e8bf22043ef415db686c47fe24f03061e5ad831014e7c6c +Test_Fift_test_rist255_default f4d7558f200a656934f986145c19b1dedbe2ad029292a5a975576d6891e25fc4 Test_Fift_test_sort2_default 9b57d47e6a10e7d1bbb565db35400debf2f963031f434742a702ec76555a5d3a Test_Fift_test_sort_default 9b57d47e6a10e7d1bbb565db35400debf2f963031f434742a702ec76555a5d3a +Test_Fift_test_tvm_runvm_default ff3d2a4031b543c18d6b555f0a1f1a891c7825e6d1e2e9beb4bf13b37441450b Test_Fift_testvm2_default 8a6e35fc0224398be9d2de39d31c86ea96965ef1eca2aa9e0af2303150ed4a7b Test_Fift_testvm3_default 3c1b77471c5fd914ed8b5f528b9faed618e278693f5030b953ff150e543864ae Test_Fift_testvm4_default 8a6e35fc0224398be9d2de39d31c86ea96965ef1eca2aa9e0af2303150ed4a7b diff --git a/third-party/blst b/third-party/blst new file mode 160000 index 000000000..e9dfc5ee7 --- /dev/null +++ b/third-party/blst @@ -0,0 +1 @@ +Subproject commit e9dfc5ee724b5b25d50a3b6226bee8c2c9d5e65d diff --git a/tonlib/CMakeLists.txt b/tonlib/CMakeLists.txt index ae5bbe866..72c59c4da 100644 --- a/tonlib/CMakeLists.txt +++ b/tonlib/CMakeLists.txt @@ -62,7 +62,7 @@ target_include_directories(tonlib PUBLIC $/.. $ ) -target_link_libraries(tonlib PRIVATE tdactor adnllite tl_lite_api tl-lite-utils ton_crypto ton_block lite-client-common smc-envelope emulator_static) +target_link_libraries(tonlib PRIVATE tdactor adnllite tl_lite_api tl-lite-utils ton_crypto ton_crypto_core ton_block lite-client-common smc-envelope emulator_static) target_link_libraries(tonlib PUBLIC tdutils tl_tonlib_api) if (TONLIB_ENABLE_JNI AND NOT ANDROID) # jni is available by default on Android @@ -133,7 +133,7 @@ if (NOT TON_USE_ABSEIL) if (WIN32) set(WINGETOPT_TARGET wingetopt) endif() -install(TARGETS tdnet keys crc32c tdactor adnllite tl_api tl-utils tl_lite_api tl-lite-utils ton_crypto ton_block smc-envelope ${WINGETOPT_TARGET} +install(TARGETS tdnet keys crc32c tdactor adnllite tl_api tl-utils tl_lite_api tl-lite-utils ton_crypto ton_crypto_core ton_block smc-envelope ${WINGETOPT_TARGET} tdutils tl_tonlib_api tonlib lite-client-common tddb_utils emulator_static Tonlib EXPORT Tonlib LIBRARY DESTINATION lib ARCHIVE DESTINATION lib diff --git a/tonlib/tonlib/TonlibClient.cpp b/tonlib/tonlib/TonlibClient.cpp index e29d0b088..cd1ad938a 100644 --- a/tonlib/tonlib/TonlibClient.cpp +++ b/tonlib/tonlib/TonlibClient.cpp @@ -847,8 +847,9 @@ class Query { return td::Status::Error("estimate_fee: action_set_code unsupported"); case block::gen::OutAction::action_send_msg: { block::gen::OutAction::Record_action_send_msg act_rec; - // mode: +128 = attach all remaining balance, +64 = attach all remaining balance of the inbound message, +1 = pay message fees, +2 = skip if message cannot be sent - if (!tlb::unpack_exact(cs, act_rec) || (act_rec.mode & ~0xe3) || (act_rec.mode & 0xc0) == 0xc0) { + // mode: +128 = attach all remaining balance, +64 = attach all remaining balance of the inbound message, + // +1 = pay message fees, +2 = skip if message cannot be sent, +16 = bounce if action fails + if (!tlb::unpack_exact(cs, act_rec) || (act_rec.mode & ~0xf3) || (act_rec.mode & 0xc0) == 0xc0) { return td::Status::Error("estimate_fee: can't parse send_msg"); } block::gen::MessageRelaxed::Record msg; @@ -1874,12 +1875,12 @@ class RunEmulator : public td::actor::Actor { return; } - auto r_config = block::Config::extract_from_state(mc_state_root_, 0b11'11111111); + auto r_config = block::ConfigInfo::extract_config(mc_state_root_, 0b11'11111111); if (r_config.is_error()) { check(r_config.move_as_error()); return; } - std::unique_ptr config = r_config.move_as_ok(); + std::unique_ptr config = r_config.move_as_ok(); block::gen::ShardStateUnsplit::Record shard_state; if (!tlb::unpack_cell(mc_state_root_, shard_state)) { @@ -1904,7 +1905,13 @@ class RunEmulator : public td::actor::Actor { return; } + auto prev_blocks_info = config->get_prev_blocks_info(); + if (prev_blocks_info.is_error()) { + check(prev_blocks_info.move_as_error()); + return; + } emulator::TransactionEmulator trans_emulator(std::move(*config)); + trans_emulator.set_prev_blocks_info(prev_blocks_info.move_as_ok()); trans_emulator.set_libs(std::move(libraries)); trans_emulator.set_rand_seed(block_id_.rand_seed); td::Result emulation_result = trans_emulator.emulate_transactions_chain(std::move(account), std::move(transactions_)); diff --git a/utils/opcode-timing.cpp b/utils/opcode-timing.cpp index dc6ac75f5..f50d7041f 100644 --- a/utils/opcode-timing.cpp +++ b/utils/opcode-timing.cpp @@ -8,16 +8,22 @@ #include "common/bigint.hpp" #include "td/utils/base64.h" -#include "td/utils/tests.h" #include "td/utils/ScopeGuard.h" #include "td/utils/StringBuilder.h" +#include "td/utils/Timer.h" -td::Ref to_cell(const unsigned char *buff, int bits) { +td::Ref to_cell(td::Slice s) { + if (s.size() >= 4 && s.substr(0, 4) == "boc:") { + s.remove_prefix(4); + auto boc = td::base64_decode(s).move_as_ok(); + return vm::std_boc_deserialize(boc).move_as_ok(); + } + unsigned char buff[128]; + const int bits = (int)td::bitstring::parse_bitstring_hex_literal(buff, sizeof(buff), s.begin(), s.end()); + CHECK(bits >= 0); return vm::CellBuilder().store_bits(buff, bits, 0).finalize(); } -long double timingBaseline; - typedef struct { long double mean; long double stddev; @@ -56,56 +62,60 @@ typedef struct { bool errored; } runtimeStats; -runInfo time_run_vm(td::Slice command) { - unsigned char buff[128]; - const int bits = (int)td::bitstring::parse_bitstring_hex_literal(buff, sizeof(buff), command.begin(), command.end()); - CHECK(bits >= 0); - - const auto cell = to_cell(buff, bits); - +vm::Stack prepare_stack(td::Slice command) { + const auto cell = to_cell(command); vm::init_op_cp0(); vm::DictionaryBase::get_empty_dictionary(); - - class Logger : public td::LogInterface { - public: - void append(td::CSlice slice) override { - res.append(slice.data(), slice.size()); - } - std::string res; - }; - static Logger logger; - logger.res = ""; - td::set_log_fatal_error_callback([](td::CSlice message) { td::default_log_interface->append(logger.res); }); - vm::VmLog log{&logger, td::LogOptions::plain()}; - log.log_options.level = 4; - log.log_options.fix_newlines = true; - log.log_mask |= vm::VmLog::DumpStack; - vm::Stack stack; try { - vm::GasLimits gas_limit(10000, 10000); + vm::GasLimits gas_limit; + int ret = vm::run_vm_code(vm::load_cell_slice_ref(cell), stack, 0 /*flags*/, nullptr /*data*/, + vm::VmLog{}, nullptr, &gas_limit, {}, {}, nullptr, 4); + CHECK(ret == 0); + } catch (...) { + LOG(FATAL) << "catch unhandled exception"; + } + return stack; +} +runInfo time_run_vm(td::Slice command, td::Ref stack) { + const auto cell = to_cell(command); + vm::init_op_cp0(); + vm::DictionaryBase::get_empty_dictionary(); + CHECK(stack.is_unique()); + try { + vm::GasLimits gas_limit; + vm::VmState vm{vm::load_cell_slice_ref(cell), std::move(stack), gas_limit, 0, {}, vm::VmLog{}, {}, {}}; + vm.set_global_version(4); std::clock_t cStart = std::clock(); - int ret = vm::run_vm_code(vm::load_cell_slice_ref(cell), stack, 0 /*flags*/, nullptr /*data*/, - std::move(log) /*VmLog*/, nullptr, &gas_limit); + int ret = ~vm.run(); std::clock_t cEnd = std::clock(); - const auto time = (1000.0 * static_cast(cEnd - cStart) / CLOCKS_PER_SEC) - timingBaseline; - return {time >= 0 ? time : 0, gas_limit.gas_consumed(), ret}; + const auto time = (1000.0 * static_cast(cEnd - cStart) / CLOCKS_PER_SEC); + return {time >= 0 ? time : 0, vm.gas_consumed(), ret}; } catch (...) { LOG(FATAL) << "catch unhandled exception"; return {-1, -1, 1}; } } -runtimeStats averageRuntime(td::Slice command) { - const size_t samples = 5000; +runtimeStats averageRuntime(td::Slice command, const vm::Stack& stack) { + size_t samples = 100000; runInfo total; std::vector values; values.reserve(samples); - for(size_t i=0; i(true, stack)); + const auto value_code = time_run_vm(command, td::Ref(true, stack)); + runInfo value{value_code.runtime - value_empty.runtime, value_code.gasUsage - value_empty.gasUsage, + value_code.vmReturnCode}; values.push_back(value); total += value; + if (t0.elapsed() > 2.0 && i + 1 >= 20) { + samples = i + 1; + values.resize(samples); + break; + } } const auto runtimeMean = total.runtime / static_cast(samples); const auto gasMean = static_cast(total.gasUsage) / static_cast(samples); @@ -120,42 +130,39 @@ runtimeStats averageRuntime(td::Slice command) { errored = errored || value.errored(); } return { - {runtimeMean, sqrt(runtimeDiffSum / static_cast(samples))}, - {gasMean, sqrt(gasDiffSum / static_cast(samples))}, + {runtimeMean, sqrtl(runtimeDiffSum / static_cast(samples))}, + {gasMean, sqrtl(gasDiffSum / static_cast(samples))}, errored }; } runtimeStats timeInstruction(const std::string& setupCode, const std::string& toMeasure) { - const auto setupCodeTime = averageRuntime(setupCode); - const auto totalCodeTime = averageRuntime(setupCode + toMeasure); - return { - {totalCodeTime.runtime.mean - setupCodeTime.runtime.mean, totalCodeTime.runtime.stddev}, - {totalCodeTime.gasUsage.mean - setupCodeTime.gasUsage.mean, totalCodeTime.gasUsage.stddev}, - false - }; + vm::Stack stack = prepare_stack(setupCode); + return averageRuntime(toMeasure, stack); } int main(int argc, char** argv) { + SET_VERBOSITY_LEVEL(verbosity_ERROR); if(argc != 2 && argc != 3) { std::cerr << "This utility compares the timing of VM execution against the gas used.\n" "It can be used to discover opcodes or opcode sequences that consume an " "inordinate amount of computational resources relative to their gas cost.\n" "\n" - "The utility expects two command line arguments, each a hex string: \n" + "The utility expects two command line arguments: \n" "The TVM code used to set up the stack and VM state followed by the TVM code to measure.\n" "For example, to test the DIVMODC opcode:\n" "\t$ " << argv[0] << " 80FF801C A90E 2>/dev/null\n" "\tOPCODE,runtime mean,runtime stddev,gas mean,gas stddev\n" "\tA90E,0.0066416,0.00233496,26,0\n" "\n" - "Usage: " << argv[0] << - " [TVM_SETUP_BYTECODE_HEX] TVM_BYTECODE_HEX" << std::endl << std::endl; + "Usage: " << argv[0] << " [TVM_SETUP_BYTECODE] TVM_BYTECODE\n" + "\tBYTECODE is either:\n" + "\t1. hex-encoded string (e.g. A90E for DIVMODC)\n" + "\t2. boc: (e.g. boc:te6ccgEBAgEABwABAogBAAJ7)" << std::endl << std::endl; return 1; } - std::cout << "OPCODE,runtime mean,runtime stddev,gas mean,gas stddev" << std::endl; - timingBaseline = averageRuntime("").runtime.mean; + std::cout << "OPCODE,runtime mean,runtime stddev,gas mean,gas stddev,error" << std::endl; std::string setup, code; if(argc == 2) { setup = ""; @@ -165,7 +172,7 @@ int main(int argc, char** argv) { code = argv[2]; } const auto time = timeInstruction(setup, code); - std::cout << code << "," << time.runtime.mean << "," << time.runtime.stddev << "," << - time.gasUsage.mean << "," << time.gasUsage.stddev << std::endl; + std::cout << std::fixed << std::setprecision(9) << code << "," << time.runtime.mean << "," << time.runtime.stddev + << "," << time.gasUsage.mean << "," << time.gasUsage.stddev << "," << (int)time.errored << std::endl; return 0; } diff --git a/validator/impl/collator-impl.h b/validator/impl/collator-impl.h index 7b136953d..93cab81a1 100644 --- a/validator/impl/collator-impl.h +++ b/validator/impl/collator-impl.h @@ -32,6 +32,7 @@ #include "vm/cells/MerkleUpdate.h" #include #include +#include "common/global-version.h" namespace ton { @@ -40,7 +41,7 @@ using td::Ref; class Collator final : public td::actor::Actor { static constexpr int supported_version() { - return 3; + return SUPPORTED_VERSION; } static constexpr long long supported_capabilities() { return ton::capCreateStatsEnabled | ton::capBounceMsgBody | ton::capReportVersion | ton::capShortDequeue; diff --git a/validator/impl/collator.cpp b/validator/impl/collator.cpp index db86cef18..54941f217 100644 --- a/validator/impl/collator.cpp +++ b/validator/impl/collator.cpp @@ -530,6 +530,7 @@ bool Collator::unpack_last_mc_state() { mc_state_root, block::ConfigInfo::needShardHashes | block::ConfigInfo::needLibraries | block::ConfigInfo::needValidatorSet | block::ConfigInfo::needWorkchainInfo | block::ConfigInfo::needCapabilities | + block::ConfigInfo::needPrevBlocks | (is_masterchain() ? block::ConfigInfo::needAccountsRoot | block::ConfigInfo::needSpecialSmc : 0)); if (res.is_error()) { td::Status err = res.move_as_error(); @@ -2288,7 +2289,8 @@ td::Result> Collator::impl_crea return td::Status::Error( -669, "cannot create action phase of a new transaction for smart contract "s + acc->addr.to_hex()); } - if (trans->bounce_enabled && (!trans->compute_phase->success || trans->action_phase->state_exceeds_limits) && + if (trans->bounce_enabled && + (!trans->compute_phase->success || trans->action_phase->state_exceeds_limits || trans->action_phase->bounce) && !trans->prepare_bounce_phase(*action_phase_cfg)) { return td::Status::Error( -669, "cannot create bounce phase of a new transaction for smart contract "s + acc->addr.to_hex()); diff --git a/validator/impl/liteserver.cpp b/validator/impl/liteserver.cpp index 69861ba30..1a4f80854 100644 --- a/validator/impl/liteserver.cpp +++ b/validator/impl/liteserver.cpp @@ -1192,6 +1192,7 @@ void LiteQuery::finish_getAccountState(td::BufferSlice shard_proof) { return; } auto rconfig = config.move_as_ok(); + rconfig->set_block_id_ext(mc_state_->get_block_id()); acc_state_promise_.set_value(std::make_tuple( std::move(acc_csr), sstate.gen_utime, sstate.gen_lt, std::move(rconfig) )); diff --git a/validator/impl/validate-query.cpp b/validator/impl/validate-query.cpp index 7a5934b4a..419558979 100644 --- a/validator/impl/validate-query.cpp +++ b/validator/impl/validate-query.cpp @@ -679,7 +679,7 @@ bool ValidateQuery::try_unpack_mc_state() { mc_state_root_, block::ConfigInfo::needShardHashes | block::ConfigInfo::needLibraries | block::ConfigInfo::needValidatorSet | block::ConfigInfo::needWorkchainInfo | block::ConfigInfo::needStateExtraRoot | - block::ConfigInfo::needCapabilities | + block::ConfigInfo::needCapabilities | block::ConfigInfo::needPrevBlocks | (is_masterchain() ? block::ConfigInfo::needAccountsRoot | block::ConfigInfo::needSpecialSmc : 0)); if (res.is_error()) { return fatal_error(-666, "cannot extract configuration from reference masterchain state "s + mc_blkid_.to_str() + @@ -782,10 +782,20 @@ bool ValidateQuery::fetch_config_params() { storage_phase_cfg_.delete_due_limit)) { return fatal_error("cannot unpack current gas prices and limits from masterchain configuration"); } + storage_phase_cfg_.enable_due_payment = config_->get_global_version() >= 4; compute_phase_cfg_.block_rand_seed = rand_seed_; compute_phase_cfg_.libraries = std::make_unique(config_->get_libraries_root(), 256); compute_phase_cfg_.max_vm_data_depth = size_limits.max_vm_data_depth; compute_phase_cfg_.global_config = config_->get_root_cell(); + compute_phase_cfg_.global_version = config_->get_global_version(); + if (compute_phase_cfg_.global_version >= 4) { + auto prev_blocks_info = config_->get_prev_blocks_info(); + if (prev_blocks_info.is_error()) { + return fatal_error(prev_blocks_info.move_as_error_prefix( + "cannot fetch prev blocks info from masterchain configuration: ")); + } + compute_phase_cfg_.prev_blocks_info = prev_blocks_info.move_as_ok(); + } compute_phase_cfg_.suspended_addresses = config_->get_suspended_addresses(now_); } { @@ -808,6 +818,8 @@ bool ValidateQuery::fetch_config_params() { action_phase_cfg_.workchains = &config_->get_workchain_list(); action_phase_cfg_.bounce_msg_body = (config_->has_capability(ton::capBounceMsgBody) ? 256 : 0); action_phase_cfg_.size_limits = size_limits; + action_phase_cfg_.action_fine_enabled = config_->get_global_version() >= 4; + action_phase_cfg_.bounce_on_fail_enabled = config_->get_global_version() >= 4; action_phase_cfg_.mc_blackhole_addr = config_->get_burning_config().blackhole_addr; } { @@ -4507,7 +4519,8 @@ bool ValidateQuery::check_one_transaction(block::Account& account, ton::LogicalT return reject_query(PSTRING() << "cannot re-create action phase of transaction " << lt << " for smart contract " << addr.to_hex()); } - if (trs->bounce_enabled && (!trs->compute_phase->success || trs->action_phase->state_exceeds_limits) && + if (trs->bounce_enabled && + (!trs->compute_phase->success || trs->action_phase->state_exceeds_limits || trs->action_phase->bounce) && !trs->prepare_bounce_phase(action_phase_cfg_)) { return reject_query(PSTRING() << "cannot re-create bounce phase of transaction " << lt << " for smart contract " << addr.to_hex()); diff --git a/validator/impl/validate-query.hpp b/validator/impl/validate-query.hpp index 13a05ec46..7d15dcfe8 100644 --- a/validator/impl/validate-query.hpp +++ b/validator/impl/validate-query.hpp @@ -28,6 +28,7 @@ #include #include #include +#include "common/global-version.h" namespace ton { @@ -108,7 +109,7 @@ inline ErrorCtxSet ErrorCtx::set_guard(std::vector str_list) { class ValidateQuery : public td::actor::Actor { static constexpr int supported_version() { - return 3; + return SUPPORTED_VERSION; } static constexpr long long supported_capabilities() { return ton::capCreateStatsEnabled | ton::capBounceMsgBody | ton::capReportVersion | ton::capShortDequeue; From 049ed0c73735d014572a6016f45afc1625b88524 Mon Sep 17 00:00:00 2001 From: neodiX42 Date: Thu, 25 May 2023 01:16:02 -0500 Subject: [PATCH 06/50] Update win-2019-compile.yml (#708) --- .github/workflows/win-2019-compile.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/win-2019-compile.yml b/.github/workflows/win-2019-compile.yml index 190c03e13..11ba7565e 100644 --- a/.github/workflows/win-2019-compile.yml +++ b/.github/workflows/win-2019-compile.yml @@ -51,8 +51,8 @@ jobs: - name: Install pre-compiled OpenSSL Win64 run: | - curl -Lo openssl-1.1.1o.zip https://github.com/neodiX42/precompiled-openssl-win64/raw/main/openssl-1.1.1o.zip - jar xf openssl-1.1.1o.zip + curl -Lo openssl-1.1.1j.zip https://github.com/neodiX42/precompiled-openssl-win64/raw/main/openssl-1.1.1j.zip + jar xf openssl-1.1.1j.zip - name: Install pre-compiled libmicrohttpd Win64 run: | @@ -72,7 +72,7 @@ jobs: echo %SODIUM_DIR% mkdir build cd build - cmake -DCMAKE_BUILD_TYPE=Release -DSODIUM_USE_STATIC_LIBS=1 -DSECP256K1_INCLUDE_DIR=%root%\secp256k1\include -DSECP256K1_LIBRARY=%root%\secp256k1\bin\x64\Release\v142\static\secp256k1.lib -DREADLINE_INCLUDE_DIR=%root%\readline-5.0-1-lib\include\readline -DREADLINE_LIBRARY=%root%\readline-5.0-1-lib\lib\readline.lib -DPORTABLE=1 -DZLIB_FOUND=1 -DMHD_FOUND=1 -DMHD_LIBRARY=%root%\libmicrohttpd-0.9.75-w32-bin\x86_64\VS2019\Release-static\libmicrohttpd.lib -DMHD_INCLUDE_DIR=%root%\libmicrohttpd-0.9.75-w32-bin\x86_64\VS2019\Release-static -DZLIB_INCLUDE_DIR=%root%\zlib -DZLIB_LIBRARY=%root%\zlib\contrib\vstudio\vc14\x64\ZlibStatReleaseWithoutAsm\zlibstat.lib -DOPENSSL_FOUND=1 -DOPENSSL_INCLUDE_DIR=%root%/openssl-1.1/x64/include -DOPENSSL_CRYPTO_LIBRARY=%root%/openssl-1.1/x64/lib/libcrypto.lib -DCMAKE_CXX_FLAGS="/DTD_WINDOWS=1 /EHsc /bigobj /W0" .. + cmake -DCMAKE_BUILD_TYPE=Release -DSODIUM_USE_STATIC_LIBS=1 -DSECP256K1_INCLUDE_DIR=%root%\secp256k1\include -DSECP256K1_LIBRARY=%root%\secp256k1\bin\x64\Release\v142\static\secp256k1.lib -DREADLINE_INCLUDE_DIR=%root%\readline-5.0-1-lib\include\readline -DREADLINE_LIBRARY=%root%\readline-5.0-1-lib\lib\readline.lib -DPORTABLE=1 -DZLIB_FOUND=1 -DMHD_FOUND=1 -DMHD_LIBRARY=%root%\libmicrohttpd-0.9.75-w32-bin\x86_64\VS2019\Release-static\libmicrohttpd.lib -DMHD_INCLUDE_DIR=%root%\libmicrohttpd-0.9.75-w32-bin\x86_64\VS2019\Release-static -DZLIB_INCLUDE_DIR=%root%\zlib -DZLIB_LIBRARY=%root%\zlib\contrib\vstudio\vc14\x64\ZlibStatReleaseWithoutAsm\zlibstat.lib -DOPENSSL_FOUND=1 -DOPENSSL_INCLUDE_DIR=%root%/openssl-1.1.1j/include -DOPENSSL_CRYPTO_LIBRARY=%root%/openssl-1.1.1j/lib/libcrypto_static.lib -DCMAKE_CXX_FLAGS="/DTD_WINDOWS=1 /EHsc /bigobj /W0" .. cmake --build . --target storage-daemon storage-daemon-cli blockchain-explorer fift func tonlib tonlibjson tonlib-cli validator-engine lite-client pow-miner validator-engine-console generate-random-id json2tlo dht-server http-proxy rldp-http-proxy adnl-proxy create-state create-hardfork emulator --config Release - name: Show executables From 6b941dcceb287f12100215095e3f7cfcc3ddebb8 Mon Sep 17 00:00:00 2001 From: EmelyanenkoK Date: Sat, 27 May 2023 21:22:31 +0300 Subject: [PATCH 07/50] Fix returning config from LS, add extra c7 elements in getmethods (#713) Co-authored-by: SpyCheese --- crypto/smc-envelope/SmartContract.cpp | 49 ++++++++++++++++----------- crypto/smc-envelope/SmartContract.h | 11 +++++- emulator/emulator-extern.cpp | 27 +++++++++++++++ emulator/emulator-extern.h | 8 +++++ emulator/emulator_export_list | 1 + emulator/tvm-emulator.hpp | 4 +++ tonlib/tonlib/LastConfig.cpp | 6 ++-- tonlib/tonlib/LastConfig.h | 1 + tonlib/tonlib/TonlibClient.cpp | 11 ++++-- validator/impl/liteserver.cpp | 25 ++++++++++---- 10 files changed, 111 insertions(+), 32 deletions(-) diff --git a/crypto/smc-envelope/SmartContract.cpp b/crypto/smc-envelope/SmartContract.cpp index 4103096c6..8e95670a1 100644 --- a/crypto/smc-envelope/SmartContract.cpp +++ b/crypto/smc-envelope/SmartContract.cpp @@ -120,7 +120,7 @@ td::Ref prepare_vm_stack(td::RefInt256 amount, td::Ref return stack_ref; } -td::Ref prepare_vm_c7(SmartContract::Args args) { +td::Ref prepare_vm_c7(SmartContract::Args args, td::Ref code) { td::BitArray<256> rand_seed; if (args.rand_seed) { rand_seed = args.rand_seed.unwrap(); @@ -139,10 +139,7 @@ td::Ref prepare_vm_c7(SmartContract::Args args) { if (args.address) { td::BigInt256 dest_addr; dest_addr.import_bits((*args.address).addr.as_bitslice()); - cb.store_ones(1) - .store_zeroes(2) - .store_long((*args.address).workchain, 8) - .store_int256(dest_addr, 256); + cb.store_ones(1).store_zeroes(2).store_long((*args.address).workchain, 8).store_int256(dest_addr, 256); } auto address = cb.finalize(); auto config = td::Ref(); @@ -151,20 +148,32 @@ td::Ref prepare_vm_c7(SmartContract::Args args) { config = (*args.config)->get_root_cell(); } - auto tuple = vm::make_tuple_ref( - td::make_refint(0x076ef1ea), // [ magic:0x076ef1ea - td::make_refint(0), // actions:Integer - td::make_refint(0), // msgs_sent:Integer - td::make_refint(now), // unixtime:Integer - td::make_refint(0), //TODO: // block_lt:Integer - td::make_refint(0), //TODO: // trans_lt:Integer - std::move(rand_seed_int), // rand_seed:Integer - block::CurrencyCollection(args.balance).as_vm_tuple(), // balance_remaining:[Integer (Maybe Cell)] - vm::load_cell_slice_ref(address), // myself:MsgAddressInt - vm::StackEntry::maybe(config) //vm::StackEntry::maybe(td::Ref()) - ); // global_config:(Maybe Cell) ] = SmartContractInfo; + std::vector tuple = { + td::make_refint(0x076ef1ea), // [ magic:0x076ef1ea + td::make_refint(0), // actions:Integer + td::make_refint(0), // msgs_sent:Integer + td::make_refint(now), // unixtime:Integer + td::make_refint(0), //TODO: // block_lt:Integer + td::make_refint(0), //TODO: // trans_lt:Integer + std::move(rand_seed_int), // rand_seed:Integer + block::CurrencyCollection(args.balance).as_vm_tuple(), // balance_remaining:[Integer (Maybe Cell)] + vm::load_cell_slice_ref(address), // myself:MsgAddressInt + vm::StackEntry::maybe(config) //vm::StackEntry::maybe(td::Ref()) + }; + if (args.config && args.config.value()->get_global_version() >= 4) { + tuple.push_back(code.not_null() ? code : vm::StackEntry{}); // code:Cell + tuple.push_back(block::CurrencyCollection::zero().as_vm_tuple()); // in_msg_value:[Integer (Maybe Cell)] + tuple.push_back(td::zero_refint()); // storage_fees:Integer + + // See crypto/block/mc-config.cpp#2115 (get_prev_blocks_info) + // [ wc:Integer shard:Integer seqno:Integer root_hash:Integer file_hash:Integer] = BlockId; + // [ last_mc_blocks:[BlockId...] + // prev_key_block:BlockId ] : PrevBlocksInfo + tuple.push_back(args.prev_blocks_info ? args.prev_blocks_info.value() : vm::StackEntry{}); // prev_block_info + } + auto tuple_ref = td::make_cnt_ref>(std::move(tuple)); //LOG(DEBUG) << "SmartContractInfo initialized with " << vm::StackEntry(tuple).to_string(); - return vm::make_tuple_ref(std::move(tuple)); + return vm::make_tuple_ref(std::move(tuple_ref)); } SmartContract::Answer run_smartcont(SmartContract::State state, td::Ref stack, td::Ref c7, @@ -282,7 +291,7 @@ td::Ref SmartContract::get_init_state() const { SmartContract::Answer SmartContract::run_method(Args args) { if (!args.c7) { - args.c7 = prepare_vm_c7(args); + args.c7 = prepare_vm_c7(args, state_.code); } if (!args.limits) { bool is_internal = args.get_method_id().ok() == 0; @@ -302,7 +311,7 @@ SmartContract::Answer SmartContract::run_method(Args args) { SmartContract::Answer SmartContract::run_get_method(Args args) const { if (!args.c7) { - args.c7 = prepare_vm_c7(args); + args.c7 = prepare_vm_c7(args, state_.code); } if (!args.limits) { args.limits = vm::GasLimits{1000000, 1000000}; diff --git a/crypto/smc-envelope/SmartContract.h b/crypto/smc-envelope/SmartContract.h index ce349de31..dd299220c 100644 --- a/crypto/smc-envelope/SmartContract.h +++ b/crypto/smc-envelope/SmartContract.h @@ -70,6 +70,7 @@ class SmartContract : public td::CntObject { td::optional address; td::optional> config; td::optional libraries; + td::optional> prev_blocks_info; Args() { } @@ -124,7 +125,7 @@ class SmartContract : public td::CntObject { this->address = address; return std::move(*this); } - Args&& set_config(std::shared_ptr& config) { + Args&& set_config(const std::shared_ptr& config) { this->config = config; return std::move(*this); } @@ -132,6 +133,14 @@ class SmartContract : public td::CntObject { this->libraries = libraries; return std::move(*this); } + Args&& set_prev_blocks_info(td::Ref tuple) { + if (tuple.is_null()) { + this->prev_blocks_info = {}; + } else { + this->prev_blocks_info = std::move(tuple); + } + return std::move(*this); + } Args&& set_vm_verbosity_level(int vm_log_verbosity_level) { this->vm_log_verbosity_level = vm_log_verbosity_level; return std::move(*this); diff --git a/emulator/emulator-extern.cpp b/emulator/emulator-extern.cpp index 0ffc316ab..971cdcdb9 100644 --- a/emulator/emulator-extern.cpp +++ b/emulator/emulator-extern.cpp @@ -448,6 +448,33 @@ bool tvm_emulator_set_c7(void *tvm_emulator, const char *address, uint32_t unixt return true; } +bool tvm_emulator_set_prev_blocks_info(void *tvm_emulator, const char* info_boc) { + auto emulator = static_cast(tvm_emulator); + + if (info_boc != nullptr) { + auto info_cell = boc_b64_to_cell(info_boc); + if (info_cell.is_error()) { + LOG(ERROR) << "Can't deserialize previous blocks boc: " << info_cell.move_as_error(); + return false; + } + vm::StackEntry info_value; + if (!info_value.deserialize(info_cell.move_as_ok())) { + LOG(ERROR) << "Can't deserialize previous blocks tuple"; + return false; + } + if (info_value.is_null()) { + emulator->set_prev_blocks_info({}); + } else if (info_value.is_tuple()) { + emulator->set_prev_blocks_info(info_value.as_tuple()); + } else { + LOG(ERROR) << "Can't set previous blocks tuple: not a tuple"; + return false; + } + } + + return true; +} + bool tvm_emulator_set_gas_limit(void *tvm_emulator, int64_t gas_limit) { auto emulator = static_cast(tvm_emulator); emulator->set_gas_limit(gas_limit); diff --git a/emulator/emulator-extern.h b/emulator/emulator-extern.h index 4409608f0..ce920f986 100644 --- a/emulator/emulator-extern.h +++ b/emulator/emulator-extern.h @@ -167,6 +167,14 @@ EMULATOR_EXPORT bool tvm_emulator_set_libraries(void *tvm_emulator, const char * */ EMULATOR_EXPORT bool tvm_emulator_set_c7(void *tvm_emulator, const char *address, uint32_t unixtime, uint64_t balance, const char *rand_seed_hex, const char *config); +/** + * @brief Set tuple of previous blocks (13th element of c7) + * @param tvm_emulator Pointer to TVM emulator + * @param info_boc Base64 encoded BoC serialized TVM tuple (VmStackValue). + * @return true in case of success, false in case of error + */ +EMULATOR_EXPORT bool tvm_emulator_set_prev_blocks_info(void *tvm_emulator, const char* info_boc); + /** * @brief Set TVM gas limit * @param tvm_emulator Pointer to TVM emulator diff --git a/emulator/emulator_export_list b/emulator/emulator_export_list index acd79df8e..e70166e74 100644 --- a/emulator/emulator_export_list +++ b/emulator/emulator_export_list @@ -14,6 +14,7 @@ _emulator_set_verbosity_level _tvm_emulator_create _tvm_emulator_set_libraries _tvm_emulator_set_c7 +_tvm_emulator_set_prev_blocks_info _tvm_emulator_set_gas_limit _tvm_emulator_set_debug_enabled _tvm_emulator_run_get_method diff --git a/emulator/tvm-emulator.hpp b/emulator/tvm-emulator.hpp index 46e2538d4..dafa2a5fc 100644 --- a/emulator/tvm-emulator.hpp +++ b/emulator/tvm-emulator.hpp @@ -33,6 +33,10 @@ class TvmEmulator { } } + void set_prev_blocks_info(td::Ref tuple) { + args_.set_prev_blocks_info(std::move(tuple)); + } + void set_debug_enabled(bool debug_enabled) { args_.set_debug_enabled(debug_enabled); } diff --git a/tonlib/tonlib/LastConfig.cpp b/tonlib/tonlib/LastConfig.cpp index 960d59946..bcc3c0815 100644 --- a/tonlib/tonlib/LastConfig.cpp +++ b/tonlib/tonlib/LastConfig.cpp @@ -62,7 +62,8 @@ void LastConfig::with_last_block(td::Result r_last_block) { } auto last_block = r_last_block.move_as_ok(); - client_.send_query(ton::lite_api::liteServer_getConfigAll(0, create_tl_lite_block_id(last_block.last_block_id)), + client_.send_query(ton::lite_api::liteServer_getConfigAll(block::ConfigInfo::needPrevBlocks, + create_tl_lite_block_id(last_block.last_block_id)), [this](auto r_config) { this->on_config(std::move(r_config)); }); } @@ -92,7 +93,7 @@ td::Status LastConfig::process_config_proof(ton::ton_api::object_ptrstate_proof_.as_slice(), raw_config->config_proof_.as_slice())); - TRY_RESULT(config, block::Config::extract_from_state(std::move(state), 0)); + TRY_RESULT(config, block::ConfigInfo::extract_config(std::move(state), block::ConfigInfo::needPrevBlocks)); for (auto i : params_) { VLOG(last_config) << "ConfigParam(" << i << ") = "; @@ -109,6 +110,7 @@ td::Status LastConfig::process_config_proof(ton::ton_api::object_ptrget_prev_blocks_info()); state_.config.reset(config.release()); return td::Status::OK(); } diff --git a/tonlib/tonlib/LastConfig.h b/tonlib/tonlib/LastConfig.h index 514b4a595..901733dcc 100644 --- a/tonlib/tonlib/LastConfig.h +++ b/tonlib/tonlib/LastConfig.h @@ -30,6 +30,7 @@ namespace tonlib { struct LastConfigState { std::shared_ptr config; + td::Ref prev_blocks_info; }; td::StringBuilder& operator<<(td::StringBuilder& sb, const LastConfigState& state); diff --git a/tonlib/tonlib/TonlibClient.cpp b/tonlib/tonlib/TonlibClient.cpp index cd1ad938a..b49587c5f 100644 --- a/tonlib/tonlib/TonlibClient.cpp +++ b/tonlib/tonlib/TonlibClient.cpp @@ -890,8 +890,10 @@ class Query { } return res; } - td::Result>> estimate_fees(bool ignore_chksig, std::shared_ptr& cfg, vm::Dictionary& libraries) { + td::Result>> estimate_fees(bool ignore_chksig, const LastConfigState& state, + vm::Dictionary& libraries) { // gas fees + const auto& cfg = state.config; bool is_masterchain = raw_.source->get_address().workchain == ton::masterchainId; TRY_RESULT(gas_limits_prices, cfg->get_gas_limits_prices(is_masterchain)); TRY_RESULT(storage_prices, cfg->get_storage_prices()); @@ -919,7 +921,9 @@ class Query { .set_now(raw_.source->get_sync_time()) .set_ignore_chksig(ignore_chksig) .set_address(raw_.source->get_address()) - .set_config(cfg).set_libraries(libraries)); + .set_config(cfg) + .set_prev_blocks_info(state.prev_blocks_info) + .set_libraries(libraries)); td::int64 fwd_fee = 0; if (res.success) { LOG(DEBUG) << "output actions:\n" @@ -4109,7 +4113,7 @@ void TonlibClient::query_estimate_fees(td::int64 id, bool ignore_chksig, td::Res return; } TRY_RESULT_PROMISE(promise, state, std::move(r_state)); - TRY_RESULT_PROMISE_PREFIX(promise, fees, TRY_VM(it->second->estimate_fees(ignore_chksig, state.config, libraries)), + TRY_RESULT_PROMISE_PREFIX(promise, fees, TRY_VM(it->second->estimate_fees(ignore_chksig, state, libraries)), TonlibError::Internal()); promise.set_value(tonlib_api::make_object( fees.first.to_tonlib_api(), td::transform(fees.second, [](auto& x) { return x.to_tonlib_api(); }))); @@ -4474,6 +4478,7 @@ td::Status TonlibClient::do_request(const tonlib_api::smc_runGetMethod& request, ](td::Result r_state) mutable { TRY_RESULT_PROMISE(promise, state, std::move(r_state)); args.set_config(state.config); + args.set_prev_blocks_info(state.prev_blocks_info); auto code = smc->get_state().code; if (code.not_null()) { diff --git a/validator/impl/liteserver.cpp b/validator/impl/liteserver.cpp index 1a4f80854..9c7a04561 100644 --- a/validator/impl/liteserver.cpp +++ b/validator/impl/liteserver.cpp @@ -1688,13 +1688,23 @@ void LiteQuery::continue_getConfigParams(int mode, std::vector param_list) } } - auto res = keyblk ? block::Config::extract_from_key_block(mpb.root(), mode) - : block::Config::extract_from_state(mpb.root(), mode); - if (res.is_error()) { - fatal_error(res.move_as_error()); - return; + std::unique_ptr cfg; + if (keyblk || !(mode & block::ConfigInfo::needPrevBlocks)) { + auto res = keyblk ? block::Config::extract_from_key_block(mpb.root(), mode) + : block::Config::extract_from_state(mpb.root(), mode); + if (res.is_error()) { + fatal_error(res.move_as_error()); + return; + } + cfg = res.move_as_ok(); + } else { + auto res = block::ConfigInfo::extract_config(mpb.root(), mode); + if (res.is_error()) { + fatal_error(res.move_as_error()); + return; + } + cfg = res.move_as_ok(); } - auto cfg = res.move_as_ok(); if (!cfg) { fatal_error("cannot extract configuration from last mc state"); return; @@ -1707,6 +1717,9 @@ void LiteQuery::continue_getConfigParams(int mode, std::vector param_list) visit(cfg->get_config_param(i)); } } + if (!keyblk && mode & block::ConfigInfo::needPrevBlocks) { + ((block::ConfigInfo*)cfg.get())->get_prev_blocks_info(); + } } catch (vm::VmError& err) { fatal_error("error while traversing required configuration parameters: "s + err.get_msg()); return; From 961d870ece87aa4e7df328080dd54811a826fcc8 Mon Sep 17 00:00:00 2001 From: EmelyanenkoK Date: Mon, 29 May 2023 11:27:54 +0300 Subject: [PATCH 08/50] Patch getmethod for tvm upgrade (#714) * Fix TVM version in emulator * Add prev_blocks_info to emulator-emscripten.cpp --------- Co-authored-by: SpyCheese --- crypto/smc-envelope/SmartContract.cpp | 17 ++++++++++++++--- emulator/emulator-emscripten.cpp | 16 ++++++++++++---- emulator/emulator-extern.cpp | 4 +++- 3 files changed, 29 insertions(+), 8 deletions(-) diff --git a/crypto/smc-envelope/SmartContract.cpp b/crypto/smc-envelope/SmartContract.cpp index 8e95670a1..7dbb65e7b 100644 --- a/crypto/smc-envelope/SmartContract.cpp +++ b/crypto/smc-envelope/SmartContract.cpp @@ -177,7 +177,9 @@ td::Ref prepare_vm_c7(SmartContract::Args args, td::Ref cod } SmartContract::Answer run_smartcont(SmartContract::State state, td::Ref stack, td::Ref c7, - vm::GasLimits gas, bool ignore_chksig, td::Ref libraries, int vm_log_verbosity, bool debug_enabled) { + vm::GasLimits gas, bool ignore_chksig, td::Ref libraries, + int vm_log_verbosity, bool debug_enabled, + std::shared_ptr config) { auto gas_credit = gas.gas_credit; vm::init_op_cp0(debug_enabled); vm::DictionaryBase::get_empty_dictionary(); @@ -216,6 +218,13 @@ SmartContract::Answer run_smartcont(SmartContract::State state, td::Refget_global_version()); + auto r_limits = config->get_size_limits_config(); + if (r_limits.is_ok()) { + vm.set_max_data_depth(r_limits.ok().max_vm_data_depth); + } + } try { res.code = ~vm.run(); } catch (...) { @@ -304,7 +313,8 @@ SmartContract::Answer SmartContract::run_method(Args args) { args.stack.value().write().push_smallint(args.method_id.unwrap()); auto res = run_smartcont(get_state(), args.stack.unwrap(), args.c7.unwrap(), args.limits.unwrap(), args.ignore_chksig, - args.libraries ? args.libraries.unwrap().get_root_cell() : td::Ref{}, args.vm_log_verbosity_level, args.debug_enabled); + args.libraries ? args.libraries.unwrap().get_root_cell() : td::Ref{}, + args.vm_log_verbosity_level, args.debug_enabled, args.config ? args.config.value() : nullptr); state_ = res.new_state; return res; } @@ -322,7 +332,8 @@ SmartContract::Answer SmartContract::run_get_method(Args args) const { CHECK(args.method_id); args.stack.value().write().push_smallint(args.method_id.unwrap()); return run_smartcont(get_state(), args.stack.unwrap(), args.c7.unwrap(), args.limits.unwrap(), args.ignore_chksig, - args.libraries ? args.libraries.unwrap().get_root_cell() : td::Ref{}, args.vm_log_verbosity_level, args.debug_enabled); + args.libraries ? args.libraries.unwrap().get_root_cell() : td::Ref{}, + args.vm_log_verbosity_level, args.debug_enabled, args.config ? args.config.value() : nullptr); } SmartContract::Answer SmartContract::run_get_method(td::Slice method, Args args) const { diff --git a/emulator/emulator-emscripten.cpp b/emulator/emulator-emscripten.cpp index 66e97f358..dbd1c0d57 100644 --- a/emulator/emulator-emscripten.cpp +++ b/emulator/emulator-emscripten.cpp @@ -61,6 +61,7 @@ struct GetMethodParams { std::string data; int verbosity; td::optional libs; + td::optional prev_blocks_info; std::string address; uint32_t unixtime; uint64_t balance; @@ -91,6 +92,11 @@ td::Result decode_get_method_params(const char* json) { params.libs = libs; } + TRY_RESULT(prev_blocks_info, td::get_json_object_string_field(obj, "prev_blocks_info", true)); + if (prev_blocks_info.size() > 0) { + params.prev_blocks_info = prev_blocks_info; + } + TRY_RESULT(address, td::get_json_object_string_field(obj, "address", false)); params.address = address; @@ -187,12 +193,14 @@ const char *run_get_method(const char *params, const char* stack, const char* co auto tvm = tvm_emulator_create(decoded_params.code.c_str(), decoded_params.data.c_str(), decoded_params.verbosity); if ((decoded_params.libs && !tvm_emulator_set_libraries(tvm, decoded_params.libs.value().c_str())) || - !tvm_emulator_set_c7(tvm, decoded_params.address.c_str(), decoded_params.unixtime, - decoded_params.balance, decoded_params.rand_seed_hex.c_str(), config) || + !tvm_emulator_set_c7(tvm, decoded_params.address.c_str(), decoded_params.unixtime, decoded_params.balance, + decoded_params.rand_seed_hex.c_str(), config) || + (decoded_params.prev_blocks_info && + !tvm_emulator_set_prev_blocks_info(tvm, decoded_params.prev_blocks_info.value().c_str())) || (decoded_params.gas_limit > 0 && !tvm_emulator_set_gas_limit(tvm, decoded_params.gas_limit)) || !tvm_emulator_set_debug_enabled(tvm, decoded_params.debug_enabled)) { - tvm_emulator_destroy(tvm); - return strdup(R"({"fail":true,"message":"Can't set params"})"); + tvm_emulator_destroy(tvm); + return strdup(R"({"fail":true,"message":"Can't set params"})"); } auto res = tvm_emulator_run_get_method(tvm, decoded_params.method_id, stack); diff --git a/emulator/emulator-extern.cpp b/emulator/emulator-extern.cpp index 971cdcdb9..885286d5b 100644 --- a/emulator/emulator-extern.cpp +++ b/emulator/emulator-extern.cpp @@ -422,7 +422,9 @@ bool tvm_emulator_set_c7(void *tvm_emulator, const char *address, uint32_t unixt LOG(ERROR) << "Can't deserialize config params boc: " << config_params_cell.move_as_error(); return false; } - global_config = std::make_shared(config_params_cell.move_as_ok(), td::Bits256::zero(), block::Config::needWorkchainInfo | block::Config::needSpecialSmc); + global_config = std::make_shared( + config_params_cell.move_as_ok(), td::Bits256::zero(), + block::Config::needWorkchainInfo | block::Config::needSpecialSmc | block::Config::needCapabilities); auto unpack_res = global_config->unpack(); if (unpack_res.is_error()) { LOG(ERROR) << "Can't unpack config params"; From b4f4aa3ca7208fada8330c4a4f8023a220eef843 Mon Sep 17 00:00:00 2001 From: SpyCheese Date: Mon, 5 Jun 2023 17:22:13 +0300 Subject: [PATCH 09/50] Fix typo in BurningConfig (#721) --- crypto/block/block.tlb | 2 +- crypto/block/mc-config.cpp | 2 +- crypto/block/mc-config.h | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/crypto/block/block.tlb b/crypto/block/block.tlb index 7fa7f750e..1b6f72a30 100644 --- a/crypto/block/block.tlb +++ b/crypto/block/block.tlb @@ -610,7 +610,7 @@ _ dns_root_addr:bits256 = ConfigParam 4; // root TON DNS resolver burning_config#01 blackhole_addr:(Maybe bits256) - fee_burn_nom:# fee_burn_denom:# { fee_burn_nom <= fee_burn_denom } { fee_burn_denom >= 1 } = BurningConfig; + fee_burn_num:# fee_burn_denom:# { fee_burn_num <= fee_burn_denom } { fee_burn_denom >= 1 } = BurningConfig; _ BurningConfig = ConfigParam 5; _ mint_new_price:Grams mint_add_price:Grams = ConfigParam 6; diff --git a/crypto/block/mc-config.cpp b/crypto/block/mc-config.cpp index 2cf8b1d9a..02c6e45bb 100644 --- a/crypto/block/mc-config.cpp +++ b/crypto/block/mc-config.cpp @@ -1963,7 +1963,7 @@ BurningConfig Config::get_burning_config() const { return {}; } BurningConfig c; - c.fee_burn_nom = rec.fee_burn_nom; + c.fee_burn_num = rec.fee_burn_num; c.fee_burn_denom = rec.fee_burn_denom; vm::CellSlice& addr = rec.blackhole_addr.write(); if (addr.fetch_long(1)) { diff --git a/crypto/block/mc-config.h b/crypto/block/mc-config.h index 799bf6bf2..b29e37925 100644 --- a/crypto/block/mc-config.h +++ b/crypto/block/mc-config.h @@ -506,13 +506,13 @@ class ShardConfig { struct BurningConfig { td::optional blackhole_addr; - td::uint32 fee_burn_nom = 0, fee_burn_denom = 1; + td::uint32 fee_burn_num = 0, fee_burn_denom = 1; td::RefInt256 calculate_burned_fees(const td::RefInt256& x) const { if (x.is_null()) { return x; } - return x * fee_burn_nom / td::make_refint(fee_burn_denom); + return x * fee_burn_num / td::make_refint(fee_burn_denom); } CurrencyCollection calculate_burned_fees(const CurrencyCollection& x) const { From 34303ee8de976ee451ef085fff07b25ef667d780 Mon Sep 17 00:00:00 2001 From: SpyCheese Date: Wed, 7 Jun 2023 12:18:02 +0300 Subject: [PATCH 10/50] Process VmVirtError in RunEmulator --- tonlib/tonlib/TonlibClient.cpp | 122 +++++++++++++++++---------------- 1 file changed, 64 insertions(+), 58 deletions(-) diff --git a/tonlib/tonlib/TonlibClient.cpp b/tonlib/tonlib/TonlibClient.cpp index b49587c5f..0d649b01a 100644 --- a/tonlib/tonlib/TonlibClient.cpp +++ b/tonlib/tonlib/TonlibClient.cpp @@ -1875,72 +1875,78 @@ class RunEmulator : public td::actor::Actor { } void inc() { - if (stopped_ || ++count_ != 4) { // 4 -- block_id + mc_state_root + account_state + transactions + if (stopped_ || ++count_ != 4) { // 4 -- block_id + mc_state_root + account_state + transactions return; } - auto r_config = block::ConfigInfo::extract_config(mc_state_root_, 0b11'11111111); - if (r_config.is_error()) { - check(r_config.move_as_error()); - return; - } - std::unique_ptr config = r_config.move_as_ok(); - - block::gen::ShardStateUnsplit::Record shard_state; - if (!tlb::unpack_cell(mc_state_root_, shard_state)) { - check(td::Status::Error("Failed to unpack masterchain state")); - return; - } - vm::Dictionary libraries(shard_state.r1.libraries->prefetch_ref(), 256); - - auto r_shard_account = account_state_->to_shardAccountCellSlice(); - if (r_shard_account.is_error()) { - check(r_shard_account.move_as_error()); - return; - } - td::Ref shard_account = r_shard_account.move_as_ok(); + try { + auto r_config = block::ConfigInfo::extract_config(mc_state_root_, 0b11'11111111); + if (r_config.is_error()) { + check(r_config.move_as_error()); + return; + } + std::unique_ptr config = r_config.move_as_ok(); - const block::StdAddress& address = account_state_->get_address(); - ton::UnixTime now = account_state_->get_sync_time(); - bool is_special = address.workchain == ton::masterchainId && config->is_special_smartcontract(address.addr); - block::Account account(address.workchain, address.addr.bits()); - if (!account.unpack(std::move(shard_account), td::Ref(), now, is_special)) { - check(td::Status::Error("Can't unpack shard account")); - return; - } + block::gen::ShardStateUnsplit::Record shard_state; + if (!tlb::unpack_cell(mc_state_root_, shard_state)) { + check(td::Status::Error("Failed to unpack masterchain state")); + return; + } + vm::Dictionary libraries(shard_state.r1.libraries->prefetch_ref(), 256); - auto prev_blocks_info = config->get_prev_blocks_info(); - if (prev_blocks_info.is_error()) { - check(prev_blocks_info.move_as_error()); - return; - } - emulator::TransactionEmulator trans_emulator(std::move(*config)); - trans_emulator.set_prev_blocks_info(prev_blocks_info.move_as_ok()); - trans_emulator.set_libs(std::move(libraries)); - trans_emulator.set_rand_seed(block_id_.rand_seed); - td::Result emulation_result = trans_emulator.emulate_transactions_chain(std::move(account), std::move(transactions_)); + auto r_shard_account = account_state_->to_shardAccountCellSlice(); + if (r_shard_account.is_error()) { + check(r_shard_account.move_as_error()); + return; + } + td::Ref shard_account = r_shard_account.move_as_ok(); + + const block::StdAddress& address = account_state_->get_address(); + ton::UnixTime now = account_state_->get_sync_time(); + bool is_special = address.workchain == ton::masterchainId && config->is_special_smartcontract(address.addr); + block::Account account(address.workchain, address.addr.bits()); + if (!account.unpack(std::move(shard_account), td::Ref(), now, is_special)) { + check(td::Status::Error("Can't unpack shard account")); + return; + } - if (emulation_result.is_error()) { - promise_.set_error(emulation_result.move_as_error()); - } else { - account = std::move(emulation_result.move_as_ok().account); - RawAccountState raw = std::move(account_state_->raw()); - raw.block_id = block_id_.id; - raw.balance = account.get_balance().grams->to_long(); - raw.storage_last_paid = std::move(account.last_paid); - raw.storage_stat = std::move(account.storage_stat); - raw.code = std::move(account.code); - raw.data = std::move(account.data); - raw.state = std::move(account.total_state); - raw.info.last_trans_lt = account.last_trans_lt_; - raw.info.last_trans_hash = account.last_trans_hash_; - raw.info.gen_utime = account.now_; - - if (account.status == block::Account::acc_frozen) { - raw.frozen_hash = (char*)account.state_hash.data(); + auto prev_blocks_info = config->get_prev_blocks_info(); + if (prev_blocks_info.is_error()) { + check(prev_blocks_info.move_as_error()); + return; } + emulator::TransactionEmulator trans_emulator(std::move(*config)); + trans_emulator.set_prev_blocks_info(prev_blocks_info.move_as_ok()); + trans_emulator.set_libs(std::move(libraries)); + trans_emulator.set_rand_seed(block_id_.rand_seed); + td::Result emulation_result = + trans_emulator.emulate_transactions_chain(std::move(account), std::move(transactions_)); + + if (emulation_result.is_error()) { + promise_.set_error(emulation_result.move_as_error()); + } else { + account = std::move(emulation_result.move_as_ok().account); + RawAccountState raw = std::move(account_state_->raw()); + raw.block_id = block_id_.id; + raw.balance = account.get_balance().grams->to_long(); + raw.storage_last_paid = std::move(account.last_paid); + raw.storage_stat = std::move(account.storage_stat); + raw.code = std::move(account.code); + raw.data = std::move(account.data); + raw.state = std::move(account.total_state); + raw.info.last_trans_lt = account.last_trans_lt_; + raw.info.last_trans_hash = account.last_trans_hash_; + raw.info.gen_utime = account.now_; + + if (account.status == block::Account::acc_frozen) { + raw.frozen_hash = (char*)account.state_hash.data(); + } - promise_.set_value(td::make_unique(address, std::move(raw), 0)); + promise_.set_value(td::make_unique(address, std::move(raw), 0)); + } + } catch (vm::VmVirtError& err) { + check(td::Status::Error(PSLICE() << "virtualization error while emulating transaction: " << err.get_msg())); + return; } stopped_ = true; try_stop(); From 80d9be4cec3497b6983ef173c827551434768979 Mon Sep 17 00:00:00 2001 From: neodiX Date: Thu, 8 Jun 2023 18:17:17 +0200 Subject: [PATCH 11/50] Remove TON arm64 compilation with Docker; Fix windows build; --- .github/workflows/docker-compile-ubuntu.yml | 57 --------------------- .github/workflows/win-2019-compile.yml | 6 +-- 2 files changed, 3 insertions(+), 60 deletions(-) delete mode 100644 .github/workflows/docker-compile-ubuntu.yml diff --git a/.github/workflows/docker-compile-ubuntu.yml b/.github/workflows/docker-compile-ubuntu.yml deleted file mode 100644 index 41fbb8e07..000000000 --- a/.github/workflows/docker-compile-ubuntu.yml +++ /dev/null @@ -1,57 +0,0 @@ -name: Docker Ubuntu Compile arm64 - -on: [push,workflow_dispatch,workflow_call] - -jobs: - build: - strategy: - fail-fast: false - max-parallel: 3 - matrix: - arch: [arm64] - ver: [22.04, 20.04 ] - - runs-on: ubuntu-22.04 - steps: - - name: Checkout - uses: actions/checkout@v3 - - - name: Set up QEMU - uses: docker/setup-qemu-action@v2 - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2 - - - name: Set output - id: vars - run: echo ::set-output name=short_ref::${GITHUB_REF#refs/*/} - - - name: Check output - run: echo branch ${{ steps.vars.outputs.short_ref }} - - - name: Build with docker buildx - run: | - mkdir build-${{matrix.ver}}-${{matrix.arch}} - - docker buildx build --build-arg REPO=${{ github.repository }} --build-arg BRANCH=${{ steps.vars.outputs.short_ref }} --platform=linux/${{matrix.arch}} --progress=plain --load . -t build-${{matrix.ver}}-${{matrix.arch}} -f .github/script/${{matrix.arch}}-${{matrix.ver}}.Dockerfile - container_id=$(docker create --platform=linux/${{matrix.arch}} build-${{matrix.ver}}-${{matrix.arch}}) - docker cp $container_id:/ton/build/dht-server/dht-server build-${{matrix.ver}}-${{matrix.arch}}/ - docker cp -a $container_id:/ton/build/validator-engine/validator-engine build-${{matrix.ver}}-${{matrix.arch}}/ - docker cp -a $container_id:/ton/build/validator-engine-console/validator-engine-console build-${{matrix.ver}}-${{matrix.arch}}/ - docker cp -a $container_id:/ton/build/storage/storage-daemon/storage-daemon build-${{matrix.ver}}-${{matrix.arch}}/ - docker cp -a $container_id:/ton/build/storage/storage-daemon/storage-daemon-cli build-${{matrix.ver}}-${{matrix.arch}}/ - docker cp -a $container_id:/ton/build/crypto/fift build-${{matrix.ver}}-${{matrix.arch}}/ - docker cp -a $container_id:/ton/build/crypto/func build-${{matrix.ver}}-${{matrix.arch}}/ - docker cp -a $container_id:/ton/build/crypto/create-state build-${{matrix.ver}}-${{matrix.arch}}/ - docker cp -a $container_id:/ton/build/blockchain-explorer/blockchain-explorer build-${{matrix.ver}}-${{matrix.arch}}/ - docker cp -a $container_id:/ton/build/lite-client/lite-client build-${{matrix.ver}}-${{matrix.arch}}/ - docker cp -a $container_id:/ton/build/utils/generate-random-id build-${{matrix.ver}}-${{matrix.arch}}/ - docker cp -a $container_id:/ton/build/tonlib/libtonlibjson.so.0.5 build-${{matrix.ver}}-${{matrix.arch}}/tonlibjson.so - docker cp -a $container_id:/ton/crypto/smartcont build-${{matrix.ver}}-${{matrix.arch}}/ - docker cp -a $container_id:/ton/crypto/fift/lib build-${{matrix.ver}}-${{matrix.arch}}/ - - - name: Upload artifacts - uses: actions/upload-artifact@v1 - with: - name: ton-ubuntu-${{matrix.ver}}-${{matrix.arch}} - path: build-${{matrix.ver}}-${{matrix.arch}} diff --git a/.github/workflows/win-2019-compile.yml b/.github/workflows/win-2019-compile.yml index 11ba7565e..1edcb0e16 100644 --- a/.github/workflows/win-2019-compile.yml +++ b/.github/workflows/win-2019-compile.yml @@ -56,8 +56,8 @@ jobs: - name: Install pre-compiled libmicrohttpd Win64 run: | - curl -Lo libmicrohttpd-latest-w32-bin.zip https://ftpmirror.gnu.org/libmicrohttpd/libmicrohttpd-latest-w32-bin.zip - unzip libmicrohttpd-latest-w32-bin.zip + curl -Lo libmicrohttpd-0.9.77-w32-bin.zip https://github.com/neodiX42/precompiled-openssl-win64/raw/main/libmicrohttpd-0.9.77-w32-bin.zip + unzip libmicrohttpd-0.9.77-w32-bin.zip - name: Install pre-compiled Readline Win64 run: | @@ -72,7 +72,7 @@ jobs: echo %SODIUM_DIR% mkdir build cd build - cmake -DCMAKE_BUILD_TYPE=Release -DSODIUM_USE_STATIC_LIBS=1 -DSECP256K1_INCLUDE_DIR=%root%\secp256k1\include -DSECP256K1_LIBRARY=%root%\secp256k1\bin\x64\Release\v142\static\secp256k1.lib -DREADLINE_INCLUDE_DIR=%root%\readline-5.0-1-lib\include\readline -DREADLINE_LIBRARY=%root%\readline-5.0-1-lib\lib\readline.lib -DPORTABLE=1 -DZLIB_FOUND=1 -DMHD_FOUND=1 -DMHD_LIBRARY=%root%\libmicrohttpd-0.9.75-w32-bin\x86_64\VS2019\Release-static\libmicrohttpd.lib -DMHD_INCLUDE_DIR=%root%\libmicrohttpd-0.9.75-w32-bin\x86_64\VS2019\Release-static -DZLIB_INCLUDE_DIR=%root%\zlib -DZLIB_LIBRARY=%root%\zlib\contrib\vstudio\vc14\x64\ZlibStatReleaseWithoutAsm\zlibstat.lib -DOPENSSL_FOUND=1 -DOPENSSL_INCLUDE_DIR=%root%/openssl-1.1.1j/include -DOPENSSL_CRYPTO_LIBRARY=%root%/openssl-1.1.1j/lib/libcrypto_static.lib -DCMAKE_CXX_FLAGS="/DTD_WINDOWS=1 /EHsc /bigobj /W0" .. + cmake -DCMAKE_BUILD_TYPE=Release -DSODIUM_USE_STATIC_LIBS=1 -DSECP256K1_INCLUDE_DIR=%root%\secp256k1\include -DSECP256K1_LIBRARY=%root%\secp256k1\bin\x64\Release\v142\static\secp256k1.lib -DREADLINE_INCLUDE_DIR=%root%\readline-5.0-1-lib\include\readline -DREADLINE_LIBRARY=%root%\readline-5.0-1-lib\lib\readline.lib -DPORTABLE=1 -DZLIB_FOUND=1 -DMHD_FOUND=1 -DMHD_LIBRARY=%root%\libmicrohttpd-0.9.77-w32-bin\x86_64\VS2019\Release-static\libmicrohttpd.lib -DMHD_INCLUDE_DIR=%root%\libmicrohttpd-0.9.77-w32-bin\x86_64\VS2019\Release-static -DZLIB_INCLUDE_DIR=%root%\zlib -DZLIB_LIBRARY=%root%\zlib\contrib\vstudio\vc14\x64\ZlibStatReleaseWithoutAsm\zlibstat.lib -DOPENSSL_FOUND=1 -DOPENSSL_INCLUDE_DIR=%root%/openssl-1.1.1j/include -DOPENSSL_CRYPTO_LIBRARY=%root%/openssl-1.1.1j/lib/libcrypto_static.lib -DCMAKE_CXX_FLAGS="/DTD_WINDOWS=1 /EHsc /bigobj /W0" .. cmake --build . --target storage-daemon storage-daemon-cli blockchain-explorer fift func tonlib tonlibjson tonlib-cli validator-engine lite-client pow-miner validator-engine-console generate-random-id json2tlo dht-server http-proxy rldp-http-proxy adnl-proxy create-state create-hardfork emulator --config Release - name: Show executables From a20810386110c78d86624cded5249e9190d9871f Mon Sep 17 00:00:00 2001 From: neodiX Date: Thu, 8 Jun 2023 18:31:46 +0200 Subject: [PATCH 12/50] Remove TON arm64 compilation with Docker; Fix windows build; Sync create release with master. --- .github/workflows/create-release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/create-release.yml b/.github/workflows/create-release.yml index 855600806..cb6651220 100644 --- a/.github/workflows/create-release.yml +++ b/.github/workflows/create-release.yml @@ -359,7 +359,7 @@ jobs: uses: svenstaro/upload-release-action@v2 with: repo_token: ${{ secrets.GITHUB_TOKEN }} - file: artifacts/ton-x86_64-linux-binaries/libtonlibjson.so + file: artifacts/ton-x86_64-linux-binaries/libtonlibjson.so.0.5 asset_name: tonlibjson-linux-x86_64.so tag: ${{ steps.tag.outputs.TAG }} From 954bebbaf8f4cfedd04bcbad3b4bddef9bfd35fa Mon Sep 17 00:00:00 2001 From: SpyCheese Date: Fri, 9 Jun 2023 14:49:18 +0300 Subject: [PATCH 13/50] Re-enable encryption in tonlib (#727) --- tonlib/tonlib/TonlibClient.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tonlib/tonlib/TonlibClient.cpp b/tonlib/tonlib/TonlibClient.cpp index 0d649b01a..069ba576a 100644 --- a/tonlib/tonlib/TonlibClient.cpp +++ b/tonlib/tonlib/TonlibClient.cpp @@ -3940,9 +3940,9 @@ class GenericCreateSendGrams : public TonlibQueryActor { } } -// if (!o_public_key) { // todo: (tolya-yanot) temporary disable msg comment encryption (The exchanges/payment services needs to read the comment of incoming messages). This will be uncommented when a general standard is developed. - return TonlibError::MessageEncryption("Get public key (in destination)"); -// } + if (!o_public_key) { + return TonlibError::MessageEncryption("Cannot get public key of destination (possibly unknown wallet type)"); + } auto addr = source_->get_address(); addr.bounceable = true; From 961b895622aa4cd3ea0b70495debab773fc0f05e Mon Sep 17 00:00:00 2001 From: SpyCheese Date: Tue, 27 Jun 2023 09:22:09 +0300 Subject: [PATCH 14/50] New tag for encrypted messages --- crypto/smc-envelope/WalletInterface.cpp | 2 +- tonlib/tonlib/TonlibClient.cpp | 42 +++++++++++++------------ 2 files changed, 23 insertions(+), 21 deletions(-) diff --git a/crypto/smc-envelope/WalletInterface.cpp b/crypto/smc-envelope/WalletInterface.cpp index 4c2feca91..418bc4a48 100644 --- a/crypto/smc-envelope/WalletInterface.cpp +++ b/crypto/smc-envelope/WalletInterface.cpp @@ -68,7 +68,7 @@ void WalletInterface::store_gift_message(vm::CellBuilder &cb, const Gift &gift) } if (gift.is_encrypted) { - cb.store_long(1, 32); + cb.store_long(0x2167da4b, 32); } else { cb.store_long(0, 32); } diff --git a/tonlib/tonlib/TonlibClient.cpp b/tonlib/tonlib/TonlibClient.cpp index 069ba576a..1e7ef384b 100644 --- a/tonlib/tonlib/TonlibClient.cpp +++ b/tonlib/tonlib/TonlibClient.cpp @@ -2888,29 +2888,31 @@ struct ToRawTransactions { auto get_data = [body = std::move(body), body_cell = std::move(body_cell), init_state_cell = std::move(init_state_cell), this](td::Slice salt) mutable { tonlib_api::object_ptr data; - if (try_decode_messages_ && body->size() >= 32 && static_cast(body->prefetch_long(32)) <= 1) { - auto type = body.write().fetch_long(32); - td::Status status; + if (try_decode_messages_ && body->size() >= 32) { + auto type = static_cast(body.write().fetch_long(32)); + if (type == 0 || type == 0x2167da4b) { + td::Status status; - auto r_body_message = vm::CellString::load(body.write()); - LOG_IF(WARNING, r_body_message.is_error()) << "Failed to parse a message: " << r_body_message.error(); + auto r_body_message = vm::CellString::load(body.write()); + LOG_IF(WARNING, r_body_message.is_error()) << "Failed to parse a message: " << r_body_message.error(); - if (r_body_message.is_ok()) { - if (type == 0) { - data = tonlib_api::make_object(r_body_message.move_as_ok()); - } else { - auto encrypted_message = r_body_message.move_as_ok(); - auto r_decrypted_message = [&]() -> td::Result { - if (!private_key_) { - return TonlibError::EmptyField("private_key"); - } - TRY_RESULT(decrypted, SimpleEncryptionV2::decrypt_data(encrypted_message, private_key_.value(), salt)); - return decrypted.data.as_slice().str(); - }(); - if (r_decrypted_message.is_ok()) { - data = tonlib_api::make_object(r_decrypted_message.move_as_ok()); + if (r_body_message.is_ok()) { + if (type == 0) { + data = tonlib_api::make_object(r_body_message.move_as_ok()); } else { - data = tonlib_api::make_object(encrypted_message); + auto encrypted_message = r_body_message.move_as_ok(); + auto r_decrypted_message = [&]() -> td::Result { + if (!private_key_) { + return TonlibError::EmptyField("private_key"); + } + TRY_RESULT(decrypted, SimpleEncryptionV2::decrypt_data(encrypted_message, private_key_.value(), salt)); + return decrypted.data.as_slice().str(); + }(); + if (r_decrypted_message.is_ok()) { + data = tonlib_api::make_object(r_decrypted_message.move_as_ok()); + } else { + data = tonlib_api::make_object(encrypted_message); + } } } } From d94e31960b587f463030fddd4e4d89e2a9c3c393 Mon Sep 17 00:00:00 2001 From: neodiX Date: Wed, 28 Jun 2023 08:45:18 +0200 Subject: [PATCH 15/50] Fix "Could not set environment: 150: Operation not permitted while System Integrity Protection is engaged" in macOS x86-64 GH action --- .github/workflows/ton-x86-64-macos.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ton-x86-64-macos.yml b/.github/workflows/ton-x86-64-macos.yml index 44c2d2aa5..9713005a2 100644 --- a/.github/workflows/ton-x86-64-macos.yml +++ b/.github/workflows/ton-x86-64-macos.yml @@ -11,7 +11,7 @@ jobs: with: submodules: 'recursive' - - uses: cachix/install-nix-action@v18 + - uses: cachix/install-nix-action@v20 with: extra_nix_config: | access-tokens = github.com=${{ secrets.GITHUB_TOKEN }} From 020606295c011b0971a187c3bbfd007703782fb3 Mon Sep 17 00:00:00 2001 From: neodiX Date: Wed, 28 Jun 2023 09:22:30 +0200 Subject: [PATCH 16/50] Fix "Could not set environment: 150: Operation not permitted while System Integrity Protection is engaged" in macOS x86-64 GH action --- .github/workflows/ton-x86-64-macos.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ton-x86-64-macos.yml b/.github/workflows/ton-x86-64-macos.yml index 9713005a2..b9e9cf9b9 100644 --- a/.github/workflows/ton-x86-64-macos.yml +++ b/.github/workflows/ton-x86-64-macos.yml @@ -11,7 +11,7 @@ jobs: with: submodules: 'recursive' - - uses: cachix/install-nix-action@v20 + - uses: cachix/install-nix-action@v22 with: extra_nix_config: | access-tokens = github.com=${{ secrets.GITHUB_TOKEN }} From edb80d5d6aca8690d29a417b533caee7e04ebacc Mon Sep 17 00:00:00 2001 From: neodiX Date: Wed, 28 Jun 2023 09:49:00 +0200 Subject: [PATCH 17/50] Fix "Could not set environment: 150: Operation not permitted while System Integrity Protection is engaged" in macOS x86-64 GH action; Fix windows build & remove arm64 ubuntu gh action. --- .github/workflows/create-release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/create-release.yml b/.github/workflows/create-release.yml index cb6651220..855600806 100644 --- a/.github/workflows/create-release.yml +++ b/.github/workflows/create-release.yml @@ -359,7 +359,7 @@ jobs: uses: svenstaro/upload-release-action@v2 with: repo_token: ${{ secrets.GITHUB_TOKEN }} - file: artifacts/ton-x86_64-linux-binaries/libtonlibjson.so.0.5 + file: artifacts/ton-x86_64-linux-binaries/libtonlibjson.so asset_name: tonlibjson-linux-x86_64.so tag: ${{ steps.tag.outputs.TAG }} From 75534db189c282783278bb2060585751ab8a8d05 Mon Sep 17 00:00:00 2001 From: neodiX Date: Wed, 28 Jun 2023 09:53:22 +0200 Subject: [PATCH 18/50] Fix "Could not set environment: 150: Operation not permitted while System Integrity Protection is engaged" in macOS x86-64 GH action; Fix windows build & remove arm64 ubuntu gh action. Add missing storage-daemon artifacts --- .github/workflows/create-release.yml | 72 ++++++++++------------------ 1 file changed, 24 insertions(+), 48 deletions(-) diff --git a/.github/workflows/create-release.yml b/.github/workflows/create-release.yml index 855600806..10c20ac0c 100644 --- a/.github/workflows/create-release.yml +++ b/.github/workflows/create-release.yml @@ -27,22 +27,6 @@ jobs: workflow_conclusion: success skip_unpack: false - # - name: Download Linux arm64 artifacts - # uses: dawidd6/action-download-artifact@v2 - # with: - # workflow: ton-aarch64-linux.yml - # path: artifacts - # workflow_conclusion: success - # skip_unpack: true - # - # - name: Download and unzip Linux arm64 artifacts - # uses: dawidd6/action-download-artifact@v2 - # with: - # workflow: ton-aarch64-linux.yml - # path: artifacts - # workflow_conclusion: success - # skip_unpack: false - - name: Download Mac x86-64 artifacts uses: dawidd6/action-download-artifact@v2 with: @@ -59,22 +43,6 @@ jobs: workflow_conclusion: success skip_unpack: false - # - name: Download Mac arm64 artifacts - # uses: dawidd6/action-download-artifact@v2 - # with: - # workflow: ton-aarch64-macos.yml - # path: artifacts - # workflow_conclusion: success - # skip_unpack: true - # - # - name: Download and unzip Mac arm64 artifacts - # uses: dawidd6/action-download-artifact@v2 - # with: - # workflow: ton-aarch64-macos.yml - # path: artifacts - # workflow_conclusion: success - # skip_unpack: false - - name: Download Windows artifacts uses: dawidd6/action-download-artifact@v2 with: @@ -207,6 +175,14 @@ jobs: asset_name: storage-daemon-cli.exe tag: ${{ steps.tag.outputs.TAG }} + - name: Upload Windows 2019 single artifact - storage-daemon + uses: svenstaro/upload-release-action@v2 + with: + repo_token: ${{ secrets.GITHUB_TOKEN }} + file: artifacts/ton-win-binaries/storage-daemon.exe + asset_name: storage-daemon.exe + tag: ${{ steps.tag.outputs.TAG }} + - name: Upload Windows 2019 single artifact - tonlibjson uses: svenstaro/upload-release-action@v2 with: @@ -281,6 +257,14 @@ jobs: asset_name: storage-daemon-cli-mac-x86-64 tag: ${{ steps.tag.outputs.TAG }} + - name: Upload Mac x86-64 single artifact - storage-daemon + uses: svenstaro/upload-release-action@v2 + with: + repo_token: ${{ secrets.GITHUB_TOKEN }} + file: artifacts/ton-x86_64-macos-binaries/storage-daemon + asset_name: storage-daemon-mac-x86-64 + tag: ${{ steps.tag.outputs.TAG }} + - name: Upload Mac x86-64 single artifact - tonlibjson uses: svenstaro/upload-release-action@v2 with: @@ -355,6 +339,14 @@ jobs: asset_name: storage-daemon-cli-linux-x86_64 tag: ${{ steps.tag.outputs.TAG }} + - name: Upload Linux x86-64 single artifact - storage-daemon + uses: svenstaro/upload-release-action@v2 + with: + repo_token: ${{ secrets.GITHUB_TOKEN }} + file: artifacts/ton-x86_64-linux-binaries/storage-daemon + asset_name: storage-daemon-linux-x86_64 + tag: ${{ steps.tag.outputs.TAG }} + - name: Upload Linux x86-64 single artifact - tonlibjson uses: svenstaro/upload-release-action@v2 with: @@ -371,22 +363,6 @@ jobs: asset_name: tonlib-cli-linux-x86_64 tag: ${{ steps.tag.outputs.TAG }} - # - name: Upload Linux arm64 artifacts - # uses: svenstaro/upload-release-action@v2 - # with: - # repo_token: ${{ secrets.GITHUB_TOKEN }} - # file: artifacts/ton-aarch64-linux-binaries.zip - # asset_name: ton-linux-arm64.zip - # tag: ${{ steps.tag.outputs.TAG }} - # - # - name: Upload Mac arm64 artifacts - # uses: svenstaro/upload-release-action@v2 - # with: - # repo_token: ${{ secrets.GITHUB_TOKEN }} - # file: artifacts/ton-aarch64-macos-binaries - # asset_name: ton-mac-arm64.zip - # tag: ${{ steps.tag.outputs.TAG }} - - name: Upload WASM artifacts uses: svenstaro/upload-release-action@v2 with: From 4b8e90f8fe01bbe62ebe966f6edd46dc6e65806e Mon Sep 17 00:00:00 2001 From: EmelyanenkoK Date: Wed, 5 Jul 2023 14:03:19 +0300 Subject: [PATCH 19/50] Adjust BLS gas prices (#738) Co-authored-by: SpyCheese --- crypto/vm/vm.h | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/crypto/vm/vm.h b/crypto/vm/vm.h index c8649477f..6fd1797ce 100644 --- a/crypto/vm/vm.h +++ b/crypto/vm/vm.h @@ -128,25 +128,25 @@ class VmState final : public VmStateInterface { chksgn_gas_price = 4000, p256_chksgn_gas_price = 3500, - bls_verify_gas_price = 61300, - bls_aggregate_base_gas_price = -2645, - bls_aggregate_element_gas_price = 4355, - bls_fast_aggregate_verify_base_gas_price = 58400, - bls_fast_aggregate_verify_element_gas_price = 2990, - bls_aggregate_verify_base_gas_price = 37275, - bls_aggregate_verify_element_gas_price = 22290, + bls_verify_gas_price = 61000, + bls_aggregate_base_gas_price = -2650, + bls_aggregate_element_gas_price = 4350, + bls_fast_aggregate_verify_base_gas_price = 58000, + bls_fast_aggregate_verify_element_gas_price = 3000, + bls_aggregate_verify_base_gas_price = 38500, + bls_aggregate_verify_element_gas_price = 22500, - bls_g1_add_sub_gas_price = 3925, - bls_g1_neg_gas_price = 765, - bls_g1_mul_gas_price = 5180, - bls_map_to_g1_gas_price = 2330, - bls_g1_in_group_gas_price = 2930, + bls_g1_add_sub_gas_price = 3900, + bls_g1_neg_gas_price = 750, + bls_g1_mul_gas_price = 5200, + bls_map_to_g1_gas_price = 2350, + bls_g1_in_group_gas_price = 2950, bls_g2_add_sub_gas_price = 6100, bls_g2_neg_gas_price = 1550, - bls_g2_mul_gas_price = 10530, - bls_map_to_g2_gas_price = 7970, - bls_g2_in_group_gas_price = 4255, + bls_g2_mul_gas_price = 10550, + bls_map_to_g2_gas_price = 7950, + bls_g2_in_group_gas_price = 4250, // multiexp gas = base + n * coef1 + n/floor(max(log2(n), 4)) * coef2 bls_g1_multiexp_base_gas_price = 11375, @@ -157,7 +157,7 @@ class VmState final : public VmStateInterface { bls_g2_multiexp_coef2_gas_price = 22840, bls_pairing_base_gas_price = 20000, - bls_pairing_element_gas_price = 11770 + bls_pairing_element_gas_price = 11800 }; VmState(); VmState(Ref _code); From 119f5a3ccca02ebd3e4f2bcbbbb59b006270ec47 Mon Sep 17 00:00:00 2001 From: neodiX42 Date: Fri, 14 Jul 2023 13:49:02 +0200 Subject: [PATCH 20/50] fix wasm and repetitive builds (#735) --- crypto/CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/crypto/CMakeLists.txt b/crypto/CMakeLists.txt index cdd5d57b4..13e4c5bd0 100644 --- a/crypto/CMakeLists.txt +++ b/crypto/CMakeLists.txt @@ -373,10 +373,10 @@ add_library(src_parser ${PARSER_SOURCE}) target_include_directories(src_parser PUBLIC $) target_link_libraries(src_parser PUBLIC ton_crypto_core) -add_library(ton_block ${BLOCK_SOURCE}) +add_library(ton_block STATIC ${BLOCK_SOURCE}) target_include_directories(ton_block PUBLIC $ $ $) -target_link_libraries(ton_block PUBLIC ton_crypto_core tdutils tdactor tl_api) +target_link_libraries(ton_block PUBLIC ton_crypto tdutils tdactor tl_api) add_executable(func func/func-main.cpp ${FUNC_LIB_SOURCE}) target_include_directories(func PUBLIC $) From 08cfc4c6eea53b2b0e10dfa4659fb2933a6dd6fc Mon Sep 17 00:00:00 2001 From: EmelyanenkoK Date: Fri, 14 Jul 2023 14:50:03 +0300 Subject: [PATCH 21/50] Initialize random seed properly (#742) Co-authored-by: SpyCheese --- validator/impl/collator-impl.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/validator/impl/collator-impl.h b/validator/impl/collator-impl.h index 93cab81a1..abbe904c6 100644 --- a/validator/impl/collator-impl.h +++ b/validator/impl/collator-impl.h @@ -129,7 +129,7 @@ class Collator final : public td::actor::Actor { BlockIdExt mc_block_id_; Ref mc_state_root; Ref mc_block_root; - td::BitArray<256> rand_seed_; + td::BitArray<256> rand_seed_ = td::Bits256::zero(); std::unique_ptr config_; std::unique_ptr shard_conf_; std::map> aux_mc_states_; From 9b34217bf0c95c3b9a256ab63564830532801caa Mon Sep 17 00:00:00 2001 From: EmelyanenkoK Date: Fri, 14 Jul 2023 15:23:22 +0300 Subject: [PATCH 22/50] Tonlib fix (#743) * Fix building messages with long body (#709) * Fix returning slice in tonlib (#734) --------- Co-authored-by: SpyCheese --- crypto/smc-envelope/WalletInterface.cpp | 9 ++++++--- crypto/smc-envelope/WalletInterface.h | 2 ++ tonlib/tonlib/TonlibClient.cpp | 2 +- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/crypto/smc-envelope/WalletInterface.cpp b/crypto/smc-envelope/WalletInterface.cpp index 418bc4a48..c76ac4a22 100644 --- a/crypto/smc-envelope/WalletInterface.cpp +++ b/crypto/smc-envelope/WalletInterface.cpp @@ -55,18 +55,21 @@ td::Ref WalletInterface::create_int_message(const Gift &gift) { } else { cbi.store_zeroes(1); } - cbi.store_zeroes(1); store_gift_message(cbi, gift); return cbi.finalize(); } void WalletInterface::store_gift_message(vm::CellBuilder &cb, const Gift &gift) { if (gift.body.not_null()) { auto body = vm::load_cell_slice(gift.body); - //TODO: handle error - CHECK(cb.append_cellslice_bool(body)); + if (cb.can_extend_by(1 + body.size(), body.size_refs())) { + CHECK(cb.store_zeroes_bool(1) && cb.append_cellslice_bool(body)); + } else { + CHECK(cb.store_ones_bool(1) && cb.store_ref_bool(gift.body)); + } return; } + cb.store_zeroes(1); if (gift.is_encrypted) { cb.store_long(0x2167da4b, 32); } else { diff --git a/crypto/smc-envelope/WalletInterface.h b/crypto/smc-envelope/WalletInterface.h index 20141f5c0..b7f806307 100644 --- a/crypto/smc-envelope/WalletInterface.h +++ b/crypto/smc-envelope/WalletInterface.h @@ -73,6 +73,8 @@ class WalletInterface : public SmartContract { td::uint32 valid_until = std::numeric_limits::max()) const; static td::Ref create_int_message(const Gift &gift); + + private: static void store_gift_message(vm::CellBuilder &cb, const Gift &gift); }; diff --git a/tonlib/tonlib/TonlibClient.cpp b/tonlib/tonlib/TonlibClient.cpp index 1e7ef384b..816c68689 100644 --- a/tonlib/tonlib/TonlibClient.cpp +++ b/tonlib/tonlib/TonlibClient.cpp @@ -4290,7 +4290,7 @@ auto to_tonlib_api(const vm::StackEntry& entry, int& limit) -> td::Result( tonlib_api::make_object(dec_string(entry.as_int()))); case vm::StackEntry::Type::t_slice: - return tonlib_api::make_object(tonlib_api::make_object( + return tonlib_api::make_object(tonlib_api::make_object( to_bytes(vm::CellBuilder().append_cellslice(entry.as_slice()).finalize()))); case vm::StackEntry::Type::t_cell: return tonlib_api::make_object( From ef306dd36e3aaf5b3c7d9900e58ed430d35815e8 Mon Sep 17 00:00:00 2001 From: EmelyanenkoK Date: Fri, 14 Jul 2023 15:25:07 +0300 Subject: [PATCH 23/50] Patch/fix ub (#724) * Fix input validation in storage-manager and bitstring * Fix potentially dangling pointer missing_library --------- Co-authored-by: SpyCheese --- crypto/common/bitstring.cpp | 8 +++--- crypto/smc-envelope/SmartContract.cpp | 10 +++---- crypto/smc-envelope/SmartContract.h | 2 +- crypto/vm/cells/CellString.cpp | 39 +++++++++++++++++++++++---- crypto/vm/cells/CellString.h | 2 +- crypto/vm/vm.cpp | 2 +- crypto/vm/vm.h | 5 ++-- emulator/emulator-extern.cpp | 12 ++++----- storage/TorrentHeader.hpp | 18 ++++++++++--- tonlib/tonlib/TonlibClient.cpp | 8 +++--- 10 files changed, 73 insertions(+), 33 deletions(-) diff --git a/crypto/common/bitstring.cpp b/crypto/common/bitstring.cpp index aabc69843..c10a4ff33 100644 --- a/crypto/common/bitstring.cpp +++ b/crypto/common/bitstring.cpp @@ -596,7 +596,7 @@ long parse_bitstring_hex_literal(unsigned char* buff, std::size_t buff_size, con unsigned char* ptr = buff; const char* rptr = str; while (rptr < str_end) { - int c = *rptr++; + char c = *rptr++; if (c == ' ' || c == '\t') { continue; } @@ -627,14 +627,14 @@ long parse_bitstring_hex_literal(unsigned char* buff, std::size_t buff_size, con if (cmpl && bits) { int t = (hex_digits_count & 1) ? (0x100 + *ptr) >> 4 : (0x100 + *--ptr); while (bits > 0) { + if (t == 1) { + t = 0x100 + *--ptr; + } --bits; if (t & 1) { break; } t >>= 1; - if (t == 1) { - t = 0x100 + *--ptr; - } } } return bits; diff --git a/crypto/smc-envelope/SmartContract.cpp b/crypto/smc-envelope/SmartContract.cpp index 7dbb65e7b..64e269444 100644 --- a/crypto/smc-envelope/SmartContract.cpp +++ b/crypto/smc-envelope/SmartContract.cpp @@ -246,10 +246,10 @@ SmartContract::Answer run_smartcont(SmartContract::State state, td::Ref actions; td::int32 code; td::int64 gas_used; - td::ConstBitPtr missing_library{0}; + td::optional missing_library; std::string vm_log; static int output_actions_count(td::Ref list); }; diff --git a/crypto/vm/cells/CellString.cpp b/crypto/vm/cells/CellString.cpp index b4738f88c..474bc797e 100644 --- a/crypto/vm/cells/CellString.cpp +++ b/crypto/vm/cells/CellString.cpp @@ -142,28 +142,57 @@ td::Ref CellText::do_store(td::BitSlice slice) { } template -void CellText::for_each(F &&f, CellSlice cs) { +td::Status CellText::for_each(F &&f, CellSlice cs) { + if (!cs.have(8)) { + return td::Status::Error("Cell underflow"); + } auto depth = cs.fetch_ulong(8); + if (depth > max_chain_length) { + return td::Status::Error("Too deep string"); + } for (td::uint32 i = 0; i < depth; i++) { - auto size = cs.fetch_ulong(8); - f(cs.fetch_bits(td::narrow_cast(size) * 8)); + if (!cs.have(8)) { + return td::Status::Error("Cell underflow"); + } + auto size = td::narrow_cast(cs.fetch_ulong(8)); + if (!cs.have(size * 8)) { + return td::Status::Error("Cell underflow"); + } + TRY_STATUS(f(cs.fetch_bits(size * 8))); if (i + 1 < depth) { + if (!cs.have_refs()) { + return td::Status::Error("Cell underflow"); + } cs = vm::load_cell_slice(cs.prefetch_ref()); } } + return td::Status::OK(); } td::Result CellText::load(CellSlice &cs) { unsigned int size = 0; - for_each([&](auto slice) { size += slice.size(); }, cs); + TRY_STATUS(for_each( + [&](auto slice) { + size += slice.size(); + if (size > max_bytes * 8) { + return td::Status::Error("String is too long"); + } + return td::Status::OK(); + }, + cs)); if (size % 8 != 0) { return td::Status::Error("Size is not divisible by 8"); } std::string res(size / 8, 0); td::BitPtr to(td::MutableSlice(res).ubegin()); - for_each([&](auto slice) { to.concat(slice); }, cs); + TRY_STATUS(for_each( + [&](auto slice) { + to.concat(slice); + return td::Status::OK(); + }, + cs)); CHECK(to.offs == (int)size); return res; } diff --git a/crypto/vm/cells/CellString.h b/crypto/vm/cells/CellString.h index 78b63f359..10bd89aa7 100644 --- a/crypto/vm/cells/CellString.h +++ b/crypto/vm/cells/CellString.h @@ -52,7 +52,7 @@ class CellText { private: template - static void for_each(F &&f, CellSlice cs); + static td::Status for_each(F &&f, CellSlice cs); static td::Ref do_store(td::BitSlice slice); }; diff --git a/crypto/vm/vm.cpp b/crypto/vm/vm.cpp index 630f49916..4d3e67af9 100644 --- a/crypto/vm/vm.cpp +++ b/crypto/vm/vm.cpp @@ -633,7 +633,7 @@ Ref VmState::load_library(td::ConstBitPtr hash) { return lib; } } - missing_library = hash; + missing_library = td::Bits256{hash}; return {}; } diff --git a/crypto/vm/vm.h b/crypto/vm/vm.h index 6fd1797ce..e3fda3186 100644 --- a/crypto/vm/vm.h +++ b/crypto/vm/vm.h @@ -25,6 +25,7 @@ #include "vm/log.h" #include "vm/continuation.h" #include "td/utils/HashSet.h" +#include "td/utils/optional.h" namespace vm { @@ -97,7 +98,7 @@ class VmState final : public VmStateInterface { td::HashSet loaded_cells; int stack_trace{0}, debug_off{0}; bool chksig_always_succeed{false}; - td::ConstBitPtr missing_library{0}; + td::optional missing_library; td::uint16 max_data_depth = 512; // Default value int global_version{0}; size_t chksgn_counter = 0; @@ -383,7 +384,7 @@ class VmState final : public VmStateInterface { Ref ref_to_cont(Ref cell) const { return td::make_ref(load_cell_slice_ref(std::move(cell)), get_cp()); } - td::ConstBitPtr get_missing_library() const { + td::optional get_missing_library() const { return missing_library; } void set_max_data_depth(td::uint16 depth) { diff --git a/emulator/emulator-extern.cpp b/emulator/emulator-extern.cpp index 885286d5b..3a4398317 100644 --- a/emulator/emulator-extern.cpp +++ b/emulator/emulator-extern.cpp @@ -522,10 +522,10 @@ const char *tvm_emulator_run_get_method(void *tvm_emulator, int method_id, const json_obj("gas_used", std::to_string(result.gas_used)); json_obj("vm_exit_code", result.code); json_obj("vm_log", result.vm_log); - if (result.missing_library.is_null()) { + if (!result.missing_library) { json_obj("missing_library", td::JsonNull()); } else { - json_obj("missing_library", td::Bits256(result.missing_library).to_hex()); + json_obj("missing_library", result.missing_library.value().to_hex()); } json_obj.leave(); @@ -548,10 +548,10 @@ const char *tvm_emulator_send_external_message(void *tvm_emulator, const char *m json_obj("vm_exit_code", result.code); json_obj("accepted", td::JsonBool(result.accepted)); json_obj("vm_log", result.vm_log); - if (result.missing_library.is_null()) { + if (!result.missing_library) { json_obj("missing_library", td::JsonNull()); } else { - json_obj("missing_library", td::Bits256(result.missing_library).to_hex()); + json_obj("missing_library", result.missing_library.value().to_hex()); } if (result.actions.is_null()) { json_obj("actions", td::JsonNull()); @@ -581,10 +581,10 @@ const char *tvm_emulator_send_internal_message(void *tvm_emulator, const char *m json_obj("vm_exit_code", result.code); json_obj("accepted", td::JsonBool(result.accepted)); json_obj("vm_log", result.vm_log); - if (result.missing_library.is_null()) { + if (!result.missing_library) { json_obj("missing_library", td::JsonNull()); } else { - json_obj("missing_library", td::Bits256(result.missing_library).to_hex()); + json_obj("missing_library", result.missing_library.value().to_hex()); } if (result.actions.is_null()) { json_obj("actions", td::JsonNull()); diff --git a/storage/TorrentHeader.hpp b/storage/TorrentHeader.hpp index d8f8f7192..15b2d8b95 100644 --- a/storage/TorrentHeader.hpp +++ b/storage/TorrentHeader.hpp @@ -68,13 +68,23 @@ void TorrentHeader::parse(ParserT &parser) { parser.set_error("Unknown fec type"); return; } - name_index.resize(files_count); - for (auto &x : name_index) { + name_index.clear(); + for (size_t i = 0; i < files_count; ++i) { + td::uint64 x; parse(x, parser); + if (parser.get_error()) { + return; + } + name_index.push_back(x); } - data_index.resize(files_count); - for (auto &x : data_index) { + data_index.clear(); + for (size_t i = 0; i < files_count; ++i) { + td::uint64 x; parse(x, parser); + if (parser.get_error()) { + return; + } + data_index.push_back(x); } names = parser.template fetch_string_raw(tot_names_size); } diff --git a/tonlib/tonlib/TonlibClient.cpp b/tonlib/tonlib/TonlibClient.cpp index 816c68689..c571cf658 100644 --- a/tonlib/tonlib/TonlibClient.cpp +++ b/tonlib/tonlib/TonlibClient.cpp @@ -4552,12 +4552,12 @@ void TonlibClient::perform_smc_execution(td::Ref smc, ton::S } auto res_stack = R.move_as_ok(); - if (res.missing_library.not_null()) { - td::Bits256 hash = res.missing_library; + if (res.missing_library) { + td::Bits256 hash = res.missing_library.value(); LOG(DEBUG) << "Requesting missing library: " << hash.to_hex(); - std::vector req = {std::move(hash)}; + std::vector req = {hash}; client_.send_query(ton::lite_api::liteServer_getLibraries(std::move(req)), - [self = this, res = std::move(res), res_stack = std::move(res_stack), hash = std::move(hash), + [self = this, res = std::move(res), res_stack = std::move(res_stack), hash, smc = std::move(smc), args = std::move(args), promise = std::move(promise)] (td::Result> r_libraries) mutable { From f923b96a2f85ca3d9b8e96ff2623ec5089a17608 Mon Sep 17 00:00:00 2001 From: EmelyanenkoK Date: Fri, 14 Jul 2023 15:38:21 +0300 Subject: [PATCH 24/50] Add Tonlib emulator libs (#744) * Use global libraries in RunEmulator * Tonlib method smc.getLibrariesExt * Process missing transaction in getStateByTransaction --------- Co-authored-by: SpyCheese --- tl/generate/scheme/tonlib_api.tl | 5 + tl/generate/scheme/tonlib_api.tlo | Bin 32296 -> 32948 bytes tonlib/tonlib/TonlibClient.cpp | 196 +++++++++++++++++++++++------- tonlib/tonlib/TonlibClient.h | 8 ++ 4 files changed, 164 insertions(+), 45 deletions(-) diff --git a/tl/generate/scheme/tonlib_api.tl b/tl/generate/scheme/tonlib_api.tl index bcfc625dc..af08cbd78 100644 --- a/tl/generate/scheme/tonlib_api.tl +++ b/tl/generate/scheme/tonlib_api.tl @@ -184,6 +184,10 @@ smc.runResult gas_used:int53 stack:vector exit_code:int32 = smc. smc.libraryEntry hash:int256 data:bytes = smc.LibraryEntry; smc.libraryResult result:(vector smc.libraryEntry) = smc.LibraryResult; +smc.libraryQueryExt.one hash:int256 = smc.LibraryQueryExt; +smc.libraryQueryExt.scanBoc boc:bytes max_libs:int32 = smc.LibraryQueryExt; +smc.libraryResultExt dict_boc:bytes libs_ok:(vector int256) libs_not_found:(vector int256) = smc.LibraryResultExt; + updateSendLiteServerQuery id:int64 data:bytes = Update; updateSyncState sync_state:SyncState = Update; @@ -306,6 +310,7 @@ smc.getState id:int53 = tvm.Cell; smc.runGetMethod id:int53 method:smc.MethodId stack:vector = smc.RunResult; smc.getLibraries library_list:(vector int256) = smc.LibraryResult; +smc.getLibrariesExt list:(vector smc.LibraryQueryExt) = smc.LibraryResultExt; dns.resolve account_address:accountAddress name:string category:int256 ttl:int32 = dns.Resolved; diff --git a/tl/generate/scheme/tonlib_api.tlo b/tl/generate/scheme/tonlib_api.tlo index 023a4953e5fdbe655e9c6e28499ca757b344c5ce..6644d118ca6b8efa6a9ae2fd60439bea157bc17a 100644 GIT binary patch delta 431 zcmZ4ShjB|I6Yrzh`c@23ki3z1IiDn(U%_tS;@o6CpUkA9#G=Z;($u0#*NPIRi66x$ zZ{ahLEP8uyiwKf}pw!~hoD!gl$&O6I6B{@-KjAB3WbE47jvY27=zX&-Nkh;kVfipH;+YW*h JEY_%I1^`nToT2~# delta 61 zcmdne$h6`QBk!Zx`c@23khqa|Ip5?bd using lite_api_ptr = ton::lite_api::object_ptr; @@ -101,6 +102,11 @@ struct RemoteRunSmcMethodReturnType { // libs }; +struct ScanAndLoadGlobalLibs { + td::Ref root; + using ReturnType = vm::Dictionary; +}; + struct GetPrivateKey { KeyStorage::InputKey input_key; using ReturnType = KeyStorage::PrivateKey; @@ -1668,11 +1674,11 @@ class GetShardBlockProof : public td::actor::Actor { auto to_lite_api(const tonlib_api::ton_blockIdExt& blk) -> td::Result>; auto to_tonlib_api(const ton::lite_api::liteServer_transactionId& txid) -> tonlib_api_ptr; -class RunEmulator : public td::actor::Actor { +class RunEmulator : public TonlibQueryActor { public: RunEmulator(ExtClientRef ext_client_ref, int_api::GetAccountStateByTransaction request, - td::actor::ActorShared<> parent, td::Promise>&& promise) - : request_(std::move(request)), parent_(std::move(parent)), promise_(std::move(promise)) { + td::actor::ActorShared parent, td::Promise>&& promise) + : TonlibQueryActor(std::move(parent)), request_(std::move(request)), promise_(std::move(promise)) { client_.set_client(ext_client_ref); } @@ -1686,7 +1692,6 @@ class RunEmulator : public td::actor::Actor { ExtClient client_; int_api::GetAccountStateByTransaction request_; - td::actor::ActorShared<> parent_; td::Promise> promise_; std::map> actors_; @@ -1695,6 +1700,7 @@ class RunEmulator : public td::actor::Actor { FullBlockId block_id_; td::Ref mc_state_root_; // ^ShardStateUnsplit td::unique_ptr account_state_; + vm::Dictionary global_libraries_{256}; std::vector> transactions_; // std::vector<^Transaction> size_t count_{0}; @@ -1805,6 +1811,8 @@ class RunEmulator : public td::actor::Actor { if (bTxes->incomplete_) { self->check(self->get_transactions(last_lt)); + } else { + self->check(td::Status::Error("Transaction not found")); } }); return td::Status::OK(); @@ -1854,6 +1862,16 @@ class RunEmulator : public td::actor::Actor { check(account_state.move_as_error()); } else { account_state_ = account_state.move_as_ok(); + send_query(int_api::ScanAndLoadGlobalLibs{account_state_->get_raw_state()}, + [self = this](td::Result R) { self->set_global_libraries(std::move(R)); }); + } + } + + void set_global_libraries(td::Result R) { + if (R.is_error()) { + check(R.move_as_error()); + } else { + global_libraries_ = R.move_as_ok(); inc(); } } @@ -1887,13 +1905,6 @@ class RunEmulator : public td::actor::Actor { } std::unique_ptr config = r_config.move_as_ok(); - block::gen::ShardStateUnsplit::Record shard_state; - if (!tlb::unpack_cell(mc_state_root_, shard_state)) { - check(td::Status::Error("Failed to unpack masterchain state")); - return; - } - vm::Dictionary libraries(shard_state.r1.libraries->prefetch_ref(), 256); - auto r_shard_account = account_state_->to_shardAccountCellSlice(); if (r_shard_account.is_error()) { check(r_shard_account.move_as_error()); @@ -1915,6 +1926,7 @@ class RunEmulator : public td::actor::Actor { check(prev_blocks_info.move_as_error()); return; } + vm::Dictionary libraries = global_libraries_; emulator::TransactionEmulator trans_emulator(std::move(*config)); trans_emulator.set_prev_blocks_info(prev_blocks_info.move_as_ok()); trans_emulator.set_libs(std::move(libraries)); @@ -4376,8 +4388,8 @@ td::Result from_tonlib_api(tonlib_api::tvm_StackEntry& entry) { } void deep_library_search(std::set& set, std::set& visited, - vm::Dictionary& libs, td::Ref cell, int depth) { - if (depth <= 0 || set.size() >= 16 || visited.size() >= 256) { + vm::Dictionary& libs, td::Ref cell, int depth, size_t max_libs = 16) { + if (depth <= 0 || set.size() >= max_libs || visited.size() >= 256) { return; } auto ins = visited.insert(cell->get_hash()); @@ -4403,7 +4415,7 @@ void deep_library_search(std::set& set, std::set& v return; } for (unsigned int i=0; iget_refs_cnt(); i++) { - deep_library_search(set, visited, libs, loaded_cell.data_cell->get_ref(i), depth - 1); + deep_library_search(set, visited, libs, loaded_cell.data_cell->get_ref(i), depth - 1, max_libs); } } @@ -4459,6 +4471,72 @@ td::Status TonlibClient::do_request(const tonlib_api::smc_getLibraries& request, return td::Status::OK(); } +td::Status TonlibClient::do_request(const tonlib_api::smc_getLibrariesExt& request, + td::Promise>&& promise) { + std::set request_libs; + for (auto& x : request.list_) { + td::Status status = td::Status::OK(); + downcast_call(*x, td::overloaded([&](tonlib_api::smc_libraryQueryExt_one& one) { request_libs.insert(one.hash_); }, + [&](tonlib_api::smc_libraryQueryExt_scanBoc& scan) { + std::set visited; + vm::Dictionary empty{256}; + td::Result> r_cell = vm::std_boc_deserialize(scan.boc_); + if (r_cell.is_error()) { + status = r_cell.move_as_error(); + return; + } + size_t max_libs = scan.max_libs_ < 0 ? (1 << 30) : (size_t)scan.max_libs_; + std::set new_libs; + deep_library_search(new_libs, visited, empty, r_cell.move_as_ok(), 1024, + max_libs); + request_libs.insert(new_libs.begin(), new_libs.end()); + })); + TRY_STATUS(std::move(status)); + } + std::vector not_cached; + for (const td::Bits256& h : request_libs) { + if (libraries.lookup(h).is_null()) { + not_cached.push_back(h); + } + } + td::MultiPromise mp; + auto ig = mp.init_guard(); + LOG(DEBUG) << "Requesting " << not_cached.size() << " libraries"; + for (size_t i = 0; i < not_cached.size(); i += 16) { + size_t r = std::min(i + 16, not_cached.size()); + client_.send_query( + ton::lite_api::liteServer_getLibraries( + std::vector(not_cached.begin() + i, not_cached.begin() + r)), + [self = this, promise = ig.get_promise()]( + td::Result> r_libraries) mutable { + self->process_new_libraries(std::move(r_libraries)); + promise.set_result(td::Unit()); + }); + } + + ig.add_promise(promise.wrap([self = this, libs = std::move(request_libs)](td::Unit&&) { + vm::Dictionary dict{256}; + std::vector libs_ok, libs_not_found; + for (const auto& h : libs) { + auto lib = self->libraries.lookup_ref(h); + if (lib.is_null()) { + libs_not_found.push_back(h); + } else { + libs_ok.push_back(h); + dict.set_ref(h, lib); + } + } + td::BufferSlice dict_boc; + if (!dict.is_empty()) { + dict_boc = vm::std_boc_serialize(dict.get_root_cell()).move_as_ok(); + } + return ton::create_tl_object(dict_boc.as_slice().str(), std::move(libs_ok), + std::move(libs_not_found)); + })); + + return td::Status::OK(); +} + td::Status TonlibClient::do_request(const tonlib_api::smc_runGetMethod& request, td::Promise>&& promise) { auto it = smcs_.find(request.id_); @@ -4496,37 +4574,14 @@ td::Status TonlibClient::do_request(const tonlib_api::smc_runGetMethod& request, std::vector libraryList{librarySet.begin(), librarySet.end()}; if (libraryList.size() > 0) { LOG(DEBUG) << "Requesting found libraries in code (" << libraryList.size() << ")"; - self->client_.send_query(ton::lite_api::liteServer_getLibraries(std::move(libraryList)), - [self, smc = std::move(smc), args = std::move(args), promise = std::move(promise)] - (td::Result> r_libraries) mutable - { - if (r_libraries.is_error()) { - LOG(WARNING) << "cannot obtain found libraries: " << r_libraries.move_as_error().to_string(); - } else { - auto libraries = r_libraries.move_as_ok(); - bool updated = false; - for (auto& lr : libraries->result_) { - auto contents = vm::std_boc_deserialize(lr->data_); - if (contents.is_ok() && contents.ok().not_null()) { - if (contents.ok()->get_hash().bits().compare(lr->hash_.cbits(), 256)) { - LOG(WARNING) << "hash mismatch for library " << lr->hash_.to_hex(); - continue; - } - self->libraries.set_ref(lr->hash_, contents.move_as_ok()); - updated = true; - LOG(DEBUG) << "registered library " << lr->hash_.to_hex(); - } else { - LOG(WARNING) << "failed to deserialize library: " << lr->hash_.to_hex(); - } - } - if (updated) { - self->store_libs_to_disk(); - } - } - self->perform_smc_execution(std::move(smc), std::move(args), std::move(promise)); - }); - } - else { + self->client_.send_query( + ton::lite_api::liteServer_getLibraries(std::move(libraryList)), + [self, smc = std::move(smc), args = std::move(args), promise = std::move(promise)]( + td::Result> r_libraries) mutable { + self->process_new_libraries(std::move(r_libraries)); + self->perform_smc_execution(std::move(smc), std::move(args), std::move(promise)); + }); + } else { self->perform_smc_execution(std::move(smc), std::move(args), std::move(promise)); } } @@ -4537,6 +4592,33 @@ td::Status TonlibClient::do_request(const tonlib_api::smc_runGetMethod& request, return td::Status::OK(); } +void TonlibClient::process_new_libraries( + td::Result> r_libraries) { + if (r_libraries.is_error()) { + LOG(WARNING) << "cannot obtain found libraries: " << r_libraries.move_as_error().to_string(); + } else { + auto new_libraries = r_libraries.move_as_ok(); + bool updated = false; + for (auto& lr : new_libraries->result_) { + auto contents = vm::std_boc_deserialize(lr->data_); + if (contents.is_ok() && contents.ok().not_null()) { + if (contents.ok()->get_hash().bits().compare(lr->hash_.cbits(), 256)) { + LOG(WARNING) << "hash mismatch for library " << lr->hash_.to_hex(); + continue; + } + libraries.set_ref(lr->hash_, contents.move_as_ok()); + updated = true; + LOG(DEBUG) << "registered library " << lr->hash_.to_hex(); + } else { + LOG(WARNING) << "failed to deserialize library: " << lr->hash_.to_hex(); + } + } + if (updated) { + store_libs_to_disk(); + } + } +} + void TonlibClient::perform_smc_execution(td::Ref smc, ton::SmartContract::Args args, td::Promise>&& promise) { @@ -5622,6 +5704,30 @@ void TonlibClient::store_libs_to_disk() { // NB: Dictionary.get_root_cell does LOG(DEBUG) << "stored libraries to disk cache"; } +td::Status TonlibClient::do_request(const int_api::ScanAndLoadGlobalLibs& request, td::Promise promise) { + if (request.root.is_null()) { + promise.set_value(vm::Dictionary{256}); + return td::Status::OK(); + } + std::set to_load; + std::set visited; + deep_library_search(to_load, visited, libraries, request.root, 24); + if (to_load.empty()) { + promise.set_result(libraries); + return td::Status::OK(); + } + std::vector to_load_list(to_load.begin(), to_load.end()); + LOG(DEBUG) << "Requesting found libraries in account state (" << to_load_list.size() << ")"; + client_.send_query( + ton::lite_api::liteServer_getLibraries(std::move(to_load_list)), + [self = this, promise = std::move(promise)]( + td::Result> r_libraries) mutable { + self->process_new_libraries(std::move(r_libraries)); + promise.set_result(self->libraries); + }); + return td::Status::OK(); +} + template td::Status TonlibClient::do_request(const tonlib_api::runTests& request, P&&) { UNREACHABLE(); diff --git a/tonlib/tonlib/TonlibClient.h b/tonlib/tonlib/TonlibClient.h index ed81760ff..f4651b9d1 100644 --- a/tonlib/tonlib/TonlibClient.h +++ b/tonlib/tonlib/TonlibClient.h @@ -45,6 +45,7 @@ struct GetDnsResolver; struct SendMessage; struct RemoteRunSmcMethod; struct RemoteRunSmcMethodReturnType; +struct ScanAndLoadGlobalLibs; inline std::string to_string(const int_api::SendMessage&) { return "Send message"; @@ -330,6 +331,9 @@ class TonlibClient : public td::actor::Actor { td::Status do_request(const tonlib_api::smc_getLibraries& request, td::Promise>&& promise); + td::Status do_request(const tonlib_api::smc_getLibrariesExt& request, + td::Promise>&& promise); + td::Status do_request(const tonlib_api::dns_resolve& request, td::Promise>&& promise); @@ -341,6 +345,8 @@ class TonlibClient : public td::actor::Actor { td::Status do_request(tonlib_api::pchan_unpackPromise& request, td::Promise>&& promise); + void process_new_libraries( + td::Result> r_libraries); void perform_smc_execution(td::Ref smc, ton::SmartContract::Args args, td::Promise>&& promise); @@ -408,5 +414,7 @@ class TonlibClient : public td::actor::Actor { td::Status guess_revisions(std::vector targets, td::Promise>&& promise); + + td::Status do_request(const int_api::ScanAndLoadGlobalLibs& request, td::Promise promise); }; } // namespace tonlib From afb630bf41e58c896ea5446023698ae14168c544 Mon Sep 17 00:00:00 2001 From: EmelyanenkoK Date: Fri, 14 Jul 2023 15:39:03 +0300 Subject: [PATCH 25/50] --shutdown-at parameter for validator-engine (#745) Co-authored-by: SpyCheese --- validator-engine/validator-engine.cpp | 18 ++++++++++++++++++ validator-engine/validator-engine.hpp | 1 + 2 files changed, 19 insertions(+) diff --git a/validator-engine/validator-engine.cpp b/validator-engine/validator-engine.cpp index 65b93df71..aaa4f8496 100644 --- a/validator-engine/validator-engine.cpp +++ b/validator-engine/validator-engine.cpp @@ -71,6 +71,7 @@ #include "git.h" #include "block-auto.h" #include "block-parse.h" +#include "common/delay.h" Config::Config() { out_port = 3278; @@ -1174,6 +1175,18 @@ void ValidatorEngine::set_global_config(std::string str) { void ValidatorEngine::set_db_root(std::string db_root) { db_root_ = db_root; } +void ValidatorEngine::schedule_shutdown(double at) { + td::Timestamp ts = td::Timestamp::at_unix(at); + if (ts.is_in_past()) { + LOG(DEBUG) << "Scheduled shutdown is in past (" << at << ")"; + } else { + LOG(INFO) << "Schedule shutdown for " << at << " (in " << ts.in() << "s)"; + ton::delay_action([]() { + LOG(WARNING) << "Shutting down as scheduled"; + std::_Exit(0); + }, ts); + } +} void ValidatorEngine::start_up() { alarm_timestamp() = td::Timestamp::in(1.0 + td::Random::fast(0, 100) * 0.01); } @@ -3743,6 +3756,11 @@ int main(int argc, char *argv[]) { return td::Status::OK(); }); p.add_checked_option('u', "user", "change user", [&](td::Slice user) { return td::change_user(user.str()); }); + p.add_checked_option('\0', "shutdown-at", "stop validator at the given time (unix timestamp)", [&](td::Slice arg) { + TRY_RESULT(at, td::to_integer_safe(arg)); + acts.push_back([&x, at]() { td::actor::send_closure(x, &ValidatorEngine::schedule_shutdown, (double)at); }); + return td::Status::OK(); + }); auto S = p.run(argc, argv); if (S.is_error()) { LOG(ERROR) << "failed to parse options: " << S.move_as_error(); diff --git a/validator-engine/validator-engine.hpp b/validator-engine/validator-engine.hpp index e23674191..2d9663513 100644 --- a/validator-engine/validator-engine.hpp +++ b/validator-engine/validator-engine.hpp @@ -256,6 +256,7 @@ class ValidatorEngine : public td::actor::Actor { void add_key_to_set(ton::PublicKey key) { keys_[key.compute_short_id()] = key; } + void schedule_shutdown(double at); void start_up() override; ValidatorEngine() { } From 50d2361394e8fcd60827e919ec2f87112001d952 Mon Sep 17 00:00:00 2001 From: neodiX42 Date: Fri, 14 Jul 2023 15:27:59 +0200 Subject: [PATCH 26/50] On MacOS, writing more than 0x7fffffff bytes will fail with errno 22 (#737) --- validator/db/files-async.hpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/validator/db/files-async.hpp b/validator/db/files-async.hpp index 2da534bf2..bcb7fa8b7 100644 --- a/validator/db/files-async.hpp +++ b/validator/db/files-async.hpp @@ -82,10 +82,9 @@ class WriteFile : public td::actor::Actor { : tmp_dir_(tmp_dir), new_name_(new_name), promise_(std::move(promise)) { write_data_ = [data_ptr = std::make_shared(std::move(data))] (td::FileFd& fd) { auto data = std::move(*data_ptr); - td::uint64 offset = 0; while (data.size() > 0) { - TRY_RESULT(s, fd.pwrite(data.as_slice(), offset)); - offset += s; + auto piece_size = std::min(data.size(), 1 << 30); + TRY_RESULT(s, fd.write(data.as_slice().substr(0, piece_size))); data.confirm_read(s); } return td::Status::OK(); From 6074702d059fee2b9456e47c294693447ca222ef Mon Sep 17 00:00:00 2001 From: EmelyanenkoK Date: Mon, 17 Jul 2023 17:20:01 +0300 Subject: [PATCH 27/50] Fix extracting version from config in tonlib (#748) Co-authored-by: SpyCheese --- tonlib/tonlib/LastConfig.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tonlib/tonlib/LastConfig.cpp b/tonlib/tonlib/LastConfig.cpp index bcc3c0815..e972d84e0 100644 --- a/tonlib/tonlib/LastConfig.cpp +++ b/tonlib/tonlib/LastConfig.cpp @@ -93,7 +93,8 @@ td::Status LastConfig::process_config_proof(ton::ton_api::object_ptrstate_proof_.as_slice(), raw_config->config_proof_.as_slice())); - TRY_RESULT(config, block::ConfigInfo::extract_config(std::move(state), block::ConfigInfo::needPrevBlocks)); + TRY_RESULT(config, block::ConfigInfo::extract_config( + std::move(state), block::ConfigInfo::needPrevBlocks | block::ConfigInfo::needCapabilities)); for (auto i : params_) { VLOG(last_config) << "ConfigParam(" << i << ") = "; From 6e5145305694debad7a95a838cb7e6b4bba0f7e3 Mon Sep 17 00:00:00 2001 From: SpyCheese Date: Mon, 7 Aug 2023 19:48:33 +0300 Subject: [PATCH 28/50] Fix parsing dict of public libraries (#762) --- validator/impl/validate-query.cpp | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/validator/impl/validate-query.cpp b/validator/impl/validate-query.cpp index 419558979..4e4100f51 100644 --- a/validator/impl/validate-query.cpp +++ b/validator/impl/validate-query.cpp @@ -4796,27 +4796,27 @@ bool ValidateQuery::check_one_library_update(td::ConstBitPtr key, Ref old_publishers, new_publishers; if (new_value.not_null()) { - if (!block::gen::t_LibDescr.validate_csr(new_value)) { - return reject_query("LibDescr with key "s + key.to_hex(256) + - " in the libraries dictionary of the new state failed to pass automatic validity tests"); + block::gen::LibDescr::Record rec; + if (!block::gen::csr_unpack(std::move(new_value), rec)) { + return reject_query("failed to unpack LibDescr with key "s + key.to_hex(256) + + " in the libraries dictionary of the new state"); } - auto lib_ref = new_value->prefetch_ref(); - CHECK(lib_ref.not_null()); - if (lib_ref->get_hash().as_bitslice() != key) { + if (rec.lib->get_hash().as_bitslice() != key) { return reject_query("LibDescr with key "s + key.to_hex(256) + " in the libraries dictionary of the new state contains a library with different root hash " + - lib_ref->get_hash().to_hex()); + rec.lib->get_hash().to_hex()); } - CHECK(new_value.write().advance_ext(2, 1)); - new_publishers = std::make_unique(vm::DictNonEmpty(), std::move(new_value), 256); + new_publishers = std::make_unique(vm::DictNonEmpty(), std::move(rec.publishers), 256); } else { new_publishers = std::make_unique(256); } - if (old_value.not_null() && !block::gen::t_LibDescr.validate_csr(old_value)) { - return reject_query("LibDescr with key "s + key.to_hex(256) + - " in the libraries dictionary of the old state failed to pass automatic validity tests"); - CHECK(old_value.write().advance_ext(2, 1)); - old_publishers = std::make_unique(vm::DictNonEmpty(), std::move(old_value), 256); + if (old_value.not_null()) { + block::gen::LibDescr::Record rec; + if (!block::gen::csr_unpack(std::move(old_value), rec)) { + return reject_query("failed to unpack LibDescr with key "s + key.to_hex(256) + + " in the libraries dictionary of the old state"); + } + old_publishers = std::make_unique(vm::DictNonEmpty(), std::move(rec.publishers), 256); } else { old_publishers = std::make_unique(256); } From 41ed354b9fab9fa7d99a499b2a57eaeb635e32db Mon Sep 17 00:00:00 2001 From: SpyCheese Date: Thu, 12 Oct 2023 14:53:54 +0300 Subject: [PATCH 29/50] Explicitly handle special cells in action list (#777) --- crypto/block/transaction.cpp | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/crypto/block/transaction.cpp b/crypto/block/transaction.cpp index 92a5bfe2b..298cf4a0e 100644 --- a/crypto/block/transaction.cpp +++ b/crypto/block/transaction.cpp @@ -962,7 +962,12 @@ int output_actions_count(Ref list) { int i = -1; do { ++i; - list = load_cell_slice(std::move(list)).prefetch_ref(); + bool special = true; + auto cs = load_cell_slice_special(std::move(list), special); + if (special) { + break; + } + list = cs.prefetch_ref(); } while (list.not_null()); return i; } @@ -1148,7 +1153,8 @@ bool Transaction::prepare_compute_phase(const ComputePhaseConfig& cfg) { int out_act_num = output_actions_count(cp.actions); if (verbosity > 2) { std::cerr << "new smart contract data: "; - load_cell_slice(cp.new_data).print_rec(std::cerr); + bool can_be_special = true; + load_cell_slice_special(cp.new_data, can_be_special).print_rec(std::cerr); std::cerr << "output actions: "; block::gen::OutList{out_act_num}.print_ref(std::cerr, cp.actions); } @@ -1219,7 +1225,15 @@ bool Transaction::prepare_action_phase(const ActionPhaseConfig& cfg) { int n = 0; while (true) { ap.action_list.push_back(list); - auto cs = load_cell_slice(std::move(list)); + bool special = true; + auto cs = load_cell_slice_special(std::move(list), special); + if (special) { + ap.result_code = 32; // action list invalid + ap.result_arg = n; + ap.action_list_invalid = true; + LOG(DEBUG) << "action list invalid: special cell"; + return true; + } if (!cs.size_ext()) { break; } From cdf96a21d02bc9eabbaab9ccff84511692d86c2d Mon Sep 17 00:00:00 2001 From: SpyCheese Date: Thu, 12 Oct 2023 14:54:14 +0300 Subject: [PATCH 30/50] Do not retranslate external messages with wrong initstate (#778) --- crypto/block/transaction.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/crypto/block/transaction.cpp b/crypto/block/transaction.cpp index 298cf4a0e..0c77317fa 100644 --- a/crypto/block/transaction.cpp +++ b/crypto/block/transaction.cpp @@ -1084,6 +1084,11 @@ bool Transaction::prepare_compute_phase(const ComputePhaseConfig& cfg) { } else if (in_msg_state.not_null()) { unpack_msg_state(true); // use only libraries } + if (in_msg_extern && in_msg_state.not_null() && account.addr != in_msg_state->get_hash().bits()) { + LOG(DEBUG) << "in_msg_state hash mismatch in external message"; + cp.skip_reason = ComputePhase::sk_bad_state; + return true; + } // initialize VM Ref stack = prepare_vm_stack(cp); if (stack.is_null()) { From ddd3d44d5bbf643f8d1817ba52c6c4fa1f547f38 Mon Sep 17 00:00:00 2001 From: SpyCheese Date: Thu, 12 Oct 2023 14:54:38 +0300 Subject: [PATCH 31/50] Check peers prior to saving it to local db (#779) --- overlay/overlay.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/overlay/overlay.cpp b/overlay/overlay.cpp index a562beb61..fcf766fe2 100644 --- a/overlay/overlay.cpp +++ b/overlay/overlay.cpp @@ -291,7 +291,11 @@ void OverlayImpl::alarm() { if (peers_.size() > 0) { std::vector vec; for (td::uint32 i = 0; i < 20; i++) { - vec.push_back(get_random_peer()->get()); + auto P = get_random_peer(); + if (!P) { + break; + } + vec.push_back(P->get()); } td::actor::send_closure(manager_, &OverlayManager::save_to_db, local_id_, overlay_id_, std::move(vec)); } From b2a09eda17da7ba6700bd020ae7c6d92f634dca2 Mon Sep 17 00:00:00 2001 From: SpyCheese Date: Thu, 12 Oct 2023 14:55:26 +0300 Subject: [PATCH 32/50] Human-readable timestamps in explorer (#776) --- .../blockchain-explorer-http.cpp | 40 ++++++++++++++++--- 1 file changed, 35 insertions(+), 5 deletions(-) diff --git a/blockchain-explorer/blockchain-explorer-http.cpp b/blockchain-explorer/blockchain-explorer-http.cpp index 8642e9005..e2322ff76 100644 --- a/blockchain-explorer/blockchain-explorer-http.cpp +++ b/blockchain-explorer/blockchain-explorer-http.cpp @@ -35,9 +35,38 @@ #include "vm/cells/MerkleProof.h" #include "block/mc-config.h" #include "ton/ton-shard.h" +#include "td/utils/date.h" bool local_scripts{false}; +static std::string time_to_human(unsigned ts) { + td::StringBuilder sb; + sb << date::format("%F %T", + std::chrono::time_point{std::chrono::seconds(ts)}) + << ", "; + auto now = (unsigned)td::Clocks::system(); + bool past = now >= ts; + unsigned x = past ? now - ts : ts - now; + if (!past) { + sb << "in "; + } + if (x < 60) { + sb << x << "s"; + } else if (x < 3600) { + sb << x / 60 << "m " << x % 60 << "s"; + } else if (x < 3600 * 24) { + x /= 60; + sb << x / 60 << "h " << x % 60 << "m"; + } else { + x /= 3600; + sb << x / 24 << "d " << x % 24 << "h"; + } + if (past) { + sb << " ago"; + } + return sb.as_cslice().str(); +} + HttpAnswer& HttpAnswer::operator<<(AddressCell addr_c) { ton::WorkchainId wc; ton::StdSmcAddress addr; @@ -84,7 +113,7 @@ HttpAnswer& HttpAnswer::operator<<(MessageCell msg) { << "source" << AddressCell{info.src} << "\n" << "destinationNONE\n" << "lt" << info.created_lt << "\n" - << "time" << info.created_at << "\n"; + << "time" << info.created_at << " (" << time_to_human(info.created_at) << ")\n"; break; } case block::gen::CommonMsgInfo::int_msg_info: { @@ -103,7 +132,7 @@ HttpAnswer& HttpAnswer::operator<<(MessageCell msg) { << "source" << AddressCell{info.src} << "\n" << "destination" << AddressCell{info.dest} << "\n" << "lt" << info.created_lt << "\n" - << "time" << info.created_at << "\n" + << "time" << info.created_at << " (" << time_to_human(info.created_at) << ")\n" << "value" << value << "\n"; break; } @@ -277,7 +306,7 @@ HttpAnswer& HttpAnswer::operator<<(TransactionCell trans_c) { << "account" << trans_c.addr.rserialize(true) << "" << "hash" << trans_c.root->get_hash().to_hex() << "\n" << "lt" << trans.lt << "\n" - << "time" << trans.now << "\n" + << "time" << trans.now << " (" << time_to_human(trans.now) << ")\n" << "out messages"; vm::Dictionary dict{trans.r1.out_msgs, 15}; for (td::int32 i = 0; i < trans.outmsg_cnt; i++) { @@ -456,7 +485,7 @@ HttpAnswer& HttpAnswer::operator<<(BlockHeaderCell head_c) { << "block" << block_id.id.to_str() << "\n" << "roothash" << block_id.root_hash.to_hex() << "\n" << "filehash" << block_id.file_hash.to_hex() << "\n" - << "time" << info.gen_utime << "\n" + << "time" << info.gen_utime << " (" << time_to_human(info.gen_utime) << ")\n" << "lt" << info.start_lt << " .. " << info.end_lt << "\n" << "global_id" << blk.global_id << "\n" << "version" << info.version << "\n" @@ -543,7 +572,8 @@ HttpAnswer& HttpAnswer::operator<<(BlockShardsCell shards_c) { ton::ShardIdFull shard{id.workchain, id.shard}; if (ref.not_null()) { *this << "" << shard.to_str() << "top_block_id()} - << "\">" << ref->top_block_id().id.seqno << "" << ref->created_at() << "" + << "\">" << ref->top_block_id().id.seqno << "created_at()) << "\">" << ref->created_at() << "" << "" << ref->want_split_ << "" << "" << ref->want_merge_ << "" << "" << ref->before_split_ << "" From 7f815fc3bda2335e6ecfbeeecfbc40ab766e5b1f Mon Sep 17 00:00:00 2001 From: SpyCheese Date: Tue, 17 Oct 2023 15:19:58 +0300 Subject: [PATCH 33/50] Add "getconfig" to tonlib-cli (#780) --- tonlib/tonlib/tonlib-cli.cpp | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/tonlib/tonlib/tonlib-cli.cpp b/tonlib/tonlib/tonlib-cli.cpp index ba4765999..fee07496d 100644 --- a/tonlib/tonlib/tonlib-cli.cpp +++ b/tonlib/tonlib/tonlib-cli.cpp @@ -390,6 +390,7 @@ class TonlibCli : public td::actor::Actor { " with specified parameters\n"; td::TerminalIO::out() << "getstate \tget state of wallet with requested key\n"; td::TerminalIO::out() << "getstatebytransaction \tget state of wallet with requested key after transaction with local time and hash (base64url)\n"; + td::TerminalIO::out() << "getconfig \tshow specified configuration parameter from the latest masterchain state\n"; td::TerminalIO::out() << "guessrevision \tsearch of existing accounts corresponding to the given key\n"; td::TerminalIO::out() << "guessaccount \tsearch of existing accounts corresponding to the given key\n"; td::TerminalIO::out() << "getaddress \tget address of wallet with requested key\n"; @@ -492,6 +493,8 @@ class TonlibCli : public td::actor::Actor { get_state(parser.read_word(), std::move(cmd_promise)); } else if (cmd == "getstatebytransaction") { get_state_by_transaction(parser, std::move(cmd_promise)); + } else if (cmd == "getconfig") { + get_config_param(parser, std::move(cmd_promise)); } else if (cmd == "getaddress") { get_address(parser.read_word(), std::move(cmd_promise)); } else if (cmd == "importkeypem") { @@ -2094,6 +2097,26 @@ class TonlibCli : public td::actor::Actor { })); } + void get_config_param(td::ConstParser& parser, td::Promise promise) { + TRY_RESULT_PROMISE(promise, param, td::to_integer_safe(parser.read_word())); + send_query(make_object(0, param), + promise.wrap([param](auto&& result) -> td::Result { + TRY_RESULT(cell, vm::std_boc_deserialize(result->config_->bytes_, true)); + if (cell.is_null()) { + td::TerminalIO::out() << "ConfigParam(" << param << ") = (null)\n"; + return td::Unit(); + } + std::ostringstream os; + if (param >= 0) { + block::gen::ConfigParam{param}.print_ref(4096, os, cell); + os << "\n"; + } + vm::load_cell_slice(cell).print_rec(4096, os); + td::TerminalIO::out() << "ConfigParam(" << param << ") = " << os.str() << "\n"; + return td::Unit(); + })); + } + void get_address(td::Slice key, td::Promise promise) { TRY_RESULT_PROMISE(promise, address, to_account_address(key, false)); promise.set_value(td::Unit()); From 2bfa6240dd5bf156e4756623c6e079000f3e53b8 Mon Sep 17 00:00:00 2001 From: SpyCheese Date: Wed, 25 Oct 2023 12:20:23 +0300 Subject: [PATCH 34/50] Support wallet-v4 in tonlib (#785) --- crypto/CMakeLists.txt | 2 + crypto/smc-envelope/GenericAccount.cpp | 2 +- crypto/smc-envelope/SmartContractCode.cpp | 23 ++++++- crypto/smc-envelope/SmartContractCode.h | 11 +++- crypto/smc-envelope/WalletV4.cpp | 71 +++++++++++++++++++++ crypto/smc-envelope/WalletV4.h | 46 ++++++++++++++ crypto/test/test-smartcont.cpp | 2 + tl/generate/scheme/tonlib_api.tl | 2 + tl/generate/scheme/tonlib_api.tlo | Bin 32948 -> 33224 bytes tonlib/tonlib/TonlibClient.cpp | 73 +++++++++++++++++++++- 10 files changed, 226 insertions(+), 6 deletions(-) create mode 100644 crypto/smc-envelope/WalletV4.cpp create mode 100644 crypto/smc-envelope/WalletV4.h diff --git a/crypto/CMakeLists.txt b/crypto/CMakeLists.txt index 13e4c5bd0..9f7a0a5a7 100644 --- a/crypto/CMakeLists.txt +++ b/crypto/CMakeLists.txt @@ -236,6 +236,7 @@ set(SMC_ENVELOPE_SOURCE smc-envelope/SmartContractCode.cpp smc-envelope/WalletInterface.cpp smc-envelope/WalletV3.cpp + smc-envelope/WalletV4.cpp smc-envelope/GenericAccount.h smc-envelope/HighloadWallet.h @@ -246,6 +247,7 @@ set(SMC_ENVELOPE_SOURCE smc-envelope/SmartContractCode.h smc-envelope/WalletInterface.h smc-envelope/WalletV3.h + smc-envelope/WalletV4.h ) set(ED25519_TEST_SOURCE diff --git a/crypto/smc-envelope/GenericAccount.cpp b/crypto/smc-envelope/GenericAccount.cpp index 4cd6bf3f1..04249699c 100644 --- a/crypto/smc-envelope/GenericAccount.cpp +++ b/crypto/smc-envelope/GenericAccount.cpp @@ -155,7 +155,7 @@ td::Result GenericAccount::get_wallet_id(const SmartContract& sc) { return TRY_VM([&]() -> td::Result { auto answer = sc.run_get_method("wallet_id"); if (!answer.success) { - return td::Status::Error("seqno get method failed"); + return td::Status::Error("wallet_id get method failed"); } return static_cast(answer.stack.write().pop_long_range(std::numeric_limits::max())); }()); diff --git a/crypto/smc-envelope/SmartContractCode.cpp b/crypto/smc-envelope/SmartContractCode.cpp index d10c4b5c8..585450f61 100644 --- a/crypto/smc-envelope/SmartContractCode.cpp +++ b/crypto/smc-envelope/SmartContractCode.cpp @@ -28,6 +28,7 @@ namespace { // WALLET_REVISION = 2; // WALLET2_REVISION = 2; // WALLET3_REVISION = 2; +// WALLET4_REVISION = 2; // HIGHLOAD_WALLET_REVISION = 2; // HIGHLOAD_WALLET2_REVISION = 2; // DNS_REVISION = 1; @@ -92,6 +93,20 @@ const auto& get_map() { "AAXrc52omhpn5jrhf/AABesePaiaGmPmOuFj8ABDbbYHwR7Z5AOAQm1B1tnkA4BTu1E0IEBQNch0x/" "0BNEC2zz4J28QAoAg9HtvpTGX+gAwoXC2CZEw4g8AOiGOETGA8/gzIG6SMHCU0NcLH+IB3yGSAaGSW3/iAAzTB9QC+wAAHssfFMsfEsv/yx/" "0AMntVA=="); + with_tvm_code( + "wallet-v4-r2", + "te6cckECFAEAAtQAART/APSkE/S88sgLAQIBIAIDAgFIBAUE+PKDCNcYINMf0x/THwL4I7vyZO1E0NMf0x/T//" + "QE0VFDuvKhUVG68qIF+QFUEGT5EPKj+AAkpMjLH1JAyx9SMMv/" + "UhD0AMntVPgPAdMHIcAAn2xRkyDXSpbTB9QC+wDoMOAhwAHjACHAAuMAAcADkTDjDQOkyMsfEssfy/" + "8QERITAubQAdDTAyFxsJJfBOAi10nBIJJfBOAC0x8hghBwbHVnvSKCEGRzdHK9sJJfBeAD+kAwIPpEAcjKB8v/" + "ydDtRNCBAUDXIfQEMFyBAQj0Cm+hMbOSXwfgBdM/" + "yCWCEHBsdWe6kjgw4w0DghBkc3RyupJfBuMNBgcCASAICQB4AfoA9AQw+CdvIjBQCqEhvvLgUIIQcGx1Z4MesXCAGFAEywUmzxZY+" + "gIZ9ADLaRfLH1Jgyz8gyYBA+wAGAIpQBIEBCPRZMO1E0IEBQNcgyAHPFvQAye1UAXKwjiOCEGRzdHKDHrFwgBhQBcsFUAPPFiP6AhPLassfyz/" + "JgED7AJJfA+ICASAKCwBZvSQrb2omhAgKBrkPoCGEcNQICEekk30pkQzmkD6f+YN4EoAbeBAUiYcVnzGEAgFYDA0AEbjJftRNDXCx+" + "AA9sp37UTQgQFA1yH0BDACyMoHy//J0AGBAQj0Cm+hMYAIBIA4PABmtznaiaEAga5Drhf/AABmvHfaiaEAQa5DrhY/AAG7SB/" + "oA1NQi+QAFyMoHFcv/ydB3dIAYyMsFywIizxZQBfoCFMtrEszMyXP7AMhAFIEBCPRR8qcCAHCBAQjXGPoA0z/" + "IVCBHgQEI9FHyp4IQbm90ZXB0gBjIywXLAlAGzxZQBPoCFMtqEssfyz/Jc/sAAgBsgQEI1xj6ANM/" + "MFIkgQEI9Fnyp4IQZHN0cnB0gBjIywXLAlAFzxZQA/oCE8tqyx8Syz/Jc/sAAAr0AMntVGliJeU="); return map; }(); return map; @@ -137,9 +152,12 @@ td::Span SmartContractCode::get_revisions(Type type) { static int res[] = {1}; return res; } + case Type::WalletV4: { + static int res[] = {2}; + return res; + } } UNREACHABLE(); - return {}; } td::Result SmartContractCode::validate_revision(Type type, int revision) { @@ -179,9 +197,10 @@ td::Ref SmartContractCode::get_code(Type type, int ext_revision) { return "payment-channel"; case Type::RestrictedWallet: return "restricted-wallet3"; + case Type::WalletV4: + return "wallet-v4"; } UNREACHABLE(); - return ""; }(type); if (revision == -1) { return load(basename).move_as_ok(); diff --git a/crypto/smc-envelope/SmartContractCode.h b/crypto/smc-envelope/SmartContractCode.h index 85be35318..be50d2a15 100644 --- a/crypto/smc-envelope/SmartContractCode.h +++ b/crypto/smc-envelope/SmartContractCode.h @@ -26,7 +26,16 @@ class SmartContractCode { public: static td::Result> load(td::Slice name); - enum Type { WalletV3 = 4, HighloadWalletV1, HighloadWalletV2, ManualDns, Multisig, PaymentChannel, RestrictedWallet }; + enum Type { + WalletV3 = 4, + HighloadWalletV1, + HighloadWalletV2, + ManualDns, + Multisig, + PaymentChannel, + RestrictedWallet, + WalletV4 + }; static td::Span get_revisions(Type type); static td::Result validate_revision(Type type, int revision); static td::Ref get_code(Type type, int revision = 0); diff --git a/crypto/smc-envelope/WalletV4.cpp b/crypto/smc-envelope/WalletV4.cpp new file mode 100644 index 000000000..738fa9c75 --- /dev/null +++ b/crypto/smc-envelope/WalletV4.cpp @@ -0,0 +1,71 @@ +/* + This file is part of TON Blockchain Library. + + TON Blockchain Library is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version. + + TON Blockchain Library 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 Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with TON Blockchain Library. If not, see . +*/ +#include "WalletV4.h" +#include "GenericAccount.h" +#include "SmartContractCode.h" + +#include "vm/boc.h" +#include "vm/cells/CellString.h" +#include "td/utils/base64.h" + +#include + +namespace ton { +td::Result> WalletV4::make_a_gift_message(const td::Ed25519::PrivateKey& private_key, + td::uint32 valid_until, td::Span gifts) const { + CHECK(gifts.size() <= get_max_gifts_size()); + TRY_RESULT(seqno, get_seqno()); + TRY_RESULT(wallet_id, get_wallet_id()); + vm::CellBuilder cb; + cb.store_long(wallet_id, 32).store_long(valid_until, 32).store_long(seqno, 32); + cb.store_long(0, 8); // The only difference with wallet-v3 + + for (auto& gift : gifts) { + td::int32 send_mode = 3; + if (gift.gramms == -1) { + send_mode += 128; + } + if (gift.send_mode > -1) { + send_mode = gift.send_mode; + } + cb.store_long(send_mode, 8).store_ref(create_int_message(gift)); + } + + auto message_outer = cb.finalize(); + auto signature = private_key.sign(message_outer->get_hash().as_slice()).move_as_ok(); + return vm::CellBuilder().store_bytes(signature).append_cellslice(vm::load_cell_slice(message_outer)).finalize(); +} + +td::Ref WalletV4::get_init_data(const InitData& init_data) noexcept { + return vm::CellBuilder() + .store_long(init_data.seqno, 32) + .store_long(init_data.wallet_id, 32) + .store_bytes(init_data.public_key) + .store_zeroes(1) // plugins dict + .finalize(); +} + +td::Result WalletV4::get_wallet_id() const { + return TRY_VM([&]() -> td::Result { + auto answer = run_get_method("get_subwallet_id"); + if (!answer.success) { + return td::Status::Error("get_subwallet_id get method failed"); + } + return static_cast(answer.stack.write().pop_long_range(std::numeric_limits::max())); + }()); +} +} // namespace ton diff --git a/crypto/smc-envelope/WalletV4.h b/crypto/smc-envelope/WalletV4.h new file mode 100644 index 000000000..721e81039 --- /dev/null +++ b/crypto/smc-envelope/WalletV4.h @@ -0,0 +1,46 @@ +/* + This file is part of TON Blockchain Library. + + TON Blockchain Library is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version. + + TON Blockchain Library 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 Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with TON Blockchain Library. If not, see . +*/ +#pragma once + +#include "smc-envelope/SmartContract.h" +#include "smc-envelope/WalletInterface.h" +#include "vm/cells.h" +#include "Ed25519.h" +#include "block/block.h" +#include "vm/cells/CellString.h" + +namespace ton { + +struct WalletV4Traits { + using InitData = WalletInterface::DefaultInitData; + + static constexpr unsigned max_message_size = vm::CellString::max_bytes; + static constexpr unsigned max_gifts_size = 4; + static constexpr auto code_type = SmartContractCode::WalletV4; +}; + +class WalletV4 : public WalletBase { + public: + explicit WalletV4(State state) : WalletBase(std::move(state)) { + } + td::Result> make_a_gift_message(const td::Ed25519::PrivateKey& private_key, td::uint32 valid_until, + td::Span gifts) const override; + static td::Ref get_init_data(const InitData& init_data) noexcept; + + td::Result get_wallet_id() const override; +}; +} // namespace ton \ No newline at end of file diff --git a/crypto/test/test-smartcont.cpp b/crypto/test/test-smartcont.cpp index 673bb7586..d3f188132 100644 --- a/crypto/test/test-smartcont.cpp +++ b/crypto/test/test-smartcont.cpp @@ -35,6 +35,7 @@ #include "smc-envelope/SmartContract.h" #include "smc-envelope/SmartContractCode.h" #include "smc-envelope/WalletV3.h" +#include "smc-envelope/WalletV4.h" #include "smc-envelope/HighloadWallet.h" #include "smc-envelope/HighloadWalletV2.h" #include "smc-envelope/PaymentChannel.h" @@ -526,6 +527,7 @@ void do_test_wallet() { TEST(Tonlib, Wallet) { do_test_wallet(); + do_test_wallet(); do_test_wallet(); do_test_wallet(); do_test_wallet(); diff --git a/tl/generate/scheme/tonlib_api.tl b/tl/generate/scheme/tonlib_api.tl index af08cbd78..a6172376a 100644 --- a/tl/generate/scheme/tonlib_api.tl +++ b/tl/generate/scheme/tonlib_api.tl @@ -61,6 +61,7 @@ pchan.config alice_public_key:string alice_address:accountAddress bob_public_key raw.initialAccountState code:bytes data:bytes = InitialAccountState; wallet.v3.initialAccountState public_key:string wallet_id:int64 = InitialAccountState; +wallet.v4.initialAccountState public_key:string wallet_id:int64 = InitialAccountState; wallet.highload.v1.initialAccountState public_key:string wallet_id:int64 = InitialAccountState; wallet.highload.v2.initialAccountState public_key:string wallet_id:int64 = InitialAccountState; @@ -73,6 +74,7 @@ pchan.initialAccountState config:pchan.config = InitialAccountState; raw.accountState code:bytes data:bytes frozen_hash:bytes = AccountState; wallet.v3.accountState wallet_id:int64 seqno:int32 = AccountState; +wallet.v4.accountState wallet_id:int64 seqno:int32 = AccountState; wallet.highload.v1.accountState wallet_id:int64 seqno:int32 = AccountState; wallet.highload.v2.accountState wallet_id:int64 = AccountState; dns.accountState wallet_id:int64 = AccountState; diff --git a/tl/generate/scheme/tonlib_api.tlo b/tl/generate/scheme/tonlib_api.tlo index 6644d118ca6b8efa6a9ae2fd60439bea157bc17a..7657852eabd565bb5432eb13eeae0c48166cd309 100644 GIT binary patch delta 512 zcmdne$aJEaX~GWC@Xfm~@Hi$X=a=S{1eYY1q%trta8CRvzVXQ#CP}B6Ck_aE=4F;- zCgvck;Q%Vwe1Q26595T*dj;YdSwN;tRuC$IFlGp8Ko|kSAqF5RpqXHBRgNpBY`WeR zvGT;6oYWG%G84T-WUIl(05w5$%Lp65je#&$z(no{n?OWFL{uOQxJZcz)ba%)3m{T1 zqEIzCqEH7u5rwJ|5QCVr*+Z;{1ETtd+yoYozbEI&2S6AHWIkQCH63?T0u zJ@oQ|EW$gPn1RK>05%S&8DdI+f(6_-2;&8YNQ0sdL~4U#1B79sq=BYuj}lbP8zqSQ oHY+HFZX0t+43JXMajJ(d|0#TODJJLK@SwSvin7lU4e6vkXk0=0WdV=5p diff --git a/tonlib/tonlib/TonlibClient.cpp b/tonlib/tonlib/TonlibClient.cpp index 74b427dbc..521f961ab 100644 --- a/tonlib/tonlib/TonlibClient.cpp +++ b/tonlib/tonlib/TonlibClient.cpp @@ -31,6 +31,7 @@ #include "smc-envelope/GenericAccount.h" #include "smc-envelope/ManualDns.h" #include "smc-envelope/WalletV3.h" +#include "smc-envelope/WalletV4.h" #include "smc-envelope/HighloadWallet.h" #include "smc-envelope/HighloadWalletV2.h" #include "smc-envelope/PaymentChannel.h" @@ -228,6 +229,14 @@ td::Result to_init_data(const tonlib_api::wallet_v3_ini return std::move(init_data); } +td::Result to_init_data(const tonlib_api::wallet_v4_initialAccountState& wallet_state) { + TRY_RESULT(key_bytes, get_public_key(wallet_state.public_key_)); + ton::WalletV4::InitData init_data; + init_data.public_key = td::SecureString(key_bytes.key); + init_data.wallet_id = static_cast(wallet_state.wallet_id_); + return std::move(init_data); +} + td::Result to_init_data(const tonlib_api::rwallet_initialAccountState& rwallet_state) { TRY_RESULT(init_key_bytes, get_public_key(rwallet_state.init_public_key_)); TRY_RESULT(key_bytes, get_public_key(rwallet_state.public_key_)); @@ -319,6 +328,16 @@ class AccountState { return tonlib_api::make_object(static_cast(wallet_id), static_cast(seqno)); } + td::Result> to_wallet_v4_accountState() const { + if (wallet_type_ != WalletV4) { + return TonlibError::AccountTypeUnexpected("WalletV4"); + } + auto wallet = ton::WalletV4(get_smc_state()); + TRY_RESULT(seqno, wallet.get_seqno()); + TRY_RESULT(wallet_id, wallet.get_wallet_id()); + return tonlib_api::make_object(static_cast(wallet_id), + static_cast(seqno)); + } td::Result> to_wallet_highload_v1_accountState() const { if (wallet_type_ != HighloadWalletV1) { @@ -420,6 +439,8 @@ class AccountState { return f(to_dns_accountState()); case PaymentChannel: return f(to_payment_channel_accountState()); + case WalletV4: + return f(to_wallet_v4_accountState()); } UNREACHABLE(); } @@ -458,7 +479,8 @@ class AccountState { HighloadWalletV2, ManualDns, PaymentChannel, - RestrictedWallet + RestrictedWallet, + WalletV4 }; WalletType get_wallet_type() const { return wallet_type_; @@ -477,6 +499,7 @@ class AccountState { case AccountState::HighloadWalletV1: case AccountState::HighloadWalletV2: case AccountState::RestrictedWallet: + case AccountState::WalletV4: return true; } UNREACHABLE(); @@ -497,6 +520,8 @@ class AccountState { return td::make_unique(get_smc_state()); case AccountState::RestrictedWallet: return td::make_unique(get_smc_state()); + case AccountState::WalletV4: + return td::make_unique(get_smc_state()); } UNREACHABLE(); return {}; @@ -554,6 +579,23 @@ class AccountState { break; } }, + [&](tonlib_api::wallet_v4_initialAccountState& v4wallet) { + for (auto revision : ton::SmartContractCode::get_revisions(ton::SmartContractCode::WalletV4)) { + auto init_data = to_init_data(v4wallet); + if (init_data.is_error()) { + continue; + } + auto wallet = ton::WalletV4::create(init_data.move_as_ok(), revision); + if (!(wallet->get_address(ton::masterchainId) == address_ || + wallet->get_address(ton::basechainId) == address_)) { + continue; + } + wallet_type_ = WalletType::WalletV4; + wallet_revision_ = revision; + set_new_state(wallet->get_state()); + break; + } + }, [&](tonlib_api::rwallet_initialAccountState& rwallet) { for (auto revision : ton::SmartContractCode::get_revisions(ton::SmartContractCode::RestrictedWallet)) { auto r_init_data = to_init_data(rwallet); @@ -597,7 +639,7 @@ class AccountState { return wallet_type_; } auto wallet_id = static_cast(address_.workchain + wallet_id_); - ton::WalletV3::InitData init_data{key.as_octet_string(), wallet_id}; + ton::WalletInterface::DefaultInitData init_data{key.as_octet_string(), wallet_id}; auto o_revision = ton::WalletV3::guess_revision(address_, init_data); if (o_revision) { wallet_type_ = WalletType::WalletV3; @@ -605,6 +647,13 @@ class AccountState { set_new_state(ton::WalletV3::get_init_state(wallet_revision_, init_data)); return wallet_type_; } + o_revision = ton::WalletV4::guess_revision(address_, init_data); + if (o_revision) { + wallet_type_ = WalletType::WalletV4; + wallet_revision_ = o_revision.value(); + set_new_state(ton::WalletV4::get_init_state(wallet_revision_, init_data)); + return wallet_type_; + } o_revision = ton::HighloadWalletV2::guess_revision(address_, init_data); if (o_revision) { wallet_type_ = WalletType::HighloadWalletV2; @@ -682,6 +731,12 @@ class AccountState { wallet_revision_ = o_revision.value(); return wallet_type_; } + o_revision = ton::WalletV4::guess_revision(code_hash); + if (o_revision) { + wallet_type_ = WalletType::WalletV4; + wallet_revision_ = o_revision.value(); + return wallet_type_; + } o_revision = ton::HighloadWalletV2::guess_revision(code_hash); if (o_revision) { wallet_type_ = WalletType::HighloadWalletV2; @@ -2256,6 +2311,13 @@ td::Result get_account_address(const tonlib_api::wallet_v3_in ->get_address(workchain_id); } +td::Result get_account_address(const tonlib_api::wallet_v4_initialAccountState& test_wallet_state, + td::int32 revision, ton::WorkchainId workchain_id) { + TRY_RESULT(key_bytes, get_public_key(test_wallet_state.public_key_)); + return ton::WalletV4::create({key_bytes.key, static_cast(test_wallet_state.wallet_id_)}, revision) + ->get_address(workchain_id); +} + td::Result get_account_address( const tonlib_api::wallet_highload_v1_initialAccountState& test_wallet_state, td::int32 revision, ton::WorkchainId workchain_id) { @@ -2303,6 +2365,7 @@ static td::optional get_wallet_type(tonlib_api::In td::overloaded( [](const tonlib_api::raw_initialAccountState&) { return td::optional(); }, [](const tonlib_api::wallet_v3_initialAccountState&) { return ton::SmartContractCode::WalletV3; }, + [](const tonlib_api::wallet_v4_initialAccountState&) { return ton::SmartContractCode::WalletV4; }, [](const tonlib_api::wallet_highload_v1_initialAccountState&) { return ton::SmartContractCode::HighloadWalletV1; }, @@ -2392,6 +2455,12 @@ td::Status TonlibClient::do_request(tonlib_api::guessAccount& request, sources.push_back(Source{tonlib_api::make_object( request.public_key_, wallet_id_ + ton::basechainId), ton::basechainId}); + sources.push_back(Source{tonlib_api::make_object( + request.public_key_, wallet_id_ + ton::masterchainId), + ton::masterchainId}); + sources.push_back(Source{tonlib_api::make_object( + request.public_key_, wallet_id_ + ton::basechainId), + ton::basechainId}); for (Source& source : sources) { auto o_type = get_wallet_type(*source.init_state); if (!o_type) { From 6a0d14f8edce6cd631f353de0b6389f128dcea8b Mon Sep 17 00:00:00 2001 From: Marat <98183742+dungeon-master-666@users.noreply.github.com> Date: Thu, 26 Oct 2023 14:25:37 +0200 Subject: [PATCH 35/50] [tonlib] Handle special cell in msg body (#789) --- tonlib/tonlib/TonlibClient.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tonlib/tonlib/TonlibClient.cpp b/tonlib/tonlib/TonlibClient.cpp index 521f961ab..0eabe142d 100644 --- a/tonlib/tonlib/TonlibClient.cpp +++ b/tonlib/tonlib/TonlibClient.cpp @@ -2974,7 +2974,7 @@ struct ToRawTransactions { if (type == 0 || type == 0x2167da4b) { td::Status status; - auto r_body_message = vm::CellString::load(body.write()); + auto r_body_message = TRY_VM(vm::CellString::load(body.write())); LOG_IF(WARNING, r_body_message.is_error()) << "Failed to parse a message: " << r_body_message.error(); if (r_body_message.is_ok()) { From 06e22bdb2e1750f1b98aa9cab1b73e6604997cdd Mon Sep 17 00:00:00 2001 From: EmelyanenkoK Date: Sat, 28 Oct 2023 19:05:00 +0300 Subject: [PATCH 36/50] Add "showtransactions" to tonlib-cli (#790) Co-authored-by: SpyCheese --- tonlib/tonlib/tonlib-cli.cpp | 43 ++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/tonlib/tonlib/tonlib-cli.cpp b/tonlib/tonlib/tonlib-cli.cpp index fee07496d..1107a5d04 100644 --- a/tonlib/tonlib/tonlib-cli.cpp +++ b/tonlib/tonlib/tonlib-cli.cpp @@ -423,6 +423,8 @@ class TonlibCli : public td::actor::Actor { td::TerminalIO::out() << "exportkeypem [] - export key\n"; td::TerminalIO::out() << "gethistory - get history fo simple wallet with requested key (last 10 transactions)\n"; + td::TerminalIO::out() << "showtransactions [] - show transaction on account " + "with given and (in base64) and previous transactions (up to ).\n"; td::TerminalIO::out() << "init - init simple wallet with requested key\n"; td::TerminalIO::out() << "transfer[f][F][e][k][c] ( |) - " "make transfer from \n" @@ -520,6 +522,8 @@ class TonlibCli : public td::actor::Actor { } else if (cmd == "getmasterchainsignatures") { auto seqno = parser.read_word(); run_get_masterchain_block_signatures(seqno, std::move(cmd_promise)); + } else if (cmd == "showtransactions") { + run_show_transactions(parser, std::move(cmd_promise)); } else { cmd_promise.set_error(td::Status::Error(PSLICE() << "Unkwnown query `" << cmd << "`")); } @@ -2162,6 +2166,45 @@ class TonlibCli : public td::actor::Actor { })); } + void run_show_transactions(td::ConstParser& parser, td::Promise promise) { + TRY_RESULT_PROMISE(promise, address, to_account_address(parser.read_word(), false)); + TRY_RESULT_PROMISE(promise, lt, td::to_integer_safe(parser.read_word())); + TRY_RESULT_PROMISE(promise, hash, td::base64_decode(parser.read_word())); + int count = 1; + if (!parser.empty()) { + TRY_RESULT_PROMISE_ASSIGN(promise, count, td::to_integer_safe(parser.read_word())); + } + auto id = make_object(lt, hash); + send_query(make_object( + nullptr, ton::move_tl_object_as(std::move(address.address)), + std::move(id), count, false), + promise.wrap([](ton::tl_object_ptr&& result) -> td::Result { + td::TerminalIO::out() << "Found " << result->transactions_.size() << " transactions\n"; + for (size_t i = 0; i < result->transactions_.size(); ++i) { + td::TerminalIO::out() << "Transaction #" << i << "\n"; + auto& tr = result->transactions_[i]; + TRY_RESULT(root, vm::std_boc_deserialize(tr->data_)); + block::gen::Transaction::Record trans; + if (!tlb::unpack_cell(root, trans)) { + return td::Status::Error("cannot unpack transaction"); + } + td::TerminalIO::out() << "Transaction Account: " << tr->address_->account_address_ << "\n"; + td::TerminalIO::out() << "Transaction LT: " << tr->transaction_id_->lt_ << "\n"; + td::TerminalIO::out() << "Transaction Hash: " << td::base64_encode(tr->transaction_id_->hash_) + << "\n"; + td::TerminalIO::out() << "Transaction Timestamp: " << tr->utime_ << "\n"; + td::TerminalIO::out() << "Transaction Out messages: " << tr->out_msgs_.size() << "\n"; + td::TerminalIO::out() << "Previous transaction LT: " << trans.prev_trans_lt << "\n"; + td::TerminalIO::out() << "Previous transaction Hash: " + << td::base64_encode(trans.prev_trans_hash.as_slice()) << "\n"; + std::ostringstream ss; + block::gen::t_Transaction.print_ref(2048, ss, root); + td::TerminalIO::out() << "Transaction dump: " << ss.str() << "\n"; + } + return td::Unit(); + })); + } + void get_history2(td::Slice key, td::Result> r_state, td::Promise promise) { TRY_RESULT_PROMISE(promise, state, std::move(r_state)); From 89700cb2aa96cf5561f5aa028e46f928cf90ec38 Mon Sep 17 00:00:00 2001 From: neodiX42 Date: Mon, 30 Oct 2023 09:52:00 +0100 Subject: [PATCH 37/50] CI: fix macOS and tonlib Android GitHub actions in testnet (#786) * fix macOS github actions * fix android tonlib GH action; * fixing wasm GH action * strip binaries * fix randomly failing ubuntu and wasm GH actions * fix randomly failing ubuntu and wasm GH actions * revert some changes --- .github/script/fift-func-wasm-build-ubuntu.sh | 33 ++++++++++++++++--- .github/workflows/macos-11.7-compile.yml | 27 +++++++++++++-- .github/workflows/macos-12.6-compile.yml | 27 ++++++++++++--- .github/workflows/ton-wasm-emscripten.yml | 8 ++++- .github/workflows/tonlib-android-jni.yml | 6 ++-- .github/workflows/ubuntu-22.04-compile.yml | 8 +++-- .github/workflows/ubuntu-compile.yml | 6 +++- .github/workflows/win-2019-compile.yml | 2 +- example/android/build.sh | 4 +-- 9 files changed, 99 insertions(+), 22 deletions(-) diff --git a/.github/script/fift-func-wasm-build-ubuntu.sh b/.github/script/fift-func-wasm-build-ubuntu.sh index 95de71f95..259377ccb 100755 --- a/.github/script/fift-func-wasm-build-ubuntu.sh +++ b/.github/script/fift-func-wasm-build-ubuntu.sh @@ -3,8 +3,8 @@ # dependencies: #sudo apt-get install -y build-essential git make cmake clang libgflags-dev zlib1g-dev libssl-dev libreadline-dev libmicrohttpd-dev pkg-config libgsl-dev python3 python3-dev python3-pip nodejs libevent-dev -export CC=$(which clang) -export CXX=$(which clang++) +export CC=$(which clang-16) +export CXX=$(which clang++-16) export CCACHE_DISABLE=1 cd ../.. @@ -37,7 +37,15 @@ cd .. mkdir build cd build -cmake -GNinja -DCMAKE_BUILD_TYPE=Release -DZLIB_LIBRARY=/usr/lib/x86_64-linux-gnu/libz.so -DZLIB_INCLUDE_DIR=$ZLIB_DIR -DOPENSSL_ROOT_DIR=$OPENSSL_DIR -DOPENSSL_INCLUDE_DIR=$OPENSSL_DIR/include -DOPENSSL_CRYPTO_LIBRARY=$OPENSSL_DIR/libcrypto.so -DOPENSSL_SSL_LIBRARY=$OPENSSL_DIR/libssl.so -DTON_USE_ABSEIL=OFF .. +cmake -GNinja -DCMAKE_BUILD_TYPE=Release \ +-DCMAKE_CXX_STANDARD=17 \ +-DZLIB_LIBRARY=/usr/lib/x86_64-linux-gnu/libz.so \ +-DZLIB_INCLUDE_DIR=$ZLIB_DIR \ +-DOPENSSL_ROOT_DIR=$OPENSSL_DIR \ +-DOPENSSL_INCLUDE_DIR=$OPENSSL_DIR/include \ +-DOPENSSL_CRYPTO_LIBRARY=$OPENSSL_DIR/libcrypto.so \ +-DOPENSSL_SSL_LIBRARY=$OPENSSL_DIR/libssl.so \ +-DTON_USE_ABSEIL=OFF .. test $? -eq 0 || { echo "Can't configure TON build"; exit 1; } @@ -92,8 +100,23 @@ test $? -eq 0 || { echo "Can't compile libsodium with emmake "; exit 1; } cd ../build -emcmake cmake -DUSE_EMSCRIPTEN=ON -DCMAKE_BUILD_TYPE=Release -DZLIB_LIBRARY=$ZLIB_DIR/libz.a -DZLIB_INCLUDE_DIR=$ZLIB_DIR -DOPENSSL_ROOT_DIR=$OPENSSL_DIR -DOPENSSL_INCLUDE_DIR=$OPENSSL_DIR/include -DOPENSSL_CRYPTO_LIBRARY=$OPENSSL_DIR/libcrypto.a -DOPENSSL_SSL_LIBRARY=$OPENSSL_DIR/libssl.a -DCMAKE_TOOLCHAIN_FILE=$EMSDK_DIR/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake -DCMAKE_CXX_FLAGS="-sUSE_ZLIB=1" -DSECP256K1_INCLUDE_DIR=$SECP256K1_DIR/include -DSECP256K1_LIBRARY=$SECP256K1_DIR/.libs/libsecp256k1.a -DSODIUM_INCLUDE_DIR=$SODIUM_DIR/src/libsodium/include -DSODIUM_LIBRARY_RELEASE=$SODIUM_DIR/src/libsodium/.libs/libsodium.a -DSODIUM_LIBRARY_DEBUG=$SODIUM_DIR/src/libsodium/.libs/libsodium.a -DSODIUM_USE_STATIC_LIBS=ON .. -test $? -eq 0 || { echo "Can't configure TON with with emmake "; exit 1; } +emcmake cmake -DUSE_EMSCRIPTEN=ON -DCMAKE_BUILD_TYPE=Release \ +-DZLIB_LIBRARY=$ZLIB_DIR/libz.a \ +-DZLIB_INCLUDE_DIR=$ZLIB_DIR \ +-DOPENSSL_ROOT_DIR=$OPENSSL_DIR \ +-DOPENSSL_INCLUDE_DIR=$OPENSSL_DIR/include \ +-DOPENSSL_CRYPTO_LIBRARY=$OPENSSL_DIR/libcrypto.a \ +-DOPENSSL_SSL_LIBRARY=$OPENSSL_DIR/libssl.a \ +-DCMAKE_TOOLCHAIN_FILE=$EMSDK_DIR/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake \ +-DCMAKE_CXX_FLAGS="-sUSE_ZLIB=1" \ +-DSECP256K1_INCLUDE_DIR=$SECP256K1_DIR/include \ +-DSECP256K1_LIBRARY=$SECP256K1_DIR/.libs/libsecp256k1.a \ +-DSODIUM_INCLUDE_DIR=$SODIUM_DIR/src/libsodium/include \ +-DSODIUM_LIBRARY_RELEASE=$SODIUM_DIR/src/libsodium/.libs/libsodium.a \ +-DSODIUM_LIBRARY_DEBUG=$SODIUM_DIR/src/libsodium/.libs/libsodium.a \ +-DSODIUM_USE_STATIC_LIBS=ON .. + +test $? -eq 0 || { echo "Can't configure TON with emmake "; exit 1; } cp -R ../crypto/smartcont ../crypto/fift/lib crypto emmake make -j16 funcfiftlib func fift tlbc emulator-emscripten diff --git a/.github/workflows/macos-11.7-compile.yml b/.github/workflows/macos-11.7-compile.yml index 910b16fc1..100d51c8f 100644 --- a/.github/workflows/macos-11.7-compile.yml +++ b/.github/workflows/macos-11.7-compile.yml @@ -14,22 +14,43 @@ jobs: submodules: 'recursive' - name: Compile OpenSSL run: | + export NONINTERACTIVE=1 + brew install ninja secp256k1 libsodium libmicrohttpd pkg-config automake libtool git clone https://github.com/openssl/openssl openssl_1_1_1 cd openssl_1_1_1 git checkout OpenSSL_1_1_1-stable - ./Configure --prefix=/usr/local/macos darwin64-x86_64-cc -static -mmacosx-version-min=11.7 + ./Configure darwin64-x86_64-cc -static -mmacosx-version-min=11.7 make build_libs -j4 - name: Build all run: | - export NONINTERACTIVE=1 - brew install ninja secp256k1 libsodium libmicrohttpd pkg-config + brew unlink openssl@3 rootPath=`pwd` mkdir build cd build cmake -GNinja -DOPENSSL_FOUND=1 -DOPENSSL_INCLUDE_DIR=$rootPath/openssl_1_1_1/include -DOPENSSL_CRYPTO_LIBRARY=$rootPath/openssl_1_1_1/libcrypto.a -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=11.7 -DCMAKE_CXX_FLAGS="-stdlib=libc++" -DCMAKE_BUILD_TYPE=Release .. ninja storage-daemon storage-daemon-cli blockchain-explorer fift func tonlib tonlibjson tonlib-cli validator-engine lite-client pow-miner validator-engine-console generate-random-id json2tlo dht-server http-proxy rldp-http-proxy adnl-proxy create-state create-hardfork tlbc emulator + - name: Strip binaries + run: | + strip build/storage/storage-daemon/storage-daemon + strip build/storage/storage-daemon/storage-daemon-cli + strip build/blockchain-explorer/blockchain-explorer + strip build/crypto/fift + strip build/crypto/func + strip build/crypto/create-state + strip build/crypto/tlbc + strip build/validator-engine-console/validator-engine-console + strip build/tonlib/tonlib-cli + strip build/http/http-proxy + strip build/rldp-http-proxy/rldp-http-proxy + strip build/dht-server/dht-server + strip build/lite-client/lite-client + strip build/validator-engine/validator-engine + strip build/utils/generate-random-id + strip build/utils/json2tlo + strip build/adnl/adnl-proxy + - name: Find & copy binaries run: | mkdir artifacts diff --git a/.github/workflows/macos-12.6-compile.yml b/.github/workflows/macos-12.6-compile.yml index 368abf02c..8660a10b8 100644 --- a/.github/workflows/macos-12.6-compile.yml +++ b/.github/workflows/macos-12.6-compile.yml @@ -15,11 +15,11 @@ jobs: - name: Compile OpenSSL run: | export NONINTERACTIVE=1 - brew install ninja libsodium automake + brew install ninja secp256k1 libsodium libmicrohttpd pkg-config automake libtool git clone https://github.com/openssl/openssl openssl_1_1_1 cd openssl_1_1_1 git checkout OpenSSL_1_1_1-stable - ./Configure --prefix=/usr/local/macos darwin64-x86_64-cc -static -mmacosx-version-min=12.6 + ./Configure darwin64-x86_64-cc -static -mmacosx-version-min=12.6 make build_libs -j4 - name: Compile Secp256k1 @@ -33,14 +33,33 @@ jobs: - name: Build all run: | - export NONINTERACTIVE=1 - brew install ninja libmicrohttpd pkg-config + brew unlink openssl@3 rootPath=`pwd` mkdir build cd build cmake -GNinja -DOPENSSL_FOUND=1 -DOPENSSL_INCLUDE_DIR=$rootPath/openssl_1_1_1/include -DOPENSSL_CRYPTO_LIBRARY=$rootPath/openssl_1_1_1/libcrypto.a -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=12.6 -DCMAKE_CXX_FLAGS="-stdlib=libc++" -DCMAKE_BUILD_TYPE=Release .. ninja storage-daemon storage-daemon-cli blockchain-explorer fift func tonlib tonlibjson tonlib-cli validator-engine lite-client pow-miner validator-engine-console generate-random-id json2tlo dht-server http-proxy rldp-http-proxy adnl-proxy create-state create-hardfork tlbc emulator + - name: Strip binaries + run: | + strip build/storage/storage-daemon/storage-daemon + strip build/storage/storage-daemon/storage-daemon-cli + strip build/blockchain-explorer/blockchain-explorer + strip build/crypto/fift + strip build/crypto/func + strip build/crypto/create-state + strip build/crypto/tlbc + strip build/validator-engine-console/validator-engine-console + strip build/tonlib/tonlib-cli + strip build/http/http-proxy + strip build/rldp-http-proxy/rldp-http-proxy + strip build/dht-server/dht-server + strip build/lite-client/lite-client + strip build/validator-engine/validator-engine + strip build/utils/generate-random-id + strip build/utils/json2tlo + strip build/adnl/adnl-proxy + - name: Find & copy binaries run: | mkdir artifacts diff --git a/.github/workflows/ton-wasm-emscripten.yml b/.github/workflows/ton-wasm-emscripten.yml index 40a658189..a31678004 100644 --- a/.github/workflows/ton-wasm-emscripten.yml +++ b/.github/workflows/ton-wasm-emscripten.yml @@ -15,7 +15,13 @@ jobs: - name: Install libraries run: | sudo apt update - sudo apt install -y build-essential git make cmake ninja-build clang libgflags-dev zlib1g-dev libssl-dev libreadline-dev libmicrohttpd-dev pkg-config libgsl-dev python3 python3-dev python3-pip nodejs libsecp256k1-dev libsodium-dev + sudo apt install -y build-essential git make cmake ninja-build clang libgflags-dev zlib1g-dev libssl-dev libreadline-dev libmicrohttpd-dev pkg-config libgsl-dev python3 python3-dev python3-pip nodejs libsecp256k1-dev libsodium-dev automake libtool + + - name: Setup compiler + run: | + wget https://apt.llvm.org/llvm.sh + chmod +x llvm.sh + sudo ./llvm.sh 16 all - name: Configure & Build run: | diff --git a/.github/workflows/tonlib-android-jni.yml b/.github/workflows/tonlib-android-jni.yml index cdf410b4c..6e04f8b77 100644 --- a/.github/workflows/tonlib-android-jni.yml +++ b/.github/workflows/tonlib-android-jni.yml @@ -19,9 +19,9 @@ jobs: sudo apt install -y build-essential git make cmake clang libgflags-dev zlib1g-dev libssl-dev libreadline-dev libmicrohttpd-dev pkg-config libgsl-dev python3 python3-dev ninja-build - name: Configure & Build - run: | - wget https://dl.google.com/android/repository/android-ndk-r25b-linux.zip - unzip android-ndk-r25b-linux.zip + run: | + wget -q https://dl.google.com/android/repository/android-ndk-r25b-linux.zip + unzip -q android-ndk-r25b-linux.zip export JAVA_AWT_LIBRARY=NotNeeded export JAVA_JVM_LIBRARY=NotNeeded export JAVA_INCLUDE_PATH=${JAVA_HOME}/include diff --git a/.github/workflows/ubuntu-22.04-compile.yml b/.github/workflows/ubuntu-22.04-compile.yml index 397116ff6..b5d4d5711 100644 --- a/.github/workflows/ubuntu-22.04-compile.yml +++ b/.github/workflows/ubuntu-22.04-compile.yml @@ -39,13 +39,17 @@ jobs: mkdir build cd build - cmake -GNinja -DOPENSSL_FOUND=1 -DOPENSSL_INCLUDE_DIR=$rootPath/openssl_1_1_1/include -DOPENSSL_CRYPTO_LIBRARY=$rootPath/openssl_1_1_1/libcrypto.a -DCMAKE_BUILD_TYPE=Release -DPORTABLE=1 -DTON_ARCH= -DCMAKE_CXX_FLAGS="-mavx2" .. + cmake -GNinja -DOPENSSL_FOUND=1 -DOPENSSL_INCLUDE_DIR=$rootPath/openssl_1_1_1/include -DOPENSSL_CRYPTO_LIBRARY=$rootPath/openssl_1_1_1/libcrypto.a -DCMAKE_BUILD_TYPE=Release -DPORTABLE=1 -DTON_ARCH= .. ninja storage-daemon storage-daemon-cli fift func tonlib tonlibjson tonlib-cli validator-engine lite-client pow-miner validator-engine-console generate-random-id json2tlo dht-server http-proxy rldp-http-proxy adnl-proxy create-state emulator + - name: Strip binaries + run: | + strip -g build/storage/storage-daemon/storage-daemon build/storage/storage-daemon/storage-daemon-cli build/crypto/fift build/crypto/tlbc build/crypto/func build/crypto/create-state build/validator-engine-console/validator-engine-console build/tonlib/tonlib-cli build/tonlib/libtonlibjson.so.0.5 build/http/http-proxy build/rldp-http-proxy/rldp-http-proxy build/dht-server/dht-server build/lite-client/lite-client build/validator-engine/validator-engine build/utils/generate-random-id build/utils/json2tlo build/adnl/adnl-proxy build/emulator/libemulator.* + - name: Find & copy binaries run: | mkdir artifacts - cp build/storage/storage-daemon/storage-daemon build/storage/storage-daemon/storage-daemon-cli build/crypto/fift build/crypto/tlbc build/crypto/func build/crypto/create-state build/validator-engine-console/validator-engine-console build/tonlib/tonlib-cli build/tonlib/libtonlibjson.so.0.5 build/http/http-proxy build/rldp-http-proxy/rldp-http-proxy build/dht-server/dht-server build/lite-client/lite-client build/validator-engine/validator-engine build/utils/generate-random-id build/utils/json2tlo build/adnl/adnl-proxy build/emulator/libemulator.* artifacts + cp build/storage/storage-daemon/storage-daemon build/storage/storage-daemon/storage-daemon-cli build/crypto/fift build/crypto/tlbc build/crypto/func build/crypto/create-state build/validator-engine-console/validator-engine-console build/tonlib/tonlib-cli build/tonlib/libtonlibjson.so.0.5 build/http/http-proxy build/rldp-http-proxy/rldp-http-proxy build/dht-server/dht-server build/lite-client/lite-client build/validator-engine/validator-engine build/utils/generate-random-id build/utils/json2tlo build/adnl/adnl-proxy build/emulator/libemulator.* artifacts chmod +x artifacts/* cp -R crypto/smartcont artifacts/ cp -R crypto/fift/lib artifacts/ diff --git a/.github/workflows/ubuntu-compile.yml b/.github/workflows/ubuntu-compile.yml index 171ba46d8..be3878f5e 100644 --- a/.github/workflows/ubuntu-compile.yml +++ b/.github/workflows/ubuntu-compile.yml @@ -43,9 +43,13 @@ jobs: cd .. buildPath=`pwd` - cmake -GNinja -DOPENSSL_FOUND=1 -DOPENSSL_INCLUDE_DIR=$buildPath/openssl_1_1_1/include -DOPENSSL_CRYPTO_LIBRARY=$buildPath/openssl_1_1_1/libcrypto.a -DCMAKE_BUILD_TYPE=Release -DPORTABLE=1 -DTON_ARCH= -DCMAKE_CXX_FLAGS="-mavx2" .. + cmake -GNinja -DOPENSSL_FOUND=1 -DOPENSSL_INCLUDE_DIR=$buildPath/openssl_1_1_1/include -DOPENSSL_CRYPTO_LIBRARY=$buildPath/openssl_1_1_1/libcrypto.a -DCMAKE_BUILD_TYPE=Release -DPORTABLE=1 -DTON_ARCH= .. ninja storage-daemon storage-daemon-cli fift func tonlib tonlibjson tonlib-cli validator-engine lite-client pow-miner validator-engine-console generate-random-id json2tlo dht-server http-proxy rldp-http-proxy adnl-proxy create-state create-hardfork emulator + - name: Strip binaries + run: | + strip -g build-${{ matrix.os }}/storage/storage-daemon/storage-daemon build-${{ matrix.os }}/storage/storage-daemon/storage-daemon-cli build-${{ matrix.os }}/crypto/fift build-${{ matrix.os }}/crypto/tlbc build-${{ matrix.os }}/crypto/func build-${{ matrix.os }}/crypto/create-state build-${{ matrix.os }}/validator-engine-console/validator-engine-console build-${{ matrix.os }}/tonlib/tonlib-cli build-${{ matrix.os }}/tonlib/libtonlibjson.so.0.5 build-${{ matrix.os }}/http/http-proxy build-${{ matrix.os }}/rldp-http-proxy/rldp-http-proxy build-${{ matrix.os }}/dht-server/dht-server build-${{ matrix.os }}/lite-client/lite-client build-${{ matrix.os }}/validator-engine/validator-engine build-${{ matrix.os }}/utils/generate-random-id build-${{ matrix.os }}/utils/json2tlo build-${{ matrix.os }}/adnl/adnl-proxy build-${{ matrix.os }}/emulator/libemulator.* + - name: Find & copy binaries run: | mkdir artifacts-${{ matrix.os }} diff --git a/.github/workflows/win-2019-compile.yml b/.github/workflows/win-2019-compile.yml index 1edcb0e16..9b4d3bef2 100644 --- a/.github/workflows/win-2019-compile.yml +++ b/.github/workflows/win-2019-compile.yml @@ -92,7 +92,7 @@ jobs: mkdir artifacts\smartcont mkdir artifacts\lib - for %%I in (build\storage\storage-daemon\Release\storage-daemon.exe build\storage\storage-daemon\Release\storage-daemon-cli.exe build\blockchain-explorer\blockchain-explorer.exe build\crypto\Release\fift.exe build\crypto\Release\tlbc.exe build\crypto\Release\func.exe build\crypto\Release\create-state.exe build\validator-engine-console\Release\validator-engine-console.exe build\tonlib\Release\tonlib-cli.exe build\tonlib\Release\tonlibjson.dll build\http\Release\http-proxy.exe build\rldp-http-proxy\Release\rldp-http-proxy.exe build\dht-server\Release\dht-server.exe build\lite-client\Release\lite-client.exe build\validator-engine\Release\validator-engine.exe build\utils\Release\generate-random-id.exe build\utils\Release\json2tlo.exe build\adnl\Release\adnl-proxy.exe build\emulator\Release\emulator.dll) do copy %%I artifacts\ + for %%I in (build\storage\storage-daemon\Release\storage-daemon.exe build\storage\storage-daemon\Release\storage-daemon-cli.exe build\blockchain-explorer\blockchain-explorer.exe build\crypto\Release\fift.exe build\crypto\Release\tlbc.exe build\crypto\Release\func.exe build\crypto\Release\create-state.exe build\validator-engine-console\Release\validator-engine-console.exe build\tonlib\Release\tonlib-cli.exe build\tonlib\Release\tonlibjson.dll build\http\Release\http-proxy.exe build\rldp-http-proxy\Release\rldp-http-proxy.exe build\dht-server\Release\dht-server.exe build\lite-client\Release\lite-client.exe build\validator-engine\Release\validator-engine.exe build\utils\Release\generate-random-id.exe build\utils\Release\json2tlo.exe build\adnl\Release\adnl-proxy.exe build\emulator\Release\emulator.dll) do (strip -g %%I & copy %%I artifacts\) xcopy /e /k /h /i crypto\smartcont artifacts\smartcont xcopy /e /k /h /i crypto\fift\lib artifacts\lib diff --git a/example/android/build.sh b/example/android/build.sh index 8cecfa41b..7f170dbcf 100755 --- a/example/android/build.sh +++ b/example/android/build.sh @@ -36,7 +36,7 @@ then BLST_LIBRARY=$(pwd)/third_party/blst/armv8/libblst.a fi - +ORIG_ARCH=$ARCH ARCH=$ABI mkdir -p build-$ARCH @@ -46,7 +46,7 @@ cmake .. -GNinja -DPORTABLE=1 \ -DANDROID_ABI=x86 -DANDROID_PLATFORM=android-32 -DANDROID_NDK=${ANDROID_NDK_ROOT} \ -DCMAKE_TOOLCHAIN_FILE=${ANDROID_NDK_ROOT}/build/cmake/android.toolchain.cmake \ -DCMAKE_BUILD_TYPE=Release -DANDROID_ABI=${ABI} \ --DOPENSSL_ROOT_DIR=${OPENSSL_DIR}/${ARCH} -DTON_ARCH="" \ +-DOPENSSL_ROOT_DIR=${OPENSSL_DIR}/${ORIG_ARCH} -DTON_ARCH="" \ -DTON_ONLY_TONLIB=ON \ -DSECP256K1_INCLUDE_DIR=${SECP256K1_INCLUDE_DIR} -DSECP256K1_LIBRARY=${SECP256K1_LIBRARY} \ -DSODIUM_INCLUDE_DIR=${SODIUM_INCLUDE_DIR} -DSODIUM_LIBRARY_RELEASE=${SODIUM_LIBRARY_RELEASE} \ From 5847897b3758bc9ea85af38e7be8fc867e4c133a Mon Sep 17 00:00:00 2001 From: SpyCheese Date: Fri, 3 Nov 2023 14:43:34 +0300 Subject: [PATCH 38/50] Various changes in TVM, github builds and tests (#793) * Bugfixes in TVM and node * Upgrade to C++17 * Improve GitHub builds * Fix existing tests and partially integrate them into builds --------- Co-authored-by: neodiX42 Co-authored-by: EmelyanenkoK --- .clang_complete | 2 +- .github/script/fift-func-wasm-build-ubuntu.sh | 2 +- .github/workflows/macos-11.7-compile.yml | 32 +- .github/workflows/macos-12.6-compile.yml | 29 +- .github/workflows/ton-x86-64-linux.yml | 2 +- .github/workflows/ton-x86-64-macos.yml | 2 +- .github/workflows/ubuntu-22.04-compile.yml | 20 +- .github/workflows/ubuntu-compile.yml | 21 +- .github/workflows/win-2019-compile.yml | 15 +- CMakeLists.txt | 67 +- README.md | 5 + adnl/CMakeLists.txt | 2 +- blockchain-explorer/CMakeLists.txt | 2 +- blockchain-explorer/blockchain-explorer.cpp | 4 +- catchain/CMakeLists.txt | 2 +- common/CMakeLists.txt | 2 +- create-hardfork/CMakeLists.txt | 2 +- create-hardfork/create-hardfork.cpp | 4 +- crypto/CMakeLists.txt | 2 +- crypto/block/transaction.cpp | 663 +++++- crypto/block/transaction.h | 4 +- crypto/common/bitstring.cpp | 4 +- crypto/fift/lib/Asm.fif | 94 +- crypto/fift/words.cpp | 2 +- crypto/func/auto-tests/legacy_tester.py | 130 +- crypto/func/auto-tests/run_tests.py | 36 +- crypto/openssl/bignum.cpp | 12 +- crypto/openssl/bignum.h | 2 +- crypto/parser/lexer.cpp | 1 - crypto/smc-envelope/ManualDns.h | 4 +- crypto/smc-envelope/SmartContract.cpp | 2 +- crypto/test/fift.cpp | 2 +- crypto/test/fift/rist255.fif | 3 + crypto/test/modbigint.cpp | 6 +- crypto/test/test-bigint.cpp | 6 +- crypto/test/test-db.cpp | 8 +- crypto/test/test-smartcont.cpp | 13 +- crypto/test/vm.cpp | 2 +- crypto/tl/tlbc-gen-cpp.cpp | 1 - crypto/tl/tlbc.cpp | 2 - crypto/vm/arithops.cpp | 44 +- crypto/vm/tonops.cpp | 33 +- crypto/vm/vm.cpp | 13 + crypto/vm/vm.h | 2 + dht-server/CMakeLists.txt | 2 +- dht/CMakeLists.txt | 2 +- emulator/CMakeLists.txt | 2 +- emulator/emulator-extern.cpp | 4 +- emulator/transaction-emulator.cpp | 4 +- fec/CMakeLists.txt | 2 +- fec/fec.cpp | 2 +- flake.lock | 6 +- flake.nix | 8 +- http/CMakeLists.txt | 2 +- keyring/CMakeLists.txt | 2 +- keys/CMakeLists.txt | 2 +- lite-client/CMakeLists.txt | 2 +- lite-client/lite-client.cpp | 2 +- memprof/CMakeLists.txt | 2 +- overlay/CMakeLists.txt | 2 +- rldp-http-proxy/CMakeLists.txt | 2 +- rldp/CMakeLists.txt | 2 +- rldp2/CMakeLists.txt | 2 +- storage/CMakeLists.txt | 2 +- storage/storage-daemon/CMakeLists.txt | 2 +- storage/test/storage.cpp | 3 - tdactor/CMakeLists.txt | 2 +- tdactor/benchmark/CMakeLists.txt | 2 +- tdactor/test/actors_core.cpp | 4 +- tdactor/test/actors_promise.cpp | 2 +- tddb/CMakeLists.txt | 2 +- tddb/td/db/utils/BlobView.cpp | 1 + tdfec/CMakeLists.txt | 2 +- tdfec/benchmark/CMakeLists.txt | 2 +- tdfec/td/fec/raptorq/Rfc.h | 2 +- tdnet/CMakeLists.txt | 2 +- tdtl/CMakeLists.txt | 2 +- tdutils/CMakeLists.txt | 4 +- tdutils/generate/CMakeLists.txt | 2 +- tdutils/td/utils/BigNum.cpp | 4 + tdutils/td/utils/BufferedUdp.h | 1 + tdutils/td/utils/crypto.cpp | 46 +- tdutils/td/utils/crypto.h | 2 +- tdutils/td/utils/port/stacktrace.cpp | 45 +- tdutils/test/MpmcWaiter.cpp | 6 +- terminal/CMakeLists.txt | 2 +- test/ed25519_crypto.cpp | 2053 ----------------- test/regression-tests.ans | 68 +- test/test-adnl.cpp | 2 +- test/test-catchain.cpp | 8 +- test/test-dht.cpp | 2 +- test/test-ext-client.cpp | 220 -- test/test-ext-server.cpp | 221 -- test/test-node.cpp | 376 --- test/test-rldp.cpp | 2 +- test/test-rldp2.cpp | 2 +- test/test-ton-collator.cpp | 4 +- test/test-validator-session-state.cpp | 1 + test/test-validator-session.cpp | 356 --- test/test-validator.cpp | 356 --- third-party/blst | 2 +- third-party/rocksdb | 2 +- tl-utils/CMakeLists.txt | 2 +- tl/CMakeLists.txt | 2 +- tl/generate/CMakeLists.txt | 2 +- tl/tl/tl_json.h | 3 +- tonlib/CMakeLists.txt | 2 +- tonlib/test/offline.cpp | 25 +- tonlib/tonlib/TonlibClient.cpp | 2 +- utils/CMakeLists.txt | 2 +- utils/opcode-timing.cpp | 3 +- validator-engine-console/CMakeLists.txt | 2 +- validator-engine/CMakeLists.txt | 2 +- validator-engine/validator-engine.cpp | 4 +- validator-session/CMakeLists.txt | 2 +- validator/CMakeLists.txt | 2 +- validator/impl/CMakeLists.txt | 2 +- validator/impl/collator-impl.h | 8 +- validator/impl/collator.cpp | 962 +++++++- validator/impl/external-message.cpp | 2 +- validator/impl/validate-query.cpp | 786 ++++++- validator/impl/validate-query.hpp | 3 +- 122 files changed, 2891 insertions(+), 4102 deletions(-) delete mode 100644 test/ed25519_crypto.cpp delete mode 100644 test/test-ext-client.cpp delete mode 100644 test/test-ext-server.cpp delete mode 100644 test/test-node.cpp delete mode 100644 test/test-validator-session.cpp delete mode 100644 test/test-validator.cpp diff --git a/.clang_complete b/.clang_complete index d7cda0ff1..e88dbc7bf 100644 --- a/.clang_complete +++ b/.clang_complete @@ -1,5 +1,5 @@ -xc++ --std=c++14 +-std=c++17 -iquote . -iquote tdtl/ -iquote tl/ diff --git a/.github/script/fift-func-wasm-build-ubuntu.sh b/.github/script/fift-func-wasm-build-ubuntu.sh index 259377ccb..feac19e31 100755 --- a/.github/script/fift-func-wasm-build-ubuntu.sh +++ b/.github/script/fift-func-wasm-build-ubuntu.sh @@ -13,7 +13,7 @@ echo `pwd` git clone https://github.com/openssl/openssl.git cd openssl -git checkout OpenSSL_1_1_1j +git checkout checkout openssl-3.1.4 ./config make -j16 OPENSSL_DIR=`pwd` diff --git a/.github/workflows/macos-11.7-compile.yml b/.github/workflows/macos-11.7-compile.yml index 100d51c8f..eb12db1b5 100644 --- a/.github/workflows/macos-11.7-compile.yml +++ b/.github/workflows/macos-11.7-compile.yml @@ -12,24 +12,33 @@ jobs: uses: actions/checkout@v3 with: submodules: 'recursive' - - name: Compile OpenSSL + + - name: Compile Secp256k1 run: | export NONINTERACTIVE=1 brew install ninja secp256k1 libsodium libmicrohttpd pkg-config automake libtool - git clone https://github.com/openssl/openssl openssl_1_1_1 - cd openssl_1_1_1 - git checkout OpenSSL_1_1_1-stable - ./Configure darwin64-x86_64-cc -static -mmacosx-version-min=11.7 - make build_libs -j4 + git clone https://github.com/libbitcoin/secp256k1.git + cd secp256k1 + ./autogen.sh + ./configure --enable-module-recovery + make + make install - name: Build all run: | - brew unlink openssl@3 + brew unlink openssl@1.1 + brew install openssl@3 + brew unlink openssl@3 && brew link --overwrite openssl@3 rootPath=`pwd` mkdir build cd build - cmake -GNinja -DOPENSSL_FOUND=1 -DOPENSSL_INCLUDE_DIR=$rootPath/openssl_1_1_1/include -DOPENSSL_CRYPTO_LIBRARY=$rootPath/openssl_1_1_1/libcrypto.a -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=11.7 -DCMAKE_CXX_FLAGS="-stdlib=libc++" -DCMAKE_BUILD_TYPE=Release .. - ninja storage-daemon storage-daemon-cli blockchain-explorer fift func tonlib tonlibjson tonlib-cli validator-engine lite-client pow-miner validator-engine-console generate-random-id json2tlo dht-server http-proxy rldp-http-proxy adnl-proxy create-state create-hardfork tlbc emulator + cmake -GNinja -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=11.7 -DCMAKE_CXX_FLAGS="-stdlib=libc++" -DCMAKE_BUILD_TYPE=Release .. + + ninja storage-daemon storage-daemon-cli blockchain-explorer fift func tonlib tonlibjson tonlib-cli validator-engine \ + lite-client pow-miner validator-engine-console generate-random-id json2tlo dht-server \ + http-proxy rldp-http-proxy adnl-proxy create-state create-hardfork tlbc emulator \ + test-ed25519 test-ed25519-crypto test-bigint test-vm test-fift test-cells test-smartcont test-net test-tdactor \ + test-tdutils test-tonlib-offline test-adnl test-dht test-rldp test-rldp2 test-catchain test-fec test-tddb test-db test-validator-session-state - name: Strip binaries run: | @@ -51,6 +60,11 @@ jobs: strip build/utils/json2tlo strip build/adnl/adnl-proxy + - name: Run tests + run: | + cd build + ctest --output-on-failure -E "test-catchain|test-actors" + - name: Find & copy binaries run: | mkdir artifacts diff --git a/.github/workflows/macos-12.6-compile.yml b/.github/workflows/macos-12.6-compile.yml index 8660a10b8..f41efc669 100644 --- a/.github/workflows/macos-12.6-compile.yml +++ b/.github/workflows/macos-12.6-compile.yml @@ -12,18 +12,11 @@ jobs: uses: actions/checkout@v3 with: submodules: 'recursive' - - name: Compile OpenSSL - run: | - export NONINTERACTIVE=1 - brew install ninja secp256k1 libsodium libmicrohttpd pkg-config automake libtool - git clone https://github.com/openssl/openssl openssl_1_1_1 - cd openssl_1_1_1 - git checkout OpenSSL_1_1_1-stable - ./Configure darwin64-x86_64-cc -static -mmacosx-version-min=12.6 - make build_libs -j4 - name: Compile Secp256k1 run: | + export NONINTERACTIVE=1 + brew install ninja secp256k1 libsodium libmicrohttpd pkg-config automake libtool git clone https://github.com/libbitcoin/secp256k1.git cd secp256k1 ./autogen.sh @@ -33,12 +26,19 @@ jobs: - name: Build all run: | - brew unlink openssl@3 + brew unlink openssl@1.1 + brew install openssl@3 + brew unlink openssl@3 && brew link --overwrite openssl@3 rootPath=`pwd` mkdir build cd build - cmake -GNinja -DOPENSSL_FOUND=1 -DOPENSSL_INCLUDE_DIR=$rootPath/openssl_1_1_1/include -DOPENSSL_CRYPTO_LIBRARY=$rootPath/openssl_1_1_1/libcrypto.a -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=12.6 -DCMAKE_CXX_FLAGS="-stdlib=libc++" -DCMAKE_BUILD_TYPE=Release .. - ninja storage-daemon storage-daemon-cli blockchain-explorer fift func tonlib tonlibjson tonlib-cli validator-engine lite-client pow-miner validator-engine-console generate-random-id json2tlo dht-server http-proxy rldp-http-proxy adnl-proxy create-state create-hardfork tlbc emulator + cmake -GNinja -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=12.6 -DCMAKE_CXX_FLAGS="-stdlib=libc++" -DCMAKE_BUILD_TYPE=Release .. + + ninja storage-daemon storage-daemon-cli blockchain-explorer fift func tonlib tonlibjson tonlib-cli \ + validator-engine lite-client pow-miner validator-engine-console generate-random-id json2tlo dht-server \ + http-proxy rldp-http-proxy adnl-proxy create-state create-hardfork tlbc emulator \ + test-ed25519 test-ed25519-crypto test-bigint test-vm test-fift test-cells test-smartcont test-net test-tdactor \ + test-tdutils test-tonlib-offline test-adnl test-dht test-rldp test-rldp2 test-catchain test-fec test-tddb test-db test-validator-session-state - name: Strip binaries run: | @@ -60,6 +60,11 @@ jobs: strip build/utils/json2tlo strip build/adnl/adnl-proxy + - name: Run tests + run: | + cd build + ctest --output-on-failure -E "test-catchain|test-actors" + - name: Find & copy binaries run: | mkdir artifacts diff --git a/.github/workflows/ton-x86-64-linux.yml b/.github/workflows/ton-x86-64-linux.yml index e939f22f8..a4760dc41 100644 --- a/.github/workflows/ton-x86-64-linux.yml +++ b/.github/workflows/ton-x86-64-linux.yml @@ -15,7 +15,7 @@ jobs: with: submodules: 'recursive' - - uses: cachix/install-nix-action@v18 + - uses: cachix/install-nix-action@v23 with: extra_nix_config: | access-tokens = github.com=${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/ton-x86-64-macos.yml b/.github/workflows/ton-x86-64-macos.yml index b9e9cf9b9..cea2937a3 100644 --- a/.github/workflows/ton-x86-64-macos.yml +++ b/.github/workflows/ton-x86-64-macos.yml @@ -11,7 +11,7 @@ jobs: with: submodules: 'recursive' - - uses: cachix/install-nix-action@v22 + - uses: cachix/install-nix-action@v23 with: extra_nix_config: | access-tokens = github.com=${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/ubuntu-22.04-compile.yml b/.github/workflows/ubuntu-22.04-compile.yml index b5d4d5711..af8943a1c 100644 --- a/.github/workflows/ubuntu-22.04-compile.yml +++ b/.github/workflows/ubuntu-22.04-compile.yml @@ -28,9 +28,9 @@ jobs: export CXX=$(which clang++) export CCACHE_DISABLE=1 - git clone https://github.com/openssl/openssl openssl_1_1_1 - cd openssl_1_1_1 - git checkout OpenSSL_1_1_1-stable + git clone https://github.com/openssl/openssl openssl_3 + cd openssl_3 + git checkout openssl-3.1.4 ./config make build_libs -j4 @@ -39,13 +39,23 @@ jobs: mkdir build cd build - cmake -GNinja -DOPENSSL_FOUND=1 -DOPENSSL_INCLUDE_DIR=$rootPath/openssl_1_1_1/include -DOPENSSL_CRYPTO_LIBRARY=$rootPath/openssl_1_1_1/libcrypto.a -DCMAKE_BUILD_TYPE=Release -DPORTABLE=1 -DTON_ARCH= .. - ninja storage-daemon storage-daemon-cli fift func tonlib tonlibjson tonlib-cli validator-engine lite-client pow-miner validator-engine-console generate-random-id json2tlo dht-server http-proxy rldp-http-proxy adnl-proxy create-state emulator + cmake -GNinja -DOPENSSL_FOUND=1 -DOPENSSL_INCLUDE_DIR=$rootPath/openssl_3/include -DOPENSSL_CRYPTO_LIBRARY=$rootPath/openssl_3/libcrypto.a -DCMAKE_BUILD_TYPE=Release -DPORTABLE=1 -DTON_ARCH= .. + + ninja storage-daemon storage-daemon-cli fift func tonlib tonlibjson tonlib-cli validator-engine lite-client \ + pow-miner validator-engine-console generate-random-id json2tlo dht-server http-proxy rldp-http-proxy \ + adnl-proxy create-state emulator \ + test-ed25519 test-ed25519-crypto test-bigint test-vm test-fift test-cells test-smartcont test-net test-tdactor \ + test-tdutils test-tonlib-offline test-adnl test-dht test-rldp test-rldp2 test-catchain test-fec test-tddb test-db test-validator-session-state - name: Strip binaries run: | strip -g build/storage/storage-daemon/storage-daemon build/storage/storage-daemon/storage-daemon-cli build/crypto/fift build/crypto/tlbc build/crypto/func build/crypto/create-state build/validator-engine-console/validator-engine-console build/tonlib/tonlib-cli build/tonlib/libtonlibjson.so.0.5 build/http/http-proxy build/rldp-http-proxy/rldp-http-proxy build/dht-server/dht-server build/lite-client/lite-client build/validator-engine/validator-engine build/utils/generate-random-id build/utils/json2tlo build/adnl/adnl-proxy build/emulator/libemulator.* + - name: Run tests + run: | + cd build + ctest --output-on-failure -E "test-catchain|test-actors" + - name: Find & copy binaries run: | mkdir artifacts diff --git a/.github/workflows/ubuntu-compile.yml b/.github/workflows/ubuntu-compile.yml index be3878f5e..3c1e7bad1 100644 --- a/.github/workflows/ubuntu-compile.yml +++ b/.github/workflows/ubuntu-compile.yml @@ -34,22 +34,31 @@ jobs: mkdir build-${{ matrix.os }} cd build-${{ matrix.os }} - git clone https://github.com/openssl/openssl openssl_1_1_1 - cd openssl_1_1_1 - git checkout OpenSSL_1_1_1-stable + git clone https://github.com/openssl/openssl openssl_3 + cd openssl_3 + git checkout openssl-3.1.4 ./config make build_libs -j4 cd .. - buildPath=`pwd` + rootPath=`pwd` - cmake -GNinja -DOPENSSL_FOUND=1 -DOPENSSL_INCLUDE_DIR=$buildPath/openssl_1_1_1/include -DOPENSSL_CRYPTO_LIBRARY=$buildPath/openssl_1_1_1/libcrypto.a -DCMAKE_BUILD_TYPE=Release -DPORTABLE=1 -DTON_ARCH= .. - ninja storage-daemon storage-daemon-cli fift func tonlib tonlibjson tonlib-cli validator-engine lite-client pow-miner validator-engine-console generate-random-id json2tlo dht-server http-proxy rldp-http-proxy adnl-proxy create-state create-hardfork emulator + cmake -GNinja -DOPENSSL_FOUND=1 -DOPENSSL_INCLUDE_DIR=$rootPath/openssl_3/include -DOPENSSL_CRYPTO_LIBRARY=$rootPath/openssl_3/libcrypto.a -DCMAKE_BUILD_TYPE=Release -DPORTABLE=1 -DTON_ARCH= .. + ninja storage-daemon storage-daemon-cli fift func tonlib tonlibjson tonlib-cli validator-engine lite-client \ + pow-miner validator-engine-console generate-random-id json2tlo dht-server http-proxy rldp-http-proxy adnl-proxy \ + create-state create-hardfork emulator \ + test-ed25519 test-ed25519-crypto test-bigint test-vm test-fift test-cells test-smartcont test-net test-tdactor \ + test-tdutils test-tonlib-offline test-adnl test-dht test-rldp test-rldp2 test-catchain test-fec test-tddb test-db test-validator-session-state - name: Strip binaries run: | strip -g build-${{ matrix.os }}/storage/storage-daemon/storage-daemon build-${{ matrix.os }}/storage/storage-daemon/storage-daemon-cli build-${{ matrix.os }}/crypto/fift build-${{ matrix.os }}/crypto/tlbc build-${{ matrix.os }}/crypto/func build-${{ matrix.os }}/crypto/create-state build-${{ matrix.os }}/validator-engine-console/validator-engine-console build-${{ matrix.os }}/tonlib/tonlib-cli build-${{ matrix.os }}/tonlib/libtonlibjson.so.0.5 build-${{ matrix.os }}/http/http-proxy build-${{ matrix.os }}/rldp-http-proxy/rldp-http-proxy build-${{ matrix.os }}/dht-server/dht-server build-${{ matrix.os }}/lite-client/lite-client build-${{ matrix.os }}/validator-engine/validator-engine build-${{ matrix.os }}/utils/generate-random-id build-${{ matrix.os }}/utils/json2tlo build-${{ matrix.os }}/adnl/adnl-proxy build-${{ matrix.os }}/emulator/libemulator.* + - name: Run tests + run: | + cd build-${{ matrix.os }} + ctest --output-on-failure -E "test-catchain|test-actors" + - name: Find & copy binaries run: | mkdir artifacts-${{ matrix.os }} diff --git a/.github/workflows/win-2019-compile.yml b/.github/workflows/win-2019-compile.yml index 9b4d3bef2..e94655f7d 100644 --- a/.github/workflows/win-2019-compile.yml +++ b/.github/workflows/win-2019-compile.yml @@ -49,10 +49,10 @@ jobs: curl -Lo libsodium-1.0.18-stable-msvc.zip https://download.libsodium.org/libsodium/releases/libsodium-1.0.18-stable-msvc.zip unzip libsodium-1.0.18-stable-msvc.zip - - name: Install pre-compiled OpenSSL Win64 + - name: Install pre-compiled OpenSSL 3 Win64 run: | - curl -Lo openssl-1.1.1j.zip https://github.com/neodiX42/precompiled-openssl-win64/raw/main/openssl-1.1.1j.zip - jar xf openssl-1.1.1j.zip + curl -Lo openssl-3.1.4.zip https://github.com/neodiX42/precompiled-openssl-win64/raw/main/openssl-3.1.4.zip + unzip openssl-3.1.4.zip - name: Install pre-compiled libmicrohttpd Win64 run: | @@ -72,8 +72,13 @@ jobs: echo %SODIUM_DIR% mkdir build cd build - cmake -DCMAKE_BUILD_TYPE=Release -DSODIUM_USE_STATIC_LIBS=1 -DSECP256K1_INCLUDE_DIR=%root%\secp256k1\include -DSECP256K1_LIBRARY=%root%\secp256k1\bin\x64\Release\v142\static\secp256k1.lib -DREADLINE_INCLUDE_DIR=%root%\readline-5.0-1-lib\include\readline -DREADLINE_LIBRARY=%root%\readline-5.0-1-lib\lib\readline.lib -DPORTABLE=1 -DZLIB_FOUND=1 -DMHD_FOUND=1 -DMHD_LIBRARY=%root%\libmicrohttpd-0.9.77-w32-bin\x86_64\VS2019\Release-static\libmicrohttpd.lib -DMHD_INCLUDE_DIR=%root%\libmicrohttpd-0.9.77-w32-bin\x86_64\VS2019\Release-static -DZLIB_INCLUDE_DIR=%root%\zlib -DZLIB_LIBRARY=%root%\zlib\contrib\vstudio\vc14\x64\ZlibStatReleaseWithoutAsm\zlibstat.lib -DOPENSSL_FOUND=1 -DOPENSSL_INCLUDE_DIR=%root%/openssl-1.1.1j/include -DOPENSSL_CRYPTO_LIBRARY=%root%/openssl-1.1.1j/lib/libcrypto_static.lib -DCMAKE_CXX_FLAGS="/DTD_WINDOWS=1 /EHsc /bigobj /W0" .. - cmake --build . --target storage-daemon storage-daemon-cli blockchain-explorer fift func tonlib tonlibjson tonlib-cli validator-engine lite-client pow-miner validator-engine-console generate-random-id json2tlo dht-server http-proxy rldp-http-proxy adnl-proxy create-state create-hardfork emulator --config Release + cmake -DSODIUM_USE_STATIC_LIBS=1 -DSECP256K1_INCLUDE_DIR=%root%\secp256k1\include -DSECP256K1_LIBRARY=%root%\secp256k1\bin\x64\Release\v142\static\secp256k1.lib -DREADLINE_INCLUDE_DIR=%root%\readline-5.0-1-lib\include\readline -DREADLINE_LIBRARY=%root%\readline-5.0-1-lib\lib\readline.lib -DPORTABLE=1 -DZLIB_FOUND=1 -DMHD_FOUND=1 -DMHD_LIBRARY=%root%\libmicrohttpd-0.9.77-w32-bin\x86_64\VS2019\Release-static\libmicrohttpd.lib -DMHD_INCLUDE_DIR=%root%\libmicrohttpd-0.9.77-w32-bin\x86_64\VS2019\Release-static -DZLIB_INCLUDE_DIR=%root%\zlib -DZLIB_LIBRARY=%root%\zlib\contrib\vstudio\vc14\x64\ZlibStatReleaseWithoutAsm\zlibstat.lib -DOPENSSL_FOUND=1 -DOPENSSL_INCLUDE_DIR=%root%/openssl-3.1.4/x64/include -DOPENSSL_CRYPTO_LIBRARY=%root%/openssl-3.1.4/x64/lib/libcrypto_static.lib -DCMAKE_CXX_FLAGS="/DTD_WINDOWS=1 /EHsc /bigobj /W0" .. + cmake --build . --config Release --target storage-daemon storage-daemon-cli blockchain-explorer fift func tonlib tonlibjson tonlib-cli validator-engine lite-client pow-miner validator-engine-console generate-random-id json2tlo dht-server http-proxy rldp-http-proxy adnl-proxy create-state create-hardfork emulator test-ed25519 test-ed25519-crypto test-bigint test-vm test-fift test-cells test-smartcont test-net test-tdactor test-tdutils test-tonlib-offline test-adnl test-dht test-rldp test-rldp2 test-catchain test-fec test-tddb test-db test-validator-session-state + + - name: Run tests + run: | + cd build + ctest -C Release --output-on-failure -E "test-catchain|test-actors|test-validator-session-state" - name: Show executables run: | diff --git a/CMakeLists.txt b/CMakeLists.txt index 4b6f0dc9f..c6d7ed87a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.1 FATAL_ERROR) +cmake_minimum_required(VERSION 3.5 FATAL_ERROR) project(TON VERSION 0.5 LANGUAGES C CXX) set(CMAKE_POSITION_INDEPENDENT_CODE ON) @@ -79,7 +79,7 @@ else() set(HAVE_SSE42 FALSE) endif() -set(CMAKE_CXX_STANDARD 14) +set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED TRUE) set(CMAKE_CXX_EXTENSIONS FALSE) @@ -255,6 +255,9 @@ if (MSVC) add_definitions(-D_SCL_SECURE_NO_WARNINGS -D_CRT_SECURE_NO_WARNINGS) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP /W4 /wd4100 /wd4127 /wd4324 /wd4456 /wd4457 /wd4458 /wd4505 /wd4702") elseif (CLANG OR GCC) + if (GCC) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fstrong-eval-order=some") + endif() set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-omit-frame-pointer") if (APPLE) #use "-Wl,-exported_symbols_list,${CMAKE_CURRENT_SOURCE_DIR}/export_list" for exported symbols @@ -447,6 +450,10 @@ target_link_libraries(test-smartcont PRIVATE smc-envelope fift-lib ton_db) add_executable(test-bigint ${BIGINT_TEST_SOURCE}) target_link_libraries(test-bigint PRIVATE ton_crypto) +if (WINGETOPT_FOUND) + target_link_libraries_system(test-bigint wingetopt) +endif() + add_executable(test-cells test/test-td-main.cpp ${CELLS_TEST_SOURCE}) target_link_libraries(test-cells PRIVATE ton_crypto) @@ -513,26 +520,12 @@ target_link_libraries(test-rldp2 adnl adnltest dht rldp2 tl_api) add_executable(test-validator-session-state test/test-validator-session-state.cpp) target_link_libraries(test-validator-session-state adnl dht rldp validatorsession tl_api) -#add_executable(test-node test/test-node.cpp) -#target_link_libraries(test-node overlay tdutils tdactor adnl tl_api dht -# catchain validatorsession) - add_executable(test-catchain test/test-catchain.cpp) target_link_libraries(test-catchain overlay tdutils tdactor adnl adnltest rldp tl_api dht catchain ) -#add_executable(test-validator-session test/test-validator-session.cpp) -#target_link_libraries(test-validator-session overlay tdutils tdactor adnl tl_api dht -# catchain validatorsession) add_executable(test-ton-collator test/test-ton-collator.cpp) target_link_libraries(test-ton-collator overlay tdutils tdactor adnl tl_api dht catchain validatorsession validator-disk ton_validator validator-disk ) -#add_executable(test-validator test/test-validator.cpp) -#target_link_libraries(test-validator overlay tdutils tdactor adnl tl_api dht -# rldp catchain validatorsession ton-node validator ton_validator validator memprof ${JEMALLOC_LIBRARIES}) -#add_executable(test-ext-server test/test-ext-server.cpp) -#target_link_libraries(test-ext-server tdutils tdactor adnl tl_api dht ) -#add_executable(test-ext-client test/test-ext-client.cpp) -#target_link_libraries(test-ext-client tdutils tdactor adnl tl_api tl-lite-utils) add_executable(test-http test/test-http.cpp) target_link_libraries(test-http PRIVATE tonhttp) @@ -574,13 +567,53 @@ add_test(test-tdutils test-tdutils) add_test(test-tonlib-offline test-tonlib-offline) #END tonlib +# FunC tests +if (NOT NIX) + if (MSVC) + set(PYTHON_VER "python") + else() + set(PYTHON_VER "python3") + endif() + add_test( + NAME test-func + COMMAND ${PYTHON_VER} run_tests.py tests/ + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/crypto/func/auto-tests) + if (WIN32) + set_property(TEST test-func PROPERTY ENVIRONMENT + "FUNC_EXECUTABLE=${CMAKE_CURRENT_BINARY_DIR}/crypto/Release/func.exe" + "FIFT_EXECUTABLE=${CMAKE_CURRENT_BINARY_DIR}/crypto/Release/fift.exe" + "FIFTPATH=${CMAKE_CURRENT_SOURCE_DIR}/crypto/fift/lib/") + else() + set_property(TEST test-func PROPERTY ENVIRONMENT + "FUNC_EXECUTABLE=${CMAKE_CURRENT_BINARY_DIR}/crypto/func" + "FIFT_EXECUTABLE=${CMAKE_CURRENT_BINARY_DIR}/crypto/fift" + "FIFTPATH=${CMAKE_CURRENT_SOURCE_DIR}/crypto/fift/lib/") + endif() + + add_test( + NAME test-func-legacy + COMMAND ${PYTHON_VER} legacy_tester.py + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/crypto/func/auto-tests) + if (WIN32) + set_property(TEST test-func-legacy PROPERTY ENVIRONMENT + "FUNC_EXECUTABLE=${CMAKE_CURRENT_BINARY_DIR}/crypto/Release/func.exe" + "FIFT_EXECUTABLE=${CMAKE_CURRENT_BINARY_DIR}/crypto/Release/fift.exe" + "FIFTPATH=${CMAKE_CURRENT_SOURCE_DIR}/crypto/fift/lib/") + else() + set_property(TEST test-func-legacy PROPERTY ENVIRONMENT + "FUNC_EXECUTABLE=${CMAKE_CURRENT_BINARY_DIR}/crypto/func" + "FIFT_EXECUTABLE=${CMAKE_CURRENT_BINARY_DIR}/crypto/fift" + "FIFTPATH=${CMAKE_CURRENT_SOURCE_DIR}/crypto/fift/lib/") + endif() +endif() + #BEGIN internal if (NOT TON_ONLY_TONLIB) add_test(test-adnl test-adnl) add_test(test-dht test-dht) add_test(test-rldp test-rldp) add_test(test-rldp2 test-rldp2) -#add_test(test-validator-session-state test-validator-session-state) +add_test(test-validator-session-state test-validator-session-state) add_test(test-catchain test-catchain) add_test(test-fec test-fec) diff --git a/README.md b/README.md index 6bc3b1f50..12d051905 100644 --- a/README.md +++ b/README.md @@ -66,3 +66,8 @@ If a CI workflow fails not because of your changes but workflow issues, try to f * **C/C++ CI (ccpp-linux.yml)**: TBD * **C/C++ CI Win64 Compile (ccpp-win64.yml)**: TBD + + +## Running tests + +Tests are executed by running `ctest` in the build directory. \ No newline at end of file diff --git a/adnl/CMakeLists.txt b/adnl/CMakeLists.txt index b287cba06..217a96247 100644 --- a/adnl/CMakeLists.txt +++ b/adnl/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.0.2 FATAL_ERROR) +cmake_minimum_required(VERSION 3.5 FATAL_ERROR) #BEGIN internal if (NOT TON_ONLY_TONLIB) diff --git a/blockchain-explorer/CMakeLists.txt b/blockchain-explorer/CMakeLists.txt index 11328a7a3..fc94e7093 100644 --- a/blockchain-explorer/CMakeLists.txt +++ b/blockchain-explorer/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.0.2 FATAL_ERROR) +cmake_minimum_required(VERSION 3.5 FATAL_ERROR) option(NIX "Use \"ON\" for a static build." OFF) diff --git a/blockchain-explorer/blockchain-explorer.cpp b/blockchain-explorer/blockchain-explorer.cpp index 035b84ea7..bf41b31f8 100644 --- a/blockchain-explorer/blockchain-explorer.cpp +++ b/blockchain-explorer/blockchain-explorer.cpp @@ -52,7 +52,7 @@ #include "vm/boc.h" #include "vm/cellops.h" #include "vm/cells/MerkleProof.h" -#include "vm/cp0.h" +#include "vm/vm.h" #include "auto/tl/lite_api.h" #include "ton/lite-tl.hpp" @@ -654,7 +654,7 @@ int main(int argc, char* argv[]) { }); #endif - vm::init_op_cp0(); + vm::init_vm().ensure(); td::actor::Scheduler scheduler({2}); scheduler_ptr = &scheduler; diff --git a/catchain/CMakeLists.txt b/catchain/CMakeLists.txt index a57d37882..8ab9525da 100644 --- a/catchain/CMakeLists.txt +++ b/catchain/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.0.2 FATAL_ERROR) +cmake_minimum_required(VERSION 3.5 FATAL_ERROR) if (NOT OPENSSL_FOUND) find_package(OpenSSL REQUIRED) diff --git a/common/CMakeLists.txt b/common/CMakeLists.txt index 96d92371a..88a3671b3 100644 --- a/common/CMakeLists.txt +++ b/common/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.0.2 FATAL_ERROR) +cmake_minimum_required(VERSION 3.5 FATAL_ERROR) set(COMMON_SOURCE checksum.h diff --git a/create-hardfork/CMakeLists.txt b/create-hardfork/CMakeLists.txt index 3d78c118b..41b94b523 100644 --- a/create-hardfork/CMakeLists.txt +++ b/create-hardfork/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.0.2 FATAL_ERROR) +cmake_minimum_required(VERSION 3.5 FATAL_ERROR) if (NOT OPENSSL_FOUND) find_package(OpenSSL REQUIRED) diff --git a/create-hardfork/create-hardfork.cpp b/create-hardfork/create-hardfork.cpp index 15533768d..5f0b93bed 100644 --- a/create-hardfork/create-hardfork.cpp +++ b/create-hardfork/create-hardfork.cpp @@ -49,7 +49,7 @@ #include "validator/fabric.h" #include "validator/impl/collator.h" -#include "crypto/vm/cp0.h" +#include "crypto/vm/vm.h" #include "crypto/block/block-db.h" #include "common/errorlog.h" @@ -307,7 +307,7 @@ int main(int argc, char *argv[]) { SET_VERBOSITY_LEVEL(verbosity_INFO); td::set_default_failure_signal_handler().ensure(); - CHECK(vm::init_op_cp0()); + vm::init_vm().ensure(); td::actor::ActorOwn x; diff --git a/crypto/CMakeLists.txt b/crypto/CMakeLists.txt index 9f7a0a5a7..62b0d2161 100644 --- a/crypto/CMakeLists.txt +++ b/crypto/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.0.2 FATAL_ERROR) +cmake_minimum_required(VERSION 3.5 FATAL_ERROR) if (NOT OPENSSL_FOUND) find_package(OpenSSL REQUIRED) diff --git a/crypto/block/transaction.cpp b/crypto/block/transaction.cpp index 0c77317fa..9df5be132 100644 --- a/crypto/block/transaction.cpp +++ b/crypto/block/transaction.cpp @@ -28,9 +28,20 @@ #include "td/utils/Timer.h" namespace { +/** + * Logger that stores the tail of log messages. + * + * @param max_size The size of the buffer. Default is 256. + */ class StringLoggerTail : public td::LogInterface { public: explicit StringLoggerTail(size_t max_size = 256) : buf(max_size, '\0') {} + + /** + * Appends a slice of data to the buffer. + * + * @param slice The slice of data to be appended. + */ void append(td::CSlice slice) override { if (slice.size() > buf.size()) { slice.remove_prefix(slice.size() - buf.size()); @@ -46,6 +57,12 @@ class StringLoggerTail : public td::LogInterface { slice.remove_prefix(s); } } + + /** + * Retrieves the tail of the log. + * + * @returns The log as std::string. + */ std::string get_log() const { if (truncated) { std::string res = buf; @@ -55,6 +72,7 @@ class StringLoggerTail : public td::LogInterface { return buf.substr(0, pos); } } + private: std::string buf; size_t pos = 0; @@ -65,6 +83,13 @@ class StringLoggerTail : public td::LogInterface { namespace block { using td::Ref; +/** + * Looks up a library among public libraries. + * + * @param key A constant bit pointer representing the key of the library to lookup. + * + * @returns A reference to the library cell if found, null otherwise. + */ Ref ComputePhaseConfig::lookup_library(td::ConstBitPtr key) const { return libraries ? vm::lookup_library_in(key, libraries->get_root_cell()) : Ref{}; } @@ -75,12 +100,27 @@ Ref ComputePhaseConfig::lookup_library(td::ConstBitPtr key) const { * */ +/** + * Sets the address of the account. + * + * @param wc The workchain ID of the account. + * @param new_addr The new address of the account. + * + * @returns True if the address was successfully set, false otherwise. + */ bool Account::set_address(ton::WorkchainId wc, td::ConstBitPtr new_addr) { workchain = wc; addr = new_addr; return true; } +/** + * Sets the split depth of the account. + * + * @param new_split_depth The new split depth value to be set. + * + * @returns True if the split depth was successfully set, False otherwise. + */ bool Account::set_split_depth(int new_split_depth) { if (new_split_depth < 0 || new_split_depth > 30) { return false; // invalid value for split_depth @@ -94,11 +134,26 @@ bool Account::set_split_depth(int new_split_depth) { } } +/** + * Checks if the given split depth is valid for the Account. + * + * @param split_depth The split depth to be checked. + * + * @returns True if the split depth is valid, False otherwise. + */ bool Account::check_split_depth(int split_depth) const { return split_depth_set_ ? (split_depth == split_depth_) : (split_depth >= 0 && split_depth <= 30); } -// initializes split_depth and addr_rewrite +/** + * Parses anycast data of the account address. + * + * Initializes split_depth and addr_rewrite. + * + * @param cs The cell slice containing partially-parsed account addressa. + * + * @returns True if parsing was successful, false otherwise. + */ bool Account::parse_maybe_anycast(vm::CellSlice& cs) { int t = (int)cs.fetch_ulong(1); if (t < 0) { @@ -113,6 +168,13 @@ bool Account::parse_maybe_anycast(vm::CellSlice& cs) { && set_split_depth(depth); } +/** + * Stores the anycast information to a serialized account address. + * + * @param cb The vm::CellBuilder object to store the information in. + * + * @returns True if the anycast information was successfully stored, false otherwise. + */ bool Account::store_maybe_anycast(vm::CellBuilder& cb) const { if (!split_depth_set_ || !split_depth_) { return cb.store_bool_bool(false); @@ -122,6 +184,13 @@ bool Account::store_maybe_anycast(vm::CellBuilder& cb) const { && cb.store_bits_bool(addr_rewrite.cbits(), split_depth_); // rewrite_pfx:(bits depth) } +/** + * Unpacks the address from a given CellSlice. + * + * @param addr_cs The CellSlice containing the address. + * + * @returns True if the address was successfully unpacked, False otherwise. + */ bool Account::unpack_address(vm::CellSlice& addr_cs) { int addr_tag = block::gen::t_MsgAddressInt.get_tag(addr_cs); int new_wc = ton::workchainInvalid; @@ -172,6 +241,15 @@ bool Account::unpack_address(vm::CellSlice& addr_cs) { return true; } +/** + * Unpacks storage information from a CellSlice. + * + * Storage information is serialized using StorageInfo TLB-scheme. + * + * @param cs The CellSlice containing the storage information. + * + * @returns True if the unpacking is successful, false otherwise. + */ bool Account::unpack_storage_info(vm::CellSlice& cs) { block::gen::StorageInfo::Record info; block::gen::StorageUsed::Record used; @@ -198,7 +276,16 @@ bool Account::unpack_storage_info(vm::CellSlice& cs) { return (u != std::numeric_limits::max()); } -// initializes split_depth (from account state - StateInit) +/** + * Unpacks the state of an Account from a CellSlice. + * + * State is serialized using StateInit TLB-scheme. + * Initializes split_depth (from account state - StateInit) + * + * @param cs The CellSlice containing the serialized state. + * + * @returns True if the state was successfully unpacked, False otherwise. + */ bool Account::unpack_state(vm::CellSlice& cs) { block::gen::StateInit::Record state; if (!tlb::unpack_exact(cs, state)) { @@ -226,6 +313,13 @@ bool Account::unpack_state(vm::CellSlice& cs) { return true; } +/** + * Computes the address of the account. + * + * @param force If set to true, the address will be recomputed even if it already exists. + * + * @returns True if the address was successfully computed, false otherwise. + */ bool Account::compute_my_addr(bool force) { if (!force && my_addr.not_null() && my_addr_exact.not_null()) { return true; @@ -266,6 +360,15 @@ bool Account::compute_my_addr(bool force) { return true; } +/** + * Computes the address of the Account. + * + * @param tmp_addr A reference to the CellSlice for the result. + * @param split_depth The split depth for the address. + * @param orig_addr_rewrite Address prefox of length split_depth. + * + * @returns True if the address was successfully computed, false otherwise. + */ bool Account::recompute_tmp_addr(Ref& tmp_addr, int split_depth, td::ConstBitPtr orig_addr_rewrite) const { if (!split_depth && my_addr_exact.not_null()) { @@ -307,6 +410,14 @@ bool Account::recompute_tmp_addr(Ref& tmp_addr, int split_depth, (tmp_addr = vm::load_cell_slice_ref(std::move(cell))).not_null(); } +/** + * Sets address rewriting info for a newly-activated account. + * + * @param split_depth The split depth for the account address. + * @param orig_addr_rewrite Address frepix of length split_depth. + * + * @returns True if the rewriting info was successfully set, false otherwise. + */ bool Account::init_rewrite_addr(int split_depth, td::ConstBitPtr orig_addr_rewrite) { if (split_depth_set_ || !set_split_depth(split_depth)) { return false; @@ -317,8 +428,18 @@ bool Account::init_rewrite_addr(int split_depth, td::ConstBitPtr orig_addr_rewri return compute_my_addr(true); } -// used to unpack previously existing accounts -bool Account::unpack(Ref shard_account, Ref extra, ton::UnixTime now, bool special) { +/** + * Unpacks the account information from the provided CellSlice. + * + * Used to unpack previously existing accounts. + * + * @param shard_account The ShardAccount to unpack. + * @param now The current Unix time. + * @param special Flag indicating if the account is special. + * + * @returns True if the unpacking is successful, false otherwise. + */ +bool Account::unpack(Ref shard_account, ton::UnixTime now, bool special) { LOG(DEBUG) << "unpacking " << (special ? "special " : "") << "account " << addr.to_hex(); if (shard_account.is_null()) { LOG(ERROR) << "account " << addr.to_hex() << " does not have a valid ShardAccount to unpack"; @@ -386,7 +507,13 @@ bool Account::unpack(Ref shard_account, Ref extra, return true; } -// used to initialize new accounts +/** + * Initializes a new Account object. + * + * @param now The current Unix time. + * + * @returns True if the initialization is successful, false otherwise. + */ bool Account::init_new(ton::UnixTime now) { // only workchain and addr are initialized at this point if (workchain == ton::workchainInvalid) { @@ -429,6 +556,11 @@ bool Account::init_new(ton::UnixTime now) { return true; } +/** + * Resets the split depth of the account. + * + * @returns True if the split depth was successfully reset, false otherwise. + */ bool Account::forget_split_depth() { split_depth_set_ = false; split_depth_ = 0; @@ -438,6 +570,11 @@ bool Account::forget_split_depth() { return true; } +/** + * Deactivates the account. + * + * @returns True if the account was successfully deactivated, false otherwise. + */ bool Account::deactivate() { if (status == acc_active) { return false; @@ -461,10 +598,26 @@ bool Account::deactivate() { return true; } +/** + * Checks if the account belongs to a specific shard. + * + * @param shard The shard to check against. + * + * @returns True if the account belongs to the shard, False otherwise. + */ bool Account::belongs_to_shard(ton::ShardIdFull shard) const { return workchain == shard.workchain && ton::shard_is_ancestor(shard.shard, addr); } +/** + * Adds the partial storage payment to the total sum. + * + * @param payment The total sum to be updated. + * @param delta The time delta for which the payment is calculated. + * @param prices The storage prices. + * @param storage Account storage statistics. + * @param is_mc A flag indicating whether the account is in the masterchain. + */ void add_partial_storage_payment(td::BigInt256& payment, ton::UnixTime delta, const block::StoragePrices& prices, const vm::CellStorageStat& storage, bool is_mc) { td::BigInt256 c{(long long)storage.cells}, b{(long long)storage.bits}; @@ -483,6 +636,18 @@ void add_partial_storage_payment(td::BigInt256& payment, ton::UnixTime delta, co payment += b; } +/** + * Computes the storage fees based on the given parameters. + * + * @param now The current Unix time. + * @param pricing The vector of storage prices. + * @param storage_stat Account storage statistics. + * @param last_paid The Unix time when the last payment was made. + * @param is_special A flag indicating if the account is special. + * @param is_masterchain A flag indicating if the account is in the masterchain. + * + * @returns The computed storage fees as RefInt256. + */ td::RefInt256 StoragePrices::compute_storage_fees(ton::UnixTime now, const std::vector& pricing, const vm::CellStorageStat& storage_stat, ton::UnixTime last_paid, bool is_special, bool is_masterchain) { @@ -509,11 +674,30 @@ td::RefInt256 StoragePrices::compute_storage_fees(ton::UnixTime now, const std:: return td::rshift(total, 16, 1); // divide by 2^16 with ceil rounding to obtain nanograms } +/** + * Computes the storage fees for the account. + * + * @param now The current Unix time. + * @param pricing The vector of storage prices. + * + * @returns The computed storage fees as RefInt256. + */ td::RefInt256 Account::compute_storage_fees(ton::UnixTime now, const std::vector& pricing) const { return StoragePrices::compute_storage_fees(now, pricing, storage_stat, last_paid, is_special, is_masterchain()); } namespace transaction { +/** + * Constructs a new Transaction object. + * + * @param _account The Account object. + * @param ttype The type of the transaction (see transaction.cpp#309). + * @param req_start_lt The minimal logical time of the transaction. + * @param _now The current Unix time. + * @param _inmsg The input message that caused the transaction. + * + * @returns None + */ Transaction::Transaction(const Account& _account, int ttype, ton::LogicalTime req_start_lt, ton::UnixTime _now, Ref _inmsg) : trans_type(ttype) @@ -540,6 +724,14 @@ Transaction::Transaction(const Account& _account, int ttype, ton::LogicalTime re } } +/** + * Unpacks the input message of a transaction. + * + * @param ihr_delivered A boolean indicating whether the message was delivered using IHR (Instant Hypercube Routing). + * @param cfg Action phase configuration. + * + * @returns A boolean indicating whether the unpacking was successful. + */ bool Transaction::unpack_input_msg(bool ihr_delivered, const ActionPhaseConfig* cfg) { if (in_msg.is_null() || in_msg_type) { return false; @@ -680,6 +872,15 @@ bool Transaction::unpack_input_msg(bool ihr_delivered, const ActionPhaseConfig* return true; } +/** + * Prepares the storage phase of a transaction. + * + * @param cfg The configuration for the storage phase. + * @param force_collect Flag indicating whether to collect fees for frozen accounts. + * @param adjust_msg_value Flag indicating whether to adjust the message value if the account balance becomes less than the message balance. + * + * @returns True if the storage phase was successfully prepared, false otherwise. + */ bool Transaction::prepare_storage_phase(const StoragePhaseConfig& cfg, bool force_collect, bool adjust_msg_value) { if (now < account.last_paid) { return false; @@ -743,12 +944,21 @@ bool Transaction::prepare_storage_phase(const StoragePhaseConfig& cfg, bool forc return true; } +/** + * Prepares the credit phase of a transaction. + * + * This function creates a CreditPhase object and performs the necessary calculations + * to determine the amount to be credited in the credit phase. It updates the due payment, + * credit, balance, and total fees accordingly. + * + * @returns True if the credit phase is prepared successfully, false otherwise. + */ bool Transaction::prepare_credit_phase() { credit_phase = std::make_unique(); - auto collected = std::min(msg_balance_remaining.grams, due_payment); - credit_phase->due_fees_collected = collected; - due_payment -= collected; - credit_phase->credit = msg_balance_remaining -= collected; + // auto collected = std::min(msg_balance_remaining.grams, due_payment); + // credit_phase->due_fees_collected = collected; + // due_payment -= collected; + // credit_phase->credit = msg_balance_remaining -= collected; if (!msg_balance_remaining.is_valid()) { LOG(ERROR) << "cannot compute the amount to be credited in the credit phase of transaction"; return false; @@ -759,17 +969,35 @@ bool Transaction::prepare_credit_phase() { LOG(ERROR) << "cannot credit currency collection to account"; return false; } - total_fees += std::move(collected); + // total_fees += std::move(collected); return true; } } // namespace transaction +/** + * Parses the gas limits and prices from a given cell. + * + * @param cell The cell containing the gas limits and prices serialized using GasLimitsPricing TLB-scheme. + * @param freeze_due_limit Reference to store the freeze due limit. + * @param delete_due_limit Reference to store the delete due limit. + * + * @returns True if the parsing is successful, false otherwise. + */ bool ComputePhaseConfig::parse_GasLimitsPrices(Ref cell, td::RefInt256& freeze_due_limit, td::RefInt256& delete_due_limit) { return cell.not_null() && parse_GasLimitsPrices(vm::load_cell_slice_ref(std::move(cell)), freeze_due_limit, delete_due_limit); } +/** + * Parses the gas limits and prices from a given cell slice. + * + * @param cs The cell slice containing the gas limits and prices serialized using GasLimitsPricing TLB-scheme. + * @param freeze_due_limit Reference to store the freeze due limit. + * @param delete_due_limit Reference to store the delete due limit. + * + * @returns True if the parsing is successful, false otherwise. + */ bool ComputePhaseConfig::parse_GasLimitsPrices(Ref cs, td::RefInt256& freeze_due_limit, td::RefInt256& delete_due_limit) { if (cs.is_null()) { @@ -784,6 +1012,17 @@ bool ComputePhaseConfig::parse_GasLimitsPrices(Ref cs, td::RefInt } } +/** + * Parses the gas limits and prices from a gas limits and prices record. + * + * @param cs The cell slice containing the gas limits and prices serialized using GasLimitsPricing TLB-scheme. + * @param freeze_due_limit A reference to store the freeze due limit. + * @param delete_due_limit A reference to store the delete due limit. + * @param _flat_gas_limit The flat gas limit. + * @param _flat_gas_price The flat gas price. + * + * @returns True if the parsing is successful, false otherwise. + */ bool ComputePhaseConfig::parse_GasLimitsPrices_internal(Ref cs, td::RefInt256& freeze_due_limit, td::RefInt256& delete_due_limit, td::uint64 _flat_gas_limit, td::uint64 _flat_gas_price) { @@ -812,6 +1051,14 @@ bool ComputePhaseConfig::parse_GasLimitsPrices_internal(Ref cs, t return true; } +/** + * Checks if an address is suspended according to the ConfigParam(44). + * + * @param wc The workchain ID. + * @param addr The account address address. + * + * @returns True if the address is suspended, False otherwise. + */ bool ComputePhaseConfig::is_address_suspended(ton::WorkchainId wc, td::Bits256 addr) const { if (!suspended_addresses) { return false; @@ -826,6 +1073,11 @@ bool ComputePhaseConfig::is_address_suspended(ton::WorkchainId wc, td::Bits256 a } } +/** + * Computes the maximum for gas fee based on the gas prices and limits. + * + * Updates max_gas_threshold. + */ void ComputePhaseConfig::compute_threshold() { gas_price256 = td::make_refint(gas_price); if (gas_limit > flat_gas_limit) { @@ -836,6 +1088,13 @@ void ComputePhaseConfig::compute_threshold() { } } +/** + * Computes the amount of gas that can be bought for a given amount of nanograms. + * + * @param nanograms The amount of nanograms to compute gas for. + * + * @returns The amount of gas. + */ td::uint64 ComputePhaseConfig::gas_bought_for(td::RefInt256 nanograms) const { if (nanograms.is_null() || sgn(nanograms) < 0) { return 0; @@ -850,12 +1109,27 @@ td::uint64 ComputePhaseConfig::gas_bought_for(td::RefInt256 nanograms) const { return res->to_long() + flat_gas_limit; } +/** + * Computes the gas price. + * + * @param gas_used The amount of gas used. + * + * @returns The computed gas price. + */ td::RefInt256 ComputePhaseConfig::compute_gas_price(td::uint64 gas_used) const { return gas_used <= flat_gas_limit ? td::make_refint(flat_gas_price) : td::rshift(gas_price256 * (gas_used - flat_gas_limit), 16, 1) + flat_gas_price; } namespace transaction { +/** + * Computes the gas limits for a transaction. + * + * @param cp The ComputePhase object to store the computed gas limits. + * @param cfg The compute phase configuration. + * + * @returns True if the gas limits were successfully computed, false otherwise. + */ bool Transaction::compute_gas_limits(ComputePhase& cp, const ComputePhaseConfig& cfg) { // Compute gas limits if (account.is_special) { @@ -880,6 +1154,14 @@ bool Transaction::compute_gas_limits(ComputePhase& cp, const ComputePhaseConfig& return true; } +/** + * Prepares a TVM stack for a transaction. + * + * @param cp The compute phase object. + * + * @returns A reference to the prepared virtual machine stack. + * Returns an empty reference if the transaction type is invalid. + */ Ref Transaction::prepare_vm_stack(ComputePhase& cp) { Ref stack_ref{true}; td::RefInt256 acc_addr{true}; @@ -906,6 +1188,14 @@ Ref Transaction::prepare_vm_stack(ComputePhase& cp) { } } +/** + * Prepares a random seed for a transaction. + * + * @param rand_seed The output random seed. + * @param cfg The configuration for the compute phase. + * + * @returns True if the random seed was successfully prepared, false otherwise. + */ bool Transaction::prepare_rand_seed(td::BitArray<256>& rand_seed, const ComputePhaseConfig& cfg) const { // we might use SHA256(block_rand_seed . addr . trans_lt) // instead, we use SHA256(block_rand_seed . addr) @@ -918,6 +1208,15 @@ bool Transaction::prepare_rand_seed(td::BitArray<256>& rand_seed, const ComputeP return true; } +/** + * Prepares the c7 tuple (virtual machine context) for a compute phase of a transaction. + * + * @param cfg The configuration for the compute phase. + * + * @returns A reference to a Tuple object. + * + * @throws CollatorError if the rand_seed cannot be computed for the transaction. + */ Ref Transaction::prepare_vm_c7(const ComputePhaseConfig& cfg) const { td::BitArray<256> rand_seed; td::RefInt256 rand_seed_int{true}; @@ -947,10 +1246,15 @@ Ref Transaction::prepare_vm_c7(const ComputePhaseConfig& cfg) const { } tuple.push_back(storage_phase->fees_collected); // storage_fees:Integer - // See crypto/block/mc-config.cpp#2115 (get_prev_blocks_info) + // See crypto/block/mc-config.cpp#2223 (get_prev_blocks_info) // [ wc:Integer shard:Integer seqno:Integer root_hash:Integer file_hash:Integer] = BlockId; // [ last_mc_blocks:[BlockId...] // prev_key_block:BlockId ] : PrevBlocksInfo + // The only context where PrevBlocksInfo (13 parameter of c7) is null is inside emulator + // where it need to be set via transaction_emulator_set_prev_blocks_info (see emulator/emulator-extern.cpp) + // Inside validator, collator and liteserver checking external message contexts + // prev_blocks_info is always not null, since get_prev_blocks_info() + // may only return tuple or raise Error (See crypto/block/mc-config.cpp#2223) tuple.push_back(cfg.prev_blocks_info.not_null() ? vm::StackEntry(cfg.prev_blocks_info) : vm::StackEntry()); } auto tuple_ref = td::make_cnt_ref>(std::move(tuple)); @@ -958,6 +1262,13 @@ Ref Transaction::prepare_vm_c7(const ComputePhaseConfig& cfg) const { return vm::make_tuple_ref(std::move(tuple_ref)); } +/** + * Computes the number of output actions in a list. + * + * @param list c5 cell. + * + * @returns The number of output actions. + */ int output_actions_count(Ref list) { int i = -1; do { @@ -972,6 +1283,13 @@ int output_actions_count(Ref list) { return i; } +/** + * Unpacks the message StateInit. + * + * @param lib_only If true, only unpack libraries from the state. + * + * @returns True if the unpacking is successful, false otherwise. + */ bool Transaction::unpack_msg_state(bool lib_only) { block::gen::StateInit::Record state; if (in_msg_state.is_null() || !tlb::unpack_cell(in_msg_state, state)) { @@ -1002,6 +1320,13 @@ bool Transaction::unpack_msg_state(bool lib_only) { return true; } +/** + * Computes the set of libraries to be used during TVM execution. + * + * @param cfg The configuration for the compute phase. + * + * @returns A vector of hashmaps with libraries. + */ std::vector> Transaction::compute_vm_libraries(const ComputePhaseConfig& cfg) { std::vector> lib_set; if (in_msg_library.not_null()) { @@ -1017,6 +1342,11 @@ std::vector> Transaction::compute_vm_libraries(const ComputePhaseC return lib_set; } +/** + * Checks if the input message StateInit hash corresponds to the account address. + * + * @returns True if the input message state hash is valid, False otherwise. + */ bool Transaction::check_in_msg_state_hash() { CHECK(in_msg_state.not_null()); CHECK(new_split_depth >= 0 && new_split_depth < 32); @@ -1030,6 +1360,13 @@ bool Transaction::check_in_msg_state_hash() { return account.recompute_tmp_addr(my_addr, d, orig_addr_rewrite.bits()); } +/** + * Prepares the compute phase of a transaction, which includes running TVM. + * + * @param cfg The configuration for the compute phase. + * + * @returns True if the compute phase was successfully prepared and executed, false otherwise. + */ bool Transaction::prepare_compute_phase(const ComputePhaseConfig& cfg) { // TODO: add more skip verifications + sometimes use state from in_msg to re-activate // ... @@ -1188,6 +1525,13 @@ bool Transaction::prepare_compute_phase(const ComputePhaseConfig& cfg) { return true; } +/** + * Prepares the action phase of a transaction. + * + * @param cfg The configuration for the action phase. + * + * @returns True if the action phase was prepared successfully, false otherwise. + */ bool Transaction::prepare_action_phase(const ActionPhaseConfig& cfg) { if (!compute_phase || !compute_phase->success) { return false; @@ -1358,6 +1702,15 @@ bool Transaction::prepare_action_phase(const ActionPhaseConfig& cfg) { return true; } +/** + * Tries to set the code for an account. + * + * @param cs The CellSlice containing the action data serialized as action_set_code TLB-scheme. + * @param ap The action phase object. + * @param cfg The action phase configuration. + * + * @returns 0 if the code was successfully set, -1 otherwise. + */ int Transaction::try_action_set_code(vm::CellSlice& cs, ActionPhase& ap, const ActionPhaseConfig& cfg) { block::gen::OutAction::Record_action_set_code rec; if (!tlb::unpack_exact(cs, rec)) { @@ -1369,6 +1722,19 @@ int Transaction::try_action_set_code(vm::CellSlice& cs, ActionPhase& ap, const A return 0; } +/** + * Tries to change the library in the transaction. + * + * @param cs The cell slice containing the action data serialized as action_change_library TLB-scheme. + * @param ap The action phase object. + * @param cfg The action phase configuration. + * + * @returns 0 if the action was successfully performed, + * -1 if there was an error unpacking the data or the mode is invalid, + * 41 if the library reference is required but is null, + * 43 if the number of cells in the library exceeds the limit, + * 42 if there was a VM error during the operation. + */ int Transaction::try_action_change_library(vm::CellSlice& cs, ActionPhase& ap, const ActionPhaseConfig& cfg) { block::gen::OutAction::Record_action_change_library rec; if (!tlb::unpack_exact(cs, rec)) { @@ -1435,9 +1801,18 @@ int Transaction::try_action_change_library(vm::CellSlice& cs, ActionPhase& ap, c } } // namespace transaction -// msg_fwd_fees = (lump_price + ceil((bit_price * msg.bits + cell_price * msg.cells)/2^16)) nanograms -// ihr_fwd_fees = ceil((msg_fwd_fees * ihr_price_factor)/2^16) nanograms -// bits in the root cell of a message are not included in msg.bits (lump_price pays for them) +/** + * Computes the forward fees for a message based on the number of cells and bits. + * + * msg_fwd_fees = (lump_price + ceil((bit_price * msg.bits + cell_price * msg.cells)/2^16)) nanograms + * ihr_fwd_fees = ceil((msg_fwd_fees * ihr_price_factor)/2^16) nanograms + * bits in the root cell of a message are not included in msg.bits (lump_price pays for them) + * + * @param cells The number of cells in the message. + * @param bits The number of bits in the message. + * + * @returns The computed forward fees for the message. + */ td::uint64 MsgPrices::compute_fwd_fees(td::uint64 cells, td::uint64 bits) const { return lump_price + td::uint128(bit_price) .mult(bits) @@ -1447,6 +1822,15 @@ td::uint64 MsgPrices::compute_fwd_fees(td::uint64 cells, td::uint64 bits) const .lo(); } +/** + * Computes the forward fees and IHR fees for a message with the given number of cells and bits. + * + * @param cells The number of cells. + * @param bits The number of bits. + * @param ihr_disabled Flag indicating whether IHR is disabled. + * + * @returns A pair of values representing the forward fees and IHR fees. + */ std::pair MsgPrices::compute_fwd_ihr_fees(td::uint64 cells, td::uint64 bits, bool ihr_disabled) const { td::uint64 fwd = compute_fwd_fees(cells, bits); @@ -1456,19 +1840,47 @@ std::pair MsgPrices::compute_fwd_ihr_fees(td::uint64 cel return std::pair(fwd, td::uint128(fwd).mult(ihr_factor).shr(16).lo()); } +/** + * Computes the part of the fees that go to the total fees of the current block. + * + * @param total The amount of fees. + * + * @returns The the part of the fees that go to the total fees of the current block. + */ td::RefInt256 MsgPrices::get_first_part(td::RefInt256 total) const { return (std::move(total) * first_frac) >> 16; } +/** + * Computes the part of the fees that go to the total fees of the current block. + * + * @param total The amount of fees. + * + * @returns The the part of the fees that go to the total fees of the current block. + */ td::uint64 MsgPrices::get_first_part(td::uint64 total) const { return td::uint128(total).mult(first_frac).shr(16).lo(); } +/** + * Computes the part of the fees that go to the total fees of the transit block. + * + * @param total The amount of fees. + * + * @returns The the part of the fees that go to the total fees of the transit block. + */ td::RefInt256 MsgPrices::get_next_part(td::RefInt256 total) const { return (std::move(total) * next_frac) >> 16; } namespace transaction { +/** + * Checks if the source address is addr_none and replaces is with the account address. + * + * @param src_addr A reference to the source address of the message. + * + * @returns True if the source address is addr_none or is equal to the account address. + */ bool Transaction::check_replace_src_addr(Ref& src_addr) const { int t = (int)src_addr->prefetch_ulong(2); if (!t && src_addr->size_ext() == 2) { @@ -1489,6 +1901,15 @@ bool Transaction::check_replace_src_addr(Ref& src_addr) const { return false; } +/** + * Checks the destination address of a message, rewrites it if it is an anycast address. + * + * @param dest_addr A reference to the destination address of the transaction. + * @param cfg The configuration for the action phase. + * @param is_mc A pointer to a boolean where it will be stored whether the destination is in the masterchain. + * + * @returns True if the destination address is valid, false otherwise. + */ bool Transaction::check_rewrite_dest_addr(Ref& dest_addr, const ActionPhaseConfig& cfg, bool* is_mc) const { if (!dest_addr->prefetch_ulong(1)) { @@ -1595,6 +2016,17 @@ bool Transaction::check_rewrite_dest_addr(Ref& dest_addr, const A return true; } +/** + * Tries to send a message. + * + * @param cs0 The cell slice containing the action data serialized as action_send_msg TLB-scheme. + * @param ap The action phase. + * @param cfg The action phase configuration. + * @param redoing The index of the attempt, starting from 0. On later attempts tries to move message body and StateInit to separate cells. + * + * @returns 0 if the message is successfully sent or if the error may be ignored, error code otherwise. + * Returns -2 if the action should be attempted again. + */ int Transaction::try_action_send_msg(const vm::CellSlice& cs0, ActionPhase& ap, const ActionPhaseConfig& cfg, int redoing) { block::gen::OutAction::Record_action_send_msg act_rec; @@ -1990,6 +2422,15 @@ int Transaction::try_action_send_msg(const vm::CellSlice& cs0, ActionPhase& ap, return 0; } +/** + * Tries to reserve a currency an action phase. + * + * @param cs The cell slice containing the action data serialized as action_reserve_currency TLB-scheme. + * @param ap The action phase. + * @param cfg The action phase configuration. + * + * @returns 0 if the currency is successfully reserved, error code otherwise. + */ int Transaction::try_action_reserve_currency(vm::CellSlice& cs, ActionPhase& ap, const ActionPhaseConfig& cfg) { block::gen::OutAction::Record_action_reserve_currency rec; if (!tlb::unpack_exact(cs, rec)) { @@ -2060,6 +2501,15 @@ int Transaction::try_action_reserve_currency(vm::CellSlice& cs, ActionPhase& ap, return 0; } +/** + * Checks that the new account state fits in the limits. + * + * @param cfg The configuration for the action phase. + * + * @returns A `td::Status` indicating the result of the check. + * - If the state limits are within the allowed range, returns OK. + * - If the state limits exceed the maximum allowed range, returns an error. + */ td::Status Transaction::check_state_limits(const ActionPhaseConfig& cfg) { auto cell_equal = [](const td::Ref& a, const td::Ref& b) -> bool { if (a.is_null()) { @@ -2104,6 +2554,13 @@ td::Status Transaction::check_state_limits(const ActionPhaseConfig& cfg) { : td::Status::Error("state too big"); } +/** + * Prepares the bounce phase of a transaction. + * + * @param cfg The configuration for the action phase. + * + * @returns True if the bounce phase was successfully prepared, false otherwise. + */ bool Transaction::prepare_bounce_phase(const ActionPhaseConfig& cfg) { if (in_msg.is_null() || !bounce_enabled) { return false; @@ -2209,6 +2666,14 @@ bool Transaction::prepare_bounce_phase(const ActionPhaseConfig& cfg) { * */ +/** + * Stores the account status in a CellBuilder object. + * + * @param cb The CellBuilder object to store the account status in. + * @param acc_status The account status to store. + * + * @returns True if the account status was successfully stored, false otherwise. + */ bool Account::store_acc_status(vm::CellBuilder& cb, int acc_status) const { int v; switch (acc_status) { @@ -2231,6 +2696,17 @@ bool Account::store_acc_status(vm::CellBuilder& cb, int acc_status) const { return cb.store_long_bool(v, 2); } +/** + * Tries to update the storage statistics based on the old storage statistics and old account state without fully recomputing it. + * + * It succeeds if only root cell of AccountStorage is changed. + * + * @param old_stat The old storage statistics. + * @param old_cs The old AccountStorage. + * @param new_cell The new AccountStorage. + * + * @returns An optional value of type vm::CellStorageStat. If the update is successful, it returns the new storage statistics. Otherwise, it returns an empty optional. + */ static td::optional try_update_storage_stat(const vm::CellStorageStat& old_stat, td::Ref old_cs, td::Ref new_cell) { @@ -2258,6 +2734,11 @@ static td::optional try_update_storage_stat(const vm::CellS } namespace transaction { +/** + * Computes the new state of the account. + * + * @returns True if the state computation is successful, false otherwise. + */ bool Transaction::compute_state() { if (new_total_state.not_null()) { return true; @@ -2360,6 +2841,13 @@ bool Transaction::compute_state() { return true; } +/** + * Serializes the transaction object using Transaction TLB-scheme. + * + * Updates root. + * + * @returns True if the serialization is successful, False otherwise. + */ bool Transaction::serialize() { if (root.not_null()) { return true; @@ -2462,6 +2950,13 @@ bool Transaction::serialize() { return true; } +/** + * Serializes the storage phase of a transaction. + * + * @param cb The CellBuilder to store the serialized data. + * + * @returns True if the serialization is successful, false otherwise. + */ bool Transaction::serialize_storage_phase(vm::CellBuilder& cb) { if (!storage_phase) { return false; @@ -2485,6 +2980,13 @@ bool Transaction::serialize_storage_phase(vm::CellBuilder& cb) { return ok; } +/** + * Serializes the credit phase of a transaction. + * + * @param cb The CellBuilder to store the serialized data. + * + * @returns True if the credit phase was successfully serialized, false otherwise. + */ bool Transaction::serialize_credit_phase(vm::CellBuilder& cb) { if (!credit_phase) { return false; @@ -2494,6 +2996,13 @@ bool Transaction::serialize_credit_phase(vm::CellBuilder& cb) { return block::store_Maybe_Grams_nz(cb, cp.due_fees_collected) && cp.credit.store(cb); } +/** + * Serializes the compute phase of a transaction. + * + * @param cb The CellBuilder to store the serialized data. + * + * @returns True if the serialization was successful, false otherwise. + */ bool Transaction::serialize_compute_phase(vm::CellBuilder& cb) { if (!compute_phase) { return false; @@ -2536,6 +3045,13 @@ bool Transaction::serialize_compute_phase(vm::CellBuilder& cb) { return ok; } +/** + * Serializes the action phase of a transaction. + * + * @param cb The CellBuilder to store the serialized data. + * + * @returns True if the serialization is successful, false otherwise. + */ bool Transaction::serialize_action_phase(vm::CellBuilder& cb) { if (!action_phase) { return false; @@ -2560,6 +3076,13 @@ bool Transaction::serialize_action_phase(vm::CellBuilder& cb) { return ok; } +/** + * Serializes the bounce phase of a transaction. + * + * @param cb The CellBuilder to store the serialized data. + * + * @returns True if the bounce phase was successfully serialized, false otherwise. + */ bool Transaction::serialize_bounce_phase(vm::CellBuilder& cb) { if (!bounce_phase) { return false; @@ -2580,6 +3103,15 @@ bool Transaction::serialize_bounce_phase(vm::CellBuilder& cb) { } } +/** + * Estimates the block storage profile increment if the transaction is added to the block. + * + * @param store_stat The current storage statistics of the block. + * @param usage_tree The usage tree of the block. + * + * @returns The estimated block storage profile increment. + * Returns Error if the transaction is not serialized or if its new state is not computed. + */ td::Result Transaction::estimate_block_storage_profile_incr( const vm::NewCellStorageStat& store_stat, const vm::CellUsageTree* usage_tree) const { if (root.is_null()) { @@ -2591,26 +3123,14 @@ td::Result Transaction::estimate_block_storage_pro return store_stat.tentative_add_proof(new_total_state, usage_tree) + store_stat.tentative_add_cell(root); } -bool Transaction::update_block_storage_profile(vm::NewCellStorageStat& store_stat, - const vm::CellUsageTree* usage_tree) const { - if (root.is_null() || new_total_state.is_null()) { - return false; - } - store_stat.add_proof(new_total_state, usage_tree); - store_stat.add_cell(root); - return true; -} - -bool Transaction::would_fit(unsigned cls, const block::BlockLimitStatus& blimst) const { - auto res = estimate_block_storage_profile_incr(blimst.st_stat, blimst.limits.usage_tree); - if (res.is_error()) { - LOG(ERROR) << res.move_as_error(); - return false; - } - auto extra = res.move_as_ok(); - return blimst.would_fit(cls, end_lt, gas_used(), &extra); -} - +/** + * Updates the limits status of a block. + * + * @param blimst The block limit status object to update. + * @param with_size Flag indicating whether to update the size limits. + * + * @returns True if the limits were successfully updated, False otherwise. + */ bool Transaction::update_limits(block::BlockLimitStatus& blimst, bool with_size) const { if (!(blimst.update_lt(end_lt) && blimst.update_gas(gas_used()))) { return false; @@ -2628,6 +3148,13 @@ bool Transaction::update_limits(block::BlockLimitStatus& blimst, bool with_size) * */ +/** + * Commits a transaction for a given account. + * + * @param acc The account to commit the transaction for. + * + * @returns A reference to the root cell of the serialized transaction. + */ Ref Transaction::commit(Account& acc) { CHECK(account.last_trans_end_lt_ <= start_lt && start_lt < end_lt); CHECK(root.not_null()); @@ -2672,14 +3199,33 @@ Ref Transaction::commit(Account& acc) { return root; } +/** + * Extracts the output message at the specified index from the transaction. + * + * @param i The index of the output message to extract. + * + * @returns A pair of the logical time and the extracted output message. + */ LtCellRef Transaction::extract_out_msg(unsigned i) { return {start_lt + i + 1, std::move(out_msgs.at(i))}; } +/** + * Extracts the output message at index i from the transaction. + * + * @param i The index of the output message to extract. + * + * @returns A triple of the logical time, the extracted output message and the transaction root. + */ NewOutMsg Transaction::extract_out_msg_ext(unsigned i) { return {start_lt + i + 1, std::move(out_msgs.at(i)), root}; } +/** + * Extracts the outgoing messages from the transaction and adds them to the given list. + * + * @param list The list to which the outgoing messages will be added. + */ void Transaction::extract_out_msgs(std::vector& list) { for (unsigned i = 0; i < out_msgs.size(); i++) { list.emplace_back(start_lt + i + 1, std::move(out_msgs[i])); @@ -2687,10 +3233,23 @@ void Transaction::extract_out_msgs(std::vector& list) { } } // namespace transaction +/** + * Adds a transaction to the account's transaction list. + * + * @param trans_root The root of the transaction cell. + * @param trans_lt The logical time of the transaction. + */ void Account::push_transaction(Ref trans_root, ton::LogicalTime trans_lt) { transactions.emplace_back(trans_lt, std::move(trans_root)); } +/** + * Serializes an account block for the account using AccountBlock TLB-scheme. + * + * @param cb The CellBuilder used to store the serialized data. + * + * @returns True if the account block was successfully created, false otherwise. + */ bool Account::create_account_block(vm::CellBuilder& cb) { if (transactions.empty()) { return false; @@ -2719,6 +3278,11 @@ bool Account::create_account_block(vm::CellBuilder& cb) { && cb.store_ref_bool(cb2.finalize()); // state_update:^(HASH_UPDATE Account) } +/** + * Checks if the libraries stored in the account object have changed. + * + * @returns True if the libraries have changed, False otherwise. + */ bool Account::libraries_changed() const { bool s = orig_library.not_null(); bool t = library.not_null(); @@ -2729,6 +3293,21 @@ bool Account::libraries_changed() const { } } +/** + * Fetches and initializes various configuration parameters from masterchain config for transaction processing. + * + * @param config The masterchain configuration. + * @param old_mparams Pointer to store a dictionary of mandatory parameters (ConfigParam 9). + * @param storage_prices Pointer to store the storage prices. + * @param storage_phase_cfg Pointer to store the storage phase configuration. + * @param rand_seed Pointer to the random seed. Generates a new seed if the value is `td::Bits256::zero()`. + * @param compute_phase_cfg Pointer to store the compute phase configuration. + * @param action_phase_cfg Pointer to store the action phase configuration. + * @param masterchain_create_fee Pointer to store the masterchain create fee. + * @param basechain_create_fee Pointer to store the basechain create fee. + * @param wc The workchain ID. + * @param now The current Unix time. + */ td::Status FetchConfigParams::fetch_config_params( const block::ConfigInfo& config, Ref* old_mparams, std::vector* storage_prices, StoragePhaseConfig* storage_phase_cfg, td::BitArray<256>* rand_seed, ComputePhaseConfig* compute_phase_cfg, @@ -2744,6 +3323,22 @@ td::Status FetchConfigParams::fetch_config_params( basechain_create_fee, wc, now); } +/** + * Fetches and initializes various configuration parameters from masterchain config for transaction processing. + * + * @param config The masterchain configuration. + * @param prev_blocks_info The tuple with information about previous blocks. + * @param old_mparams Pointer to store a dictionary of mandatory parameters (ConfigParam 9). + * @param storage_prices Pointer to store the storage prices. + * @param storage_phase_cfg Pointer to store the storage phase configuration. + * @param rand_seed Pointer to the random seed. Generates a new seed if the value is `td::Bits256::zero()`. + * @param compute_phase_cfg Pointer to store the compute phase configuration. + * @param action_phase_cfg Pointer to store the action phase configuration. + * @param masterchain_create_fee Pointer to store the masterchain create fee. + * @param basechain_create_fee Pointer to store the basechain create fee. + * @param wc The workchain ID. + * @param now The current Unix time. + */ td::Status FetchConfigParams::fetch_config_params( const block::Config& config, td::Ref prev_blocks_info, Ref* old_mparams, std::vector* storage_prices, StoragePhaseConfig* storage_phase_cfg, diff --git a/crypto/block/transaction.h b/crypto/block/transaction.h index 3ae8cdf88..6bb47fd99 100644 --- a/crypto/block/transaction.h +++ b/crypto/block/transaction.h @@ -270,7 +270,7 @@ struct Account { return balance; } bool set_address(ton::WorkchainId wc, td::ConstBitPtr new_addr); - bool unpack(Ref account, Ref extra, ton::UnixTime now, bool special = false); + bool unpack(Ref account, ton::UnixTime now, bool special); bool init_new(ton::UnixTime now); bool deactivate(); bool recompute_tmp_addr(Ref& tmp_addr, int split_depth, td::ConstBitPtr orig_addr_rewrite) const; @@ -382,8 +382,6 @@ struct Transaction { td::Result estimate_block_storage_profile_incr( const vm::NewCellStorageStat& store_stat, const vm::CellUsageTree* usage_tree) const; - bool update_block_storage_profile(vm::NewCellStorageStat& store_stat, const vm::CellUsageTree* usage_tree) const; - bool would_fit(unsigned cls, const block::BlockLimitStatus& blk_lim_st) const; bool update_limits(block::BlockLimitStatus& blk_lim_st, bool with_size = true) const; Ref commit(Account& _account); // _account should point to the same account diff --git a/crypto/common/bitstring.cpp b/crypto/common/bitstring.cpp index c10a4ff33..5135cdf0d 100644 --- a/crypto/common/bitstring.cpp +++ b/crypto/common/bitstring.cpp @@ -130,7 +130,7 @@ void bits_memcpy(unsigned char* to, int to_offs, const unsigned char* from, int from_offs &= 7; to_offs &= 7; //fprintf(stderr, "bits_memcpy: from=%p (%02x) to=%p (%02x) from_offs=%d to_offs=%d count=%lu\n", from, *from, to, *to, from_offs, to_offs, bit_count); - int sz = (int)bit_count; + int sz = static_cast(bit_count); bit_count += from_offs; if (from_offs == to_offs) { if (bit_count < 8) { @@ -206,7 +206,7 @@ void bits_memset(unsigned char* to, int to_offs, bool val, std::size_t bit_count } to += (to_offs >> 3); to_offs &= 7; - int sz = (int)bit_count; + int sz = static_cast(bit_count); bit_count += to_offs; int c = *to; if (bit_count <= 8) { diff --git a/crypto/fift/lib/Asm.fif b/crypto/fift/lib/Asm.fif index d9cee5d83..a0bfe6429 100644 --- a/crypto/fift/lib/Asm.fif +++ b/crypto/fift/lib/Asm.fif @@ -461,19 +461,109 @@ x{B7A3} @Defop QNEGATE x{B7A4} @Defop QINC x{B7A5} @Defop QDEC x{B7A8} @Defop QMUL + x{B7A904} @Defop QDIV x{B7A905} @Defop QDIVR x{B7A906} @Defop QDIVC x{B7A908} @Defop QMOD +x{B7A909} @Defop QMODR +x{B7A90A} @Defop QMODC x{B7A90C} @Defop QDIVMOD x{B7A90D} @Defop QDIVMODR x{B7A90E} @Defop QDIVMODC x{B7A900} @Defop QADDDIVMOD x{B7A901} @Defop QADDDIVMODR x{B7A902} @Defop QADDDIVMODC + +x{B7A925} @Defop QRSHIFTR +x{B7A926} @Defop QRSHIFTC +x{B7A928} @Defop QMODPOW2 +x{B7A929} @Defop QMODPOW2R +x{B7A92A} @Defop QMODPOW2C +x{B7A92C} @Defop QRSHIFTMOD +x{B7A92D} @Defop QRSHIFTMODR +x{B7A92E} @Defop QRSHIFTMODC +x{B7A920} @Defop QADDRSHIFTMOD +x{B7A921} @Defop QADDRSHIFTMODR +x{B7A922} @Defop QADDRSHIFTMODC + +x{B7A935} @Defop(8u+1) QRSHIFTR# +x{B7A936} @Defop(8u+1) QRSHIFTC# +x{B7A938} @Defop(8u+1) QMODPOW2# +x{B7A939} @Defop(8u+1) QMODPOW2R# +x{B7A93A} @Defop(8u+1) QMODPOW2C# +x{B7A93C} @Defop(8u+1) QRSHIFT#MOD +x{B7A93D} @Defop(8u+1) QRSHIFTR#MOD +x{B7A93E} @Defop(8u+1) QRSHIFTC#MOD +x{B7A930} @Defop(8u+1) QADDRSHIFT#MOD +x{B7A931} @Defop(8u+1) QADDRSHIFTR#MOD +x{B7A932} @Defop(8u+1) QADDRSHIFTC#MOD + +x{B7A984} @Defop QMULDIV x{B7A985} @Defop QMULDIVR +x{B7A986} @Defop QMULDIVC +x{B7A988} @Defop QMULMOD +x{B7A989} @Defop QMULMODR +x{B7A98A} @Defop QMULMODC x{B7A98C} @Defop QMULDIVMOD -x{B7A980} @Defop QADDMULDIVMOD +x{B7A98D} @Defop QMULDIVMODR +x{B7A98E} @Defop QMULDIVMODC +x{B7A980} @Defop QMULADDDIVMOD +x{B7A981} @Defop QMULADDDIVMODR +x{B7A982} @Defop QMULADDDIVMODC + +x{B7A9A4} @Defop QMULRSHIFT +x{B7A9A5} @Defop QMULRSHIFTR +x{B7A9A6} @Defop QMULRSHIFTC +x{B7A9A8} @Defop QMULMODPOW2 +x{B7A9A9} @Defop QMULMODPOW2R +x{B7A9AA} @Defop QMULMODPOW2C +x{B7A9AC} @Defop QMULRSHIFTMOD +x{B7A9AD} @Defop QMULRSHIFTRMOD +x{B7A9AE} @Defop QMULRSHIFTCMOD +x{B7A9A0} @Defop QMULADDRSHIFTMOD +x{B7A9A1} @Defop QMULADDRSHIFTRMOD +x{B7A9A2} @Defop QMULADDRSHIFTCMOD + +x{B7A9B4} @Defop(8u+1) QMULRSHIFT# +x{B7A9B5} @Defop(8u+1) QMULRSHIFTR# +x{B7A9B6} @Defop(8u+1) QMULRSHIFTC# +x{B7A9B8} @Defop(8u+1) QMULMODPOW2# +x{B7A9B9} @Defop(8u+1) QMULMODPOW2R# +x{B7A9BA} @Defop(8u+1) QMULMODPOW2C# +x{B7A9BC} @Defop(8u+1) QMULRSHIFT#MOD +x{B7A9BD} @Defop(8u+1) QMULRSHIFTR#MOD +x{B7A9BE} @Defop(8u+1) QMULRSHIFTC#MOD +x{B7A9B0} @Defop(8u+1) QMULADDRSHIFT#MOD +x{B7A9B1} @Defop(8u+1) QMULADDRSHIFTR#MOD +x{B7A9B2} @Defop(8u+1) QMULADDRSHIFTC#MOD + +x{B7A9C4} @Defop QLSHIFTDIV +x{B7A9C5} @Defop QLSHIFTDIVR +x{B7A9C6} @Defop QLSHIFTDIVC +x{B7A9C8} @Defop QLSHIFTMOD +x{B7A9C9} @Defop QLSHIFTMODR +x{B7A9CA} @Defop QLSHIFTMODC +x{B7A9CC} @Defop QLSHIFTDIVMOD +x{B7A9CD} @Defop QLSHIFTDIVMODR +x{B7A9CE} @Defop QLSHIFTDIVMODC +x{B7A9C0} @Defop QLSHIFTADDDIVMOD +x{B7A9C1} @Defop QLSHIFTADDDIVMODR +x{B7A9C2} @Defop QLSHIFTADDDIVMODC + +x{B7A9D4} @Defop(8u+1) QLSHIFT#DIV +x{B7A9D5} @Defop(8u+1) QLSHIFT#DIVR +x{B7A9D6} @Defop(8u+1) QLSHIFT#DIVC +x{B7A9D8} @Defop(8u+1) QLSHIFT#MOD +x{B7A9D9} @Defop(8u+1) QLSHIFT#MODR +x{B7A9DA} @Defop(8u+1) QLSHIFT#MODC +x{B7A9DC} @Defop(8u+1) QLSHIFT#DIVMOD +x{B7A9DD} @Defop(8u+1) QLSHIFT#DIVMODR +x{B7A9DE} @Defop(8u+1) QLSHIFT#DIVMODC +x{B7A9D0} @Defop(8u+1) QLSHIFT#ADDDIVMOD +x{B7A9D1} @Defop(8u+1) QLSHIFT#ADDDIVMODR +x{B7A9D2} @Defop(8u+1) QLSHIFT#ADDDIVMODC + x{B7AC} @Defop QLSHIFT x{B7AD} @Defop QRSHIFT x{B7AE} @Defop QPOW2 @@ -1185,7 +1275,7 @@ x{F4BF} @Defop DICTUGETEXECZ x{F800} @Defop ACCEPT x{F801} @Defop SETGASLIMIT -x{F802} @Defop GASCONSUMED +x{F806} @Defop GASCONSUMED x{F80F} @Defop COMMIT x{F810} @Defop RANDU256 diff --git a/crypto/fift/words.cpp b/crypto/fift/words.cpp index 56dd4de22..8d652afcc 100644 --- a/crypto/fift/words.cpp +++ b/crypto/fift/words.cpp @@ -3512,7 +3512,7 @@ void init_words_ton(Dictionary& d) { void init_words_vm(Dictionary& d, bool enable_debug) { using namespace std::placeholders; - vm::init_op_cp0(enable_debug); + vm::init_vm(enable_debug).ensure(); // vm run d.def_word("vmlibs ", LitCont::literal(vm_libraries)); // d.def_ctx_word("runvmcode ", std::bind(interpret_run_vm, _1, 0x40)); diff --git a/crypto/func/auto-tests/legacy_tester.py b/crypto/func/auto-tests/legacy_tester.py index e852a0434..9a9905012 100644 --- a/crypto/func/auto-tests/legacy_tester.py +++ b/crypto/func/auto-tests/legacy_tester.py @@ -8,37 +8,37 @@ add_pragmas = [] #["allow-post-modification", "compute-asm-ltr"]; tests = [ - # note, that deployed version of elector,config and multisig differ since it is compilled with func-0.1.0. - # Newer compillators optimize arithmetic and logic expression that can be calculated at the compile time - ["elector/elector-code.fc", 115226404411715505328583639896096915745686314074575650766750648324043316883483], - ["config/config-code.fc", 10913070768607625342121305745084703121685937915388357634624451844356456145601], - ["eth-bridge-multisig/multisig-code.fc", 101509909129354488841890823627011033360100627957439967918234053299675481277954], - - ["bsc-bridge-collector/votes-collector.fc", 62190447221288642706570413295807615918589884489514159926097051017036969900417], - ["uni-lock-wallet/uni-lockup-wallet.fc", 61959738324779104851267145467044677651344601417998258530238254441977103654381], - ["nft-collection/nft-collection-editable.fc", 45561997735512210616567774035540357815786262097548276229169737015839077731274], - ["dns-collection/nft-collection.fc", 107999822699841936063083742021519765435859194241091312445235370766165379261859], - - - # note, that deployed version of tele-nft-item differs since it is compilled with func-0.3.0. - # After introducing of try/catch construction, c2 register is not always the default one. - # Thus it is necessary to save it upon jumps, differences of deployed and below compilled is that - # "c2 SAVE" is added to the beginning of recv_internal. It does not change behavior. - ["tele-nft-item/nft-item.fc", 69777543125381987786450436977742010705076866061362104025338034583422166453344], - - ["storage/storage-contract.fc", 91377830060355733016937375216020277778264560226873154627574229667513068328151], - ["storage/storage-provider.fc", 13618336676213331164384407184540461509022654507176709588621016553953760588122], - ["nominator-pool/pool.fc", 69767057279163099864792356875696330339149706521019810113334238732928422055375], - ["jetton-minter/jetton-minter.fc", 9028309926287301331466371999814928201427184114165428257502393474125007156494], - ["gg-marketplace/nft-marketplace-v2.fc", 92199806964112524639740773542356508485601908152150843819273107618799016205930], - ["jetton-wallet/jetton-wallet.fc", 86251125787443633057458168028617933212663498001665054651523310772884328206542], - ["whales-nominators/nominators.fc", 8941364499854379927692172316865293429893094891593442801401542636695127885153], - - - ["tact-examples/treasure_Treasure.code.fc", 13962538639825790677138656603323869918938565499584297120566680287245364723897], - ["tact-examples/jetton_SampleJetton.code.fc", 94076762218493729104783735200107713211245710256802265203823917715299139499110], - ["tact-examples/jetton_JettonDefaultWallet.code.fc", 29421313492520031238091587108198906058157443241743283101866538036369069620563], - ["tact-examples/maps_MapTestContract.code.fc", 22556550222249123835909180266811414538971143565993192846012583552876721649744], + # note, that deployed version of elector,config and multisig differ since it is compilled with func-0.1.0. + # Newer compillators optimize arithmetic and logic expression that can be calculated at the compile time + ["elector/elector-code.fc", 115226404411715505328583639896096915745686314074575650766750648324043316883483], + ["config/config-code.fc", 10913070768607625342121305745084703121685937915388357634624451844356456145601], + ["eth-bridge-multisig/multisig-code.fc", 101509909129354488841890823627011033360100627957439967918234053299675481277954], + + ["bsc-bridge-collector/votes-collector.fc", 62190447221288642706570413295807615918589884489514159926097051017036969900417], + ["uni-lock-wallet/uni-lockup-wallet.fc", 61959738324779104851267145467044677651344601417998258530238254441977103654381], + ["nft-collection/nft-collection-editable.fc", 45561997735512210616567774035540357815786262097548276229169737015839077731274], + ["dns-collection/nft-collection.fc", 107999822699841936063083742021519765435859194241091312445235370766165379261859], + + + # note, that deployed version of tele-nft-item differs since it is compilled with func-0.3.0. + # After introducing of try/catch construction, c2 register is not always the default one. + # Thus it is necessary to save it upon jumps, differences of deployed and below compilled is that + # "c2 SAVE" is added to the beginning of recv_internal. It does not change behavior. + ["tele-nft-item/nft-item.fc", 69777543125381987786450436977742010705076866061362104025338034583422166453344], + + ["storage/storage-contract.fc", 91377830060355733016937375216020277778264560226873154627574229667513068328151], + ["storage/storage-provider.fc", 13618336676213331164384407184540461509022654507176709588621016553953760588122], + ["nominator-pool/pool.fc", 69767057279163099864792356875696330339149706521019810113334238732928422055375], + ["jetton-minter/jetton-minter.fc", 9028309926287301331466371999814928201427184114165428257502393474125007156494], + ["gg-marketplace/nft-marketplace-v2.fc", 92199806964112524639740773542356508485601908152150843819273107618799016205930], + ["jetton-wallet/jetton-wallet.fc", 86251125787443633057458168028617933212663498001665054651523310772884328206542], + ["whales-nominators/nominators.fc", 8941364499854379927692172316865293429893094891593442801401542636695127885153], + + + ["tact-examples/treasure_Treasure.code.fc", 13962538639825790677138656603323869918938565499584297120566680287245364723897], + ["tact-examples/jetton_SampleJetton.code.fc", 94076762218493729104783735200107713211245710256802265203823917715299139499110], + ["tact-examples/jetton_JettonDefaultWallet.code.fc", 29421313492520031238091587108198906058157443241743283101866538036369069620563], + ["tact-examples/maps_MapTestContract.code.fc", 22556550222249123835909180266811414538971143565993192846012583552876721649744], ] def getenv(name, default=None): @@ -51,7 +51,6 @@ def getenv(name, default=None): FUNC_EXECUTABLE = getenv("FUNC_EXECUTABLE", "func") FIFT_EXECUTABLE = getenv("FIFT_EXECUTABLE", "fift") -FIFT_LIBS = getenv("FIFTPATH") TMP_DIR = tempfile.mkdtemp() COMPILED_FIF = os.path.join(TMP_DIR, "compiled.fif") @@ -63,49 +62,49 @@ class ExecutionError(Exception): pass def pre_process_func(f): - shutil.copyfile(f, f+"_backup") - with open(f, "r") as src: - sources = src.read() - with open(f, "w") as src: - for pragma in add_pragmas: - src.write("#pragma %s;\n"%pragma) - src.write(sources) + shutil.copyfile(f, f+"_backup") + with open(f, "r") as src: + sources = src.read() + with open(f, "w") as src: + for pragma in add_pragmas: + src.write("#pragma %s;\n"%pragma) + src.write(sources) def post_process_func(f): - shutil.move(f+"_backup", f) + shutil.move(f+"_backup", f) def compile_func(f): res = None try: pre_process_func(f) if "storage-provider.fc" in f : - # This contract requires building of storage-contract to include it as ref - with open(f, "r") as src: - sources = src.read() + # This contract requires building of storage-contract to include it as ref + with open(f, "r") as src: + sources = src.read() + COMPILED_ST_BOC = os.path.join(TMP_DIR, "storage-contract-code.boc") + sources = sources.replace("storage-contract-code.boc", COMPILED_ST_BOC) + with open(f, "w") as src: + src.write(sources) + COMPILED_ST_FIF = os.path.join(TMP_DIR, "storage-contract.fif") COMPILED_ST_BOC = os.path.join(TMP_DIR, "storage-contract-code.boc") - sources = sources.replace("storage-contract-code.boc", COMPILED_ST_BOC) - with open(f, "w") as src: - src.write(sources) - COMPILED_ST_FIF = os.path.join(TMP_DIR, "storage-contract.fif") - COMPILED_ST_BOC = os.path.join(TMP_DIR, "storage-contract-code.boc") - COMPILED_BUILD_BOC = os.path.join(TMP_DIR, "build-boc.fif") - res = subprocess.run([FUNC_EXECUTABLE, "-o", COMPILED_ST_FIF, "-SPA", f.replace("storage-provider.fc","storage-contract.fc")], capture_output=False, timeout=10) - with open(COMPILED_BUILD_BOC, "w") as scr: - scr.write("\"%s\" include boc>B \"%s\" B>file "%(COMPILED_ST_FIF, COMPILED_ST_BOC)) - res = subprocess.run([FIFT_EXECUTABLE, COMPILED_BUILD_BOC ], capture_output=True, timeout=10) - - + COMPILED_BUILD_BOC = os.path.join(TMP_DIR, "build-boc.fif") + res = subprocess.run([FUNC_EXECUTABLE, "-o", COMPILED_ST_FIF, "-SPA", f.replace("storage-provider.fc","storage-contract.fc")], capture_output=False, timeout=10) + with open(COMPILED_BUILD_BOC, "w") as scr: + scr.write("\"%s\" include boc>B \"%s\" B>file "%(COMPILED_ST_FIF, COMPILED_ST_BOC)) + res = subprocess.run([FIFT_EXECUTABLE, COMPILED_BUILD_BOC ], capture_output=True, timeout=10) + + res = subprocess.run([FUNC_EXECUTABLE, "-o", COMPILED_FIF, "-SPA", f], capture_output=True, timeout=10) except Exception as e: - post_process_func(f) - raise e + post_process_func(f) + raise e else: - post_process_func(f) + post_process_func(f) if res.returncode != 0: raise ExecutionError(str(res.stderr, "utf-8")) def run_runner(): - res = subprocess.run([FIFT_EXECUTABLE, "-I", FIFT_LIBS, RUNNER_FIF], capture_output=True, timeout=10) + res = subprocess.run([FIFT_EXECUTABLE, RUNNER_FIF], capture_output=True, timeout=10) if res.returncode != 0: raise ExecutionError(str(res.stderr, "utf-8")) s = str(res.stdout, "utf-8") @@ -138,16 +137,15 @@ def get_version(): try: func_out = run_runner() if func_out != th: - raise ExecutionError("Error : expected '%d', found '%d'" % (th, func_out)) + raise ExecutionError("Error : expected '%d', found '%d'" % (th, func_out)) success += 1 except ExecutionError as e: print(e, file=sys.stderr) - #print("Compiled:", file=sys.stderr) - #with open(COMPILED_FIF, "r") as f: - # print(f.read(), file=sys.stderr) - #exit(2) + print("Compiled:", file=sys.stderr) + with open(COMPILED_FIF, "r") as f: + print(f.read(), file=sys.stderr) + exit(2) print(" OK ", file=sys.stderr) print(get_version()) -print("Done: Success %d, Error: %d"%(success, len(tests)-success), file=sys.stderr) - +print("Done: Success %d, Error: %d"%(success, len(tests)-success), file=sys.stderr) \ No newline at end of file diff --git a/crypto/func/auto-tests/run_tests.py b/crypto/func/auto-tests/run_tests.py index 0f12332d0..158e871b8 100644 --- a/crypto/func/auto-tests/run_tests.py +++ b/crypto/func/auto-tests/run_tests.py @@ -4,6 +4,7 @@ import sys import tempfile + def getenv(name, default=None): if name in os.environ: return os.environ[name] @@ -12,10 +13,9 @@ def getenv(name, default=None): exit(1) return default + FUNC_EXECUTABLE = getenv("FUNC_EXECUTABLE", "func") FIFT_EXECUTABLE = getenv("FIFT_EXECUTABLE", "fift") -#FUNC_STDLIB = getenv("FUNC_STDLIB") -FIFT_LIBS = getenv("FIFT_LIBS") TMP_DIR = tempfile.mkdtemp() COMPILED_FIF = os.path.join(TMP_DIR, "compiled.fif") RUNNER_FIF = os.path.join(TMP_DIR, "runner.fif") @@ -25,22 +25,26 @@ def getenv(name, default=None): exit(1) TESTS_DIR = sys.argv[1] + class ExecutionError(Exception): pass + def compile_func(f): res = subprocess.run([FUNC_EXECUTABLE, "-o", COMPILED_FIF, "-SPA", f], capture_output=True, timeout=10) if res.returncode != 0: raise ExecutionError(str(res.stderr, "utf-8")) + def run_runner(): - res = subprocess.run([FIFT_EXECUTABLE, "-I", FIFT_LIBS, RUNNER_FIF], capture_output=True, timeout=10) + res = subprocess.run([FIFT_EXECUTABLE, RUNNER_FIF], capture_output=True, timeout=10) if res.returncode != 0: raise ExecutionError(str(res.stderr, "utf-8")) s = str(res.stdout, "utf-8") s = [x.strip() for x in s.split("\n")] return [x for x in s if x != ""] + tests = [s for s in os.listdir(TESTS_DIR) if s.endswith(".fc")] tests.sort() print("Found", len(tests), "tests", file=sys.stderr) @@ -68,18 +72,18 @@ def run_runner(): # preprocess arithmetics in input for i in range(len(cases)): - inputs = cases[i][1].split(" ") - processed_inputs = "" - for in_arg in inputs: - if "x{" in in_arg: - processed_inputs += in_arg - continue - # filter and execute - # is it safe enough? - filtered_in = "".join(filter(lambda x: x in "0x123456789()+-*/<>", in_arg)) - if(filtered_in): - processed_inputs += str(eval(filtered_in)) + " "; - cases[i][1] = processed_inputs.strip() + inputs = cases[i][1].split(" ") + processed_inputs = "" + for in_arg in inputs: + if "x{" in in_arg: + processed_inputs += in_arg + continue + # filter and execute + # is it safe enough? + filtered_in = "".join(filter(lambda x: x in "0x123456789()+-*/<>", in_arg)) + if filtered_in: + processed_inputs += str(eval(filtered_in)) + " " + cases[i][1] = processed_inputs.strip() with open(RUNNER_FIF, "w") as f: print("\"%s\" include >(std::istream& is, Bignum& x) { return is; } -bool is_prime(const Bignum& p, int nchecks, bool trial_div) { - return BN_is_prime_fasttest_ex(p.bn_ptr(), BN_prime_checks, get_ctx(), trial_div, 0); +bool is_prime(const Bignum& p) { +#if OPENSSL_VERSION_MAJOR >= 3 + int result = BN_check_prime(p.bn_ptr(), get_ctx(), nullptr); + LOG_IF(FATAL, result == -1); + return result; +#else + return BN_is_prime_fasttest_ex(p.bn_ptr(), BN_prime_checks, get_ctx(), true, 0); +#endif } } // namespace arith diff --git a/crypto/openssl/bignum.h b/crypto/openssl/bignum.h index 2a8dd8a02..032dbb025 100644 --- a/crypto/openssl/bignum.h +++ b/crypto/openssl/bignum.h @@ -335,7 +335,7 @@ const Bignum sqr(const Bignum& x); std::ostream& operator<<(std::ostream& os, const Bignum& x); std::istream& operator>>(std::istream& is, Bignum& x); -bool is_prime(const Bignum& p, int nchecks = 64, bool trial_div = true); +bool is_prime(const Bignum& p); inline int cmp(const Bignum& x, const Bignum& y) { return BN_cmp(x.bn_ptr(), y.bn_ptr()); diff --git a/crypto/parser/lexer.cpp b/crypto/parser/lexer.cpp index 624d8dd2b..117f1df5a 100644 --- a/crypto/parser/lexer.cpp +++ b/crypto/parser/lexer.cpp @@ -250,7 +250,6 @@ const Lexem& Lexer::next() { } if (is_multiline_quote(src.get_ptr(), src.get_end_ptr())) { src.advance(multiline_quote.size()); - const char* begin = src.get_ptr(); const char* end = nullptr; SrcLocation here = src.here(); std::string body; diff --git a/crypto/smc-envelope/ManualDns.h b/crypto/smc-envelope/ManualDns.h index b5dee59a2..d24cd0234 100644 --- a/crypto/smc-envelope/ManualDns.h +++ b/crypto/smc-envelope/ManualDns.h @@ -305,7 +305,7 @@ class ManualDns : public ton::SmartContract, public DnsInterface { if (!info.known_category.insert(action.category).second) { continue; } - if (action.category == 0) { + if (action.category.is_zero()) { info.closed = true; auto old_actions = std::move(info.actions); bool is_empty = true; @@ -327,7 +327,7 @@ class ManualDns : public ton::SmartContract, public DnsInterface { if (info.closed) { CombinedActions ca; ca.name = it.first; - ca.category = 0; + ca.category = td::Bits256::zero(); if (!info.actions.empty() || info.non_empty) { ca.actions = std::move(info.actions); } diff --git a/crypto/smc-envelope/SmartContract.cpp b/crypto/smc-envelope/SmartContract.cpp index 64e269444..b56810b03 100644 --- a/crypto/smc-envelope/SmartContract.cpp +++ b/crypto/smc-envelope/SmartContract.cpp @@ -181,7 +181,7 @@ SmartContract::Answer run_smartcont(SmartContract::State state, td::Ref config) { auto gas_credit = gas.gas_credit; - vm::init_op_cp0(debug_enabled); + vm::init_vm(debug_enabled).ensure(); vm::DictionaryBase::get_empty_dictionary(); class Logger : public td::LogInterface { diff --git a/crypto/test/fift.cpp b/crypto/test/fift.cpp index 049507fdf..2b1ed54e2 100644 --- a/crypto/test/fift.cpp +++ b/crypto/test/fift.cpp @@ -33,7 +33,7 @@ std::string load_test(std::string name) { return td::read_file_str(current_dir() + "fift/" + name).move_as_ok(); } -td::Status run_fift(std::string name, bool expect_error = false, bool preload_fift = true) { +td::Status run_fift(std::string name, bool expect_error = false) { auto res = fift::mem_run_fift(load_test(name)); if (expect_error) { res.ensure_error(); diff --git a/crypto/test/fift/rist255.fif b/crypto/test/fift/rist255.fif index 630eebb1a..ddd9b619a 100644 --- a/crypto/test/fift/rist255.fif +++ b/crypto/test/fift/rist255.fif @@ -9,6 +9,9 @@ [[ <{ RIST255_MULBASE DUP RIST255_VALIDATE }>s ]] 0 runvmx abort"Exitcode != 0" @' n . dup (x.) type cr @' ans <> abort"Invalid result" + @' n + [[ <{ 1 INT RIST255_MULBASE SWAP RIST255_MUL DUP RIST255_VALIDATE }>s ]] 0 runvmx abort"Exitcode != 0" + @' ans <> abort"Invalid result" } : test-basepoint 0 0x0000000000000000000000000000000000000000000000000000000000000000 test-basepoint diff --git a/crypto/test/modbigint.cpp b/crypto/test/modbigint.cpp index b34411f3b..75051fa62 100644 --- a/crypto/test/modbigint.cpp +++ b/crypto/test/modbigint.cpp @@ -180,7 +180,7 @@ struct MixedRadix { template const MixedRadix& as_shorter() const { - static_assert(M <= N); + static_assert(M <= N,"error"); return *reinterpret_cast*>(this); } @@ -458,7 +458,7 @@ struct ModArray { } template ModArray(const ModArray& other) { - static_assert(M >= N); + static_assert(M >= N,"error"); std::copy(other.a, other.a + N, a); } ModArray(const int* p) : a(p) { @@ -819,7 +819,7 @@ struct ModArray { template const ModArray& as_shorter() const { - static_assert(M <= N); + static_assert(M <= N,"error"); return *reinterpret_cast*>(this); } diff --git a/crypto/test/test-bigint.cpp b/crypto/test/test-bigint.cpp index 7525c83a1..a6f6e8d67 100644 --- a/crypto/test/test-bigint.cpp +++ b/crypto/test/test-bigint.cpp @@ -16,12 +16,12 @@ */ #include #include -#include #include #include #include #include #include +#include #include "common/refcnt.hpp" #include "common/bigint.hpp" #include "common/refint.h" @@ -211,7 +211,7 @@ bool coin() { // returns 0 with probability 1/2, 1 with prob. 1/4, ..., k with prob. 1/2^(k+1) int randexp(int max = 63, int min = 0) { - return min + __builtin_clzll(Random() | (1ULL << (63 - max + min))); + return min + td::count_leading_zeroes64(Random() | (1ULL << (63 - max + min))); } void bin_add_small(unsigned char bin[64], long long val, int shift = 0) { @@ -363,7 +363,7 @@ void check_one_int_repr(td::RefInt256 x, int mode, int in_range, const BInt* val if (is_small) { // special check for small (64-bit) values CHECK(x->to_long() == xval); - CHECK((long long)__builtin_bswap64(*(long long*)(bytes + 64 - 8)) == xval); + CHECK((long long)td::bswap64(*(long long*)(bytes + 64 - 8)) == xval); CHECK(in_range); // check sign CHECK(x->sgn() == (xval > 0 ? 1 : (xval < 0 ? -1 : 0))); diff --git a/crypto/test/test-db.cpp b/crypto/test/test-db.cpp index 413d774fa..35727ee36 100644 --- a/crypto/test/test-db.cpp +++ b/crypto/test/test-db.cpp @@ -127,12 +127,12 @@ class BenchSha256Low : public td::Benchmark { void run(int n) override { int res = 0; - SHA256_CTX ctx; + td::Sha256State ctx; for (int i = 0; i < n; i++) { - SHA256_Init(&ctx); - SHA256_Update(&ctx, "abcd", 4); + ctx.init(); + ctx.feed("abcd"); unsigned char buf[32]; - SHA256_Final(buf, &ctx); + ctx.extract(td::MutableSlice{buf, 32}); res += buf[0]; } td::do_not_optimize_away(res); diff --git a/crypto/test/test-smartcont.cpp b/crypto/test/test-smartcont.cpp index d3f188132..98534bc5e 100644 --- a/crypto/test/test-smartcont.cpp +++ b/crypto/test/test-smartcont.cpp @@ -958,7 +958,7 @@ class MapDns { } return; } - if (!actions.category.is_zero()) { + if (actions.category.is_zero()) { entries_.erase(actions.name); LOG(ERROR) << "CLEAR " << actions.name; if (!actions.actions) { @@ -1003,7 +1003,7 @@ class CheckedDns { explicit CheckedDns(bool check_smc = true, bool check_combine = true) { if (check_smc) { key_ = td::Ed25519::generate_private_key().move_as_ok(); - dns_ = ManualDns::create(ManualDns::create_init_data_fast(key_.value().get_public_key().move_as_ok(), 123)); + dns_ = ManualDns::create(ManualDns::create_init_data_fast(key_.value().get_public_key().move_as_ok(), 123), -1); } if (check_combine) { combined_map_dns_ = MapDns(); @@ -1094,9 +1094,10 @@ class CheckedDns { } }; -static td::Bits256 intToCat(int x) { - td::Bits256 cat = td::Bits256::zero(); - cat.as_slice().copy_from(td::Slice((char*)&x, sizeof(x))); +static td::Bits256 intToCat(td::uint32 x) { + auto y = td::make_refint(x); + td::Bits256 cat; + y->export_bytes(cat.data(), 32, false); return cat; } @@ -1182,7 +1183,7 @@ TEST(Smartcont, DnsManual) { auto key = td::Ed25519::generate_private_key().move_as_ok(); - auto manual = ManualDns::create(ManualDns::create_init_data_fast(key.get_public_key().move_as_ok(), 123)); + auto manual = ManualDns::create(ManualDns::create_init_data_fast(key.get_public_key().move_as_ok(), 123), -1); CHECK(manual->get_wallet_id().move_as_ok() == 123); auto init_query = manual->create_init_query(key).move_as_ok(); LOG(ERROR) << "A"; diff --git a/crypto/test/vm.cpp b/crypto/test/vm.cpp index 3227f8fa6..0f1b04429 100644 --- a/crypto/test/vm.cpp +++ b/crypto/test/vm.cpp @@ -28,7 +28,7 @@ #include "td/utils/StringBuilder.h" std::string run_vm(td::Ref cell) { - vm::init_op_cp0(); + vm::init_vm().ensure(); vm::DictionaryBase::get_empty_dictionary(); class Logger : public td::LogInterface { diff --git a/crypto/tl/tlbc-gen-cpp.cpp b/crypto/tl/tlbc-gen-cpp.cpp index dedec15d4..6edd0a121 100644 --- a/crypto/tl/tlbc-gen-cpp.cpp +++ b/crypto/tl/tlbc-gen-cpp.cpp @@ -159,7 +159,6 @@ std::string CppIdentSet::compute_cpp_ident(std::string orig_ident, int count) { } if (!cnt) { os << '_'; - prev_skip = true; } if (count) { os << count; diff --git a/crypto/tl/tlbc.cpp b/crypto/tl/tlbc.cpp index 409ac538e..b48bc472e 100644 --- a/crypto/tl/tlbc.cpp +++ b/crypto/tl/tlbc.cpp @@ -2252,11 +2252,9 @@ TypeExpr* parse_expr10(Lexer& lex, Constructor& cs, int mode) { } if (op == '>') { std::swap(expr, expr2); - op = '<'; op_name = Less_name; } else if (op == src::_Geq) { std::swap(expr, expr2); - op = src::_Leq; op_name = Leq_name; } auto sym_def = sym::lookup_symbol(op_name, 2); diff --git a/crypto/vm/arithops.cpp b/crypto/vm/arithops.cpp index 7da535673..1d3111b2f 100644 --- a/crypto/vm/arithops.cpp +++ b/crypto/vm/arithops.cpp @@ -285,8 +285,11 @@ int exec_divmod(VmState* st, unsigned args, int quiet) { typename td::BigInt256::DoubleInt tmp{*x}, quot; tmp += *w; tmp.mod_div(*y, quot, round_mode); - stack.push_int_quiet(td::make_refint(quot), quiet); - stack.push_int_quiet(td::make_refint(tmp), quiet); + auto q = td::make_refint(quot), r = td::make_refint(tmp); + q.write().normalize(); + r.write().normalize(); + stack.push_int_quiet(std::move(q), quiet); + stack.push_int_quiet(std::move(r), quiet); } else { switch (d) { case 1: @@ -399,6 +402,7 @@ std::string dump_shrmod(CellSlice&, unsigned args, int mode) { if (mode & 1) { os << 'Q'; } + std::string end; switch (args & 12) { case 4: os << "RSHIFT"; @@ -407,17 +411,22 @@ std::string dump_shrmod(CellSlice&, unsigned args, int mode) { os << "MODPOW2"; break; case 12: - os << "RSHIFTMOD"; + os << "RSHIFT"; + end = "MOD"; break; case 0: - os << "ADDRSHIFTMOD"; + os << "ADDRSHIFT"; + end = "MOD"; break; } + if (!(mode & 2)) { + os << end; + } if (round_mode) { os << "FRC"[round_mode]; } if (mode & 2) { - os << ' ' << y; + os << "#" << end << ' ' << y; } return os.str(); } @@ -519,7 +528,7 @@ int exec_mulshrmod(VmState* st, unsigned args, int mode) { if (add) { tmp = *w; } - tmp.add_mul(*x, *y); + tmp.add_mul(*x, *y).normalize(); switch (d) { case 1: tmp.rshift(z, round_mode).normalize(); @@ -553,6 +562,7 @@ std::string dump_mulshrmod(CellSlice&, unsigned args, int mode) { if (mode & 1) { os << 'Q'; } + std::string end; switch (args & 12) { case 4: os << "MULRSHIFT"; @@ -561,15 +571,21 @@ std::string dump_mulshrmod(CellSlice&, unsigned args, int mode) { os << "MULMODPOW2"; break; case 12: - os << "MULRSHIFTMOD"; + os << "MULRSHIFT"; + end = "MOD"; break; case 0: - os << "MULADDRSHIFTMOD"; + os << "MULADDRSHIFT"; + end = "MOD"; break; } if (round_mode) { os << "FRC"[round_mode]; } + if (mode & 2) { + os << "#"; + } + os << end; if (mode & 2) { os << ' ' << y; } @@ -644,18 +660,22 @@ std::string dump_shldivmod(CellSlice&, unsigned args, int mode) { if (mode & 1) { os << "Q"; } + os << "LSHIFT"; + if (mode & 2) { + os << "#"; + } switch (args & 12) { case 4: - os << "LSHIFTDIV"; + os << "DIV"; break; case 8: - os << "LSHIFTMOD"; + os << "MOD"; break; case 12: - os << "LSHIFTDIVMOD"; + os << "DIVMOD"; break; case 0: - os << "LSHIFTADDDIVMOD"; + os << "ADDDIVMOD"; break; } if (round_mode) { diff --git a/crypto/vm/tonops.cpp b/crypto/vm/tonops.cpp index 0dd15d805..f491d252c 100644 --- a/crypto/vm/tonops.cpp +++ b/crypto/vm/tonops.cpp @@ -101,7 +101,7 @@ void register_basic_gas_ops(OpcodeTable& cp0) { using namespace std::placeholders; cp0.insert(OpcodeInstr::mksimple(0xf800, 16, "ACCEPT", exec_accept)) .insert(OpcodeInstr::mksimple(0xf801, 16, "SETGASLIMIT", exec_set_gas_limit)) - .insert(OpcodeInstr::mksimple(0xf802, 16, "GASCONSUMED", exec_gas_consumed)->require_version(4)) + .insert(OpcodeInstr::mksimple(0xf806, 16, "GASCONSUMED", exec_gas_consumed)->require_version(4)) .insert(OpcodeInstr::mksimple(0xf80f, 16, "COMMIT", exec_commit)); } @@ -620,7 +620,6 @@ int exec_ristretto255_from_hash(VmState* st) { if (!x2->export_bytes(xb + 32, 32, false)) { throw VmError{Excno::range_chk, "x2 must fit in an unsigned 256-bit integer"}; } - CHECK(sodium_init() >= 0); crypto_core_ristretto255_from_hash(rb, xb); td::RefInt256 r{true}; CHECK(r.write().import_bytes(rb, 32, false)); @@ -633,8 +632,7 @@ int exec_ristretto255_validate(VmState* st, bool quiet) { Stack& stack = st->get_stack(); auto x = stack.pop_int(); st->consume_gas(VmState::rist255_validate_gas_price); - unsigned char xb[64]; - CHECK(sodium_init() >= 0); + unsigned char xb[32]; if (!x->export_bytes(xb, 32, false) || !crypto_core_ristretto255_is_valid_point(xb)) { if (quiet) { stack.push_bool(false); @@ -656,7 +654,6 @@ int exec_ristretto255_add(VmState* st, bool quiet) { auto x = stack.pop_int(); st->consume_gas(VmState::rist255_add_gas_price); unsigned char xb[32], yb[32], rb[32]; - CHECK(sodium_init() >= 0); if (!x->export_bytes(xb, 32, false) || !y->export_bytes(yb, 32, false) || crypto_core_ristretto255_add(rb, xb, yb)) { if (quiet) { stack.push_bool(false); @@ -681,7 +678,6 @@ int exec_ristretto255_sub(VmState* st, bool quiet) { auto x = stack.pop_int(); st->consume_gas(VmState::rist255_add_gas_price); unsigned char xb[32], yb[32], rb[32]; - CHECK(sodium_init() >= 0); if (!x->export_bytes(xb, 32, false) || !y->export_bytes(yb, 32, false) || crypto_core_ristretto255_sub(rb, xb, yb)) { if (quiet) { stack.push_bool(false); @@ -719,17 +715,20 @@ int exec_ristretto255_mul(VmState* st, bool quiet) { auto n = stack.pop_int() % get_ristretto256_l(); auto x = stack.pop_int(); st->consume_gas(VmState::rist255_mul_gas_price); + if (n->sgn() == 0) { + stack.push_smallint(0); + if (quiet) { + stack.push_bool(true); + } + return 0; + } unsigned char xb[32], nb[32], rb[32]; - memset(rb, 255, sizeof(rb)); - CHECK(sodium_init() >= 0); if (!x->export_bytes(xb, 32, false) || !export_bytes_little(n, nb) || crypto_scalarmult_ristretto255(rb, nb, xb)) { - if (std::all_of(rb, rb + 32, [](unsigned char c) { return c == 255; })) { - if (quiet) { - stack.push_bool(false); - return 0; - } - throw VmError{Excno::range_chk, "invalid x or n"}; + if (quiet) { + stack.push_bool(false); + return 0; } + throw VmError{Excno::range_chk, "invalid x or n"}; } td::RefInt256 r{true}; CHECK(r.write().import_bytes(rb, 32, false)); @@ -747,7 +746,6 @@ int exec_ristretto255_mul_base(VmState* st, bool quiet) { st->consume_gas(VmState::rist255_mulbase_gas_price); unsigned char nb[32], rb[32]; memset(rb, 255, sizeof(rb)); - CHECK(sodium_init() >= 0); if (!export_bytes_little(n, nb) || crypto_scalarmult_ristretto255_base(rb, nb)) { if (std::all_of(rb, rb + 32, [](unsigned char c) { return c == 255; })) { if (quiet) { @@ -833,7 +831,7 @@ int exec_bls_verify(VmState* st) { VM_LOG(st) << "execute BLS_VERIFY"; Stack& stack = st->get_stack(); stack.check_underflow(3); - st->consume_gas(st->bls_verify_gas_price); + st->consume_gas(VmState::bls_verify_gas_price); bls::P2 sig = slice_to_bls_p2(*stack.pop_cellslice()); td::BufferSlice msg = slice_to_bls_msg(*stack.pop_cellslice()); bls::P1 pub = slice_to_bls_p1(*stack.pop_cellslice()); @@ -845,8 +843,7 @@ int exec_bls_aggregate(VmState* st) { VM_LOG(st) << "execute BLS_AGGREGATE"; Stack& stack = st->get_stack(); int n = stack.pop_smallint_range(stack.depth() - 1, 1); - st->consume_gas( - std::max(0LL, VmState::bls_aggregate_base_gas_price + (long long)n * VmState::bls_aggregate_element_gas_price)); + st->consume_gas(VmState::bls_aggregate_base_gas_price + (long long)n * VmState::bls_aggregate_element_gas_price); std::vector sigs(n); for (int i = n - 1; i >= 0; --i) { sigs[i] = slice_to_bls_p2(*stack.pop_cellslice()); diff --git a/crypto/vm/vm.cpp b/crypto/vm/vm.cpp index 4d3e67af9..3f595a00e 100644 --- a/crypto/vm/vm.cpp +++ b/crypto/vm/vm.cpp @@ -21,6 +21,8 @@ #include "vm/dict.h" #include "vm/log.h" #include "vm/vm.h" +#include "cp0.h" +#include namespace vm { @@ -770,4 +772,15 @@ void VmState::restore_parent_vm(int res) { } } +td::Status init_vm(bool enable_debug) { + if (!init_op_cp0(enable_debug)) { + return td::Status::Error("Failed to init TVM: failed to init cp0"); + } + auto code = sodium_init(); + if (code < 0) { + return td::Status::Error(PSTRING() << "Failed to init TVM: sodium_init, code=" << code); + } + return td::Status::OK(); +} + } // namespace vm diff --git a/crypto/vm/vm.h b/crypto/vm/vm.h index e3fda3186..2066db4c1 100644 --- a/crypto/vm/vm.h +++ b/crypto/vm/vm.h @@ -423,4 +423,6 @@ int run_vm_code(Ref _code, Stack& _stack, int flags = 0, Ref* d Ref lookup_library_in(td::ConstBitPtr key, Ref lib_root); +td::Status init_vm(bool enable_debug = false); + } // namespace vm diff --git a/dht-server/CMakeLists.txt b/dht-server/CMakeLists.txt index 889b3f300..6daac0334 100644 --- a/dht-server/CMakeLists.txt +++ b/dht-server/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.0.2 FATAL_ERROR) +cmake_minimum_required(VERSION 3.5 FATAL_ERROR) if (NOT OPENSSL_FOUND) find_package(OpenSSL REQUIRED) diff --git a/dht/CMakeLists.txt b/dht/CMakeLists.txt index e50a74972..95ee70691 100644 --- a/dht/CMakeLists.txt +++ b/dht/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.0.2 FATAL_ERROR) +cmake_minimum_required(VERSION 3.5 FATAL_ERROR) if (NOT OPENSSL_FOUND) find_package(OpenSSL REQUIRED) diff --git a/emulator/CMakeLists.txt b/emulator/CMakeLists.txt index c23f071c5..969f9a88a 100644 --- a/emulator/CMakeLists.txt +++ b/emulator/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.0.2 FATAL_ERROR) +cmake_minimum_required(VERSION 3.5 FATAL_ERROR) option(BUILD_SHARED_LIBS "Use \"OFF\" for a static build." ON) diff --git a/emulator/emulator-extern.cpp b/emulator/emulator-extern.cpp index 3a4398317..4b65dd066 100644 --- a/emulator/emulator-extern.cpp +++ b/emulator/emulator-extern.cpp @@ -139,7 +139,7 @@ const char *transaction_emulator_emulate_transaction(void *transaction_emulator, now = (unsigned)std::time(nullptr); } bool is_special = wc == ton::masterchainId && emulator->get_config().is_special_smartcontract(addr); - if (!account.unpack(vm::load_cell_slice_ref(shard_account_cell.move_as_ok()), td::Ref(), now, is_special)) { + if (!account.unpack(vm::load_cell_slice_ref(shard_account_cell.move_as_ok()), now, is_special)) { ERROR_RESPONSE(PSTRING() << "Can't unpack shard account"); } @@ -217,7 +217,7 @@ const char *transaction_emulator_emulate_tick_tock_transaction(void *transaction now = (unsigned)std::time(nullptr); } bool is_special = wc == ton::masterchainId && emulator->get_config().is_special_smartcontract(addr); - if (!account.unpack(vm::load_cell_slice_ref(shard_account_cell.move_as_ok()), td::Ref(), now, is_special)) { + if (!account.unpack(vm::load_cell_slice_ref(shard_account_cell.move_as_ok()), now, is_special)) { ERROR_RESPONSE(PSTRING() << "Can't unpack shard account"); } diff --git a/emulator/transaction-emulator.cpp b/emulator/transaction-emulator.cpp index 505c0c370..81cf2e9fd 100644 --- a/emulator/transaction-emulator.cpp +++ b/emulator/transaction-emulator.cpp @@ -1,7 +1,7 @@ #include #include "transaction-emulator.h" #include "crypto/common/refcnt.hpp" -#include "vm/cp0.h" +#include "vm/vm.h" #include "tdutils/td/utils/Time.h" using td::Ref; @@ -34,7 +34,7 @@ td::Result> TransactionEmu return fetch_res.move_as_error_prefix("cannot fetch config params "); } - vm::init_op_cp0(debug_enabled_); + TRY_STATUS(vm::init_vm(debug_enabled_)); if (!lt) { lt = lt_; diff --git a/fec/CMakeLists.txt b/fec/CMakeLists.txt index b1ac37b10..2a3056071 100644 --- a/fec/CMakeLists.txt +++ b/fec/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.0.2 FATAL_ERROR) +cmake_minimum_required(VERSION 3.5 FATAL_ERROR) if (NOT OPENSSL_FOUND) find_package(OpenSSL REQUIRED) diff --git a/fec/fec.cpp b/fec/fec.cpp index 102df0389..f6379fd74 100644 --- a/fec/fec.cpp +++ b/fec/fec.cpp @@ -99,7 +99,7 @@ td::uint32 FecType::symbol_size() const { } td::Result FecType::create(tl_object_ptr obj) { - td::int32 data_size_int, symbol_size_int, symbols_count_int; + td::int32 data_size_int = 0, symbol_size_int = 0, symbols_count_int = 0; ton_api::downcast_call(*obj, td::overloaded([&](const auto &obj) { data_size_int = obj.data_size_; symbol_size_int = obj.symbol_size_; diff --git a/flake.lock b/flake.lock index ca44d4c02..d22f15d3b 100644 --- a/flake.lock +++ b/flake.lock @@ -36,8 +36,8 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1682600000, - "narHash": "sha256-ha4BehR1dh8EnXSoE1m/wyyYVvHI9txjW4w5/oxsW5Y=", + "lastModified": 1698846319, + "narHash": "sha256-4jyW/dqFBVpWFnhl0nvP6EN4lP7/ZqPxYRjl6var0Oc=", "owner": "nixos", "repo": "nixpkgs", "rev": "50fc86b75d2744e1ab3837ef74b53f103a9b55a0", @@ -45,7 +45,7 @@ }, "original": { "owner": "nixos", - "ref": "nixos-22.05", + "ref": "nixos-23.05", "repo": "nixpkgs", "type": "github" } diff --git a/flake.nix b/flake.nix index cb70b5bb0..4e993ac5d 100644 --- a/flake.nix +++ b/flake.nix @@ -1,6 +1,6 @@ { inputs = { - nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-22.05"; + nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-23.05"; nixpkgs-trunk.url = "github:nixos/nixpkgs"; flake-compat = { url = "github:edolstra/flake-compat"; @@ -28,14 +28,14 @@ # then we can skip these manual overrides # and switch between pkgsStatic and pkgsStatic.pkgsMusl for static glibc and musl builds if !staticExternalDeps then [ - openssl_1_1 + openssl zlib libmicrohttpd libsodium secp256k1 ] else [ - (openssl_1_1.override { static = true; }).dev + (openssl.override { static = true; }).dev (zlib.override { shared = false; }).dev ] ++ optionals (!stdenv.isDarwin) [ pkgsStatic.libmicrohttpd.dev pkgsStatic.libsodium.dev secp256k1 ] @@ -50,6 +50,8 @@ ] ++ optionals (staticGlibc || staticMusl) [ "-DCMAKE_LINK_SEARCH_START_STATIC=ON" "-DCMAKE_LINK_SEARCH_END_STATIC=ON" + ] ++ optionals (stdenv.isDarwin) [ + "-DCMAKE_CXX_FLAGS=-stdlib=libc++" "-DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=11.7" ]; LDFLAGS = optional staticExternalDeps (concatStringsSep " " [ diff --git a/http/CMakeLists.txt b/http/CMakeLists.txt index dbc57ec21..4a3fccf82 100644 --- a/http/CMakeLists.txt +++ b/http/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.0.2 FATAL_ERROR) +cmake_minimum_required(VERSION 3.5 FATAL_ERROR) set(HTTP_SOURCE http.h diff --git a/keyring/CMakeLists.txt b/keyring/CMakeLists.txt index 29e48ee99..f8f610f2f 100644 --- a/keyring/CMakeLists.txt +++ b/keyring/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.0.2 FATAL_ERROR) +cmake_minimum_required(VERSION 3.5 FATAL_ERROR) set(KEYRING_SOURCE keyring.h diff --git a/keys/CMakeLists.txt b/keys/CMakeLists.txt index 486119de6..e80436b7b 100644 --- a/keys/CMakeLists.txt +++ b/keys/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.0.2 FATAL_ERROR) +cmake_minimum_required(VERSION 3.5 FATAL_ERROR) set(KEYS_SOURCE keys.cpp diff --git a/lite-client/CMakeLists.txt b/lite-client/CMakeLists.txt index b84495162..53e09d772 100644 --- a/lite-client/CMakeLists.txt +++ b/lite-client/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.0.2 FATAL_ERROR) +cmake_minimum_required(VERSION 3.5 FATAL_ERROR) add_library(lite-client-common lite-client-common.cpp lite-client-common.h) target_link_libraries(lite-client-common PUBLIC tdutils tdactor adnllite tl_api tl_lite_api tl-lite-utils ton_crypto ton_block) diff --git a/lite-client/lite-client.cpp b/lite-client/lite-client.cpp index feedbe40b..dd6df40f7 100644 --- a/lite-client/lite-client.cpp +++ b/lite-client/lite-client.cpp @@ -4307,7 +4307,7 @@ int main(int argc, char* argv[]) { }); #endif - vm::init_op_cp0(true); // enable vm debug + vm::init_vm(true).ensure(); // enable vm debug td::actor::Scheduler scheduler({2}); diff --git a/memprof/CMakeLists.txt b/memprof/CMakeLists.txt index 8559c4d9c..2ccf11dfd 100644 --- a/memprof/CMakeLists.txt +++ b/memprof/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.0.2 FATAL_ERROR) +cmake_minimum_required(VERSION 3.5 FATAL_ERROR) set(MEMPROF_SOURCE memprof/memprof.cpp diff --git a/overlay/CMakeLists.txt b/overlay/CMakeLists.txt index 7adc05842..ab9722a60 100644 --- a/overlay/CMakeLists.txt +++ b/overlay/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.0.2 FATAL_ERROR) +cmake_minimum_required(VERSION 3.5 FATAL_ERROR) if (NOT OPENSSL_FOUND) find_package(OpenSSL REQUIRED) diff --git a/rldp-http-proxy/CMakeLists.txt b/rldp-http-proxy/CMakeLists.txt index 92cb01ac5..f7e30c802 100644 --- a/rldp-http-proxy/CMakeLists.txt +++ b/rldp-http-proxy/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.0.2 FATAL_ERROR) +cmake_minimum_required(VERSION 3.5 FATAL_ERROR) add_executable(rldp-http-proxy rldp-http-proxy.cpp DNSResolver.h DNSResolver.cpp) target_include_directories(rldp-http-proxy PUBLIC $) diff --git a/rldp/CMakeLists.txt b/rldp/CMakeLists.txt index 813d346da..39e0d3ca8 100644 --- a/rldp/CMakeLists.txt +++ b/rldp/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.0.2 FATAL_ERROR) +cmake_minimum_required(VERSION 3.5 FATAL_ERROR) if (NOT OPENSSL_FOUND) find_package(OpenSSL REQUIRED) diff --git a/rldp2/CMakeLists.txt b/rldp2/CMakeLists.txt index 1bfeb0bbb..c144ec01d 100644 --- a/rldp2/CMakeLists.txt +++ b/rldp2/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.0.2 FATAL_ERROR) +cmake_minimum_required(VERSION 3.5 FATAL_ERROR) if (NOT OPENSSL_FOUND) find_package(OpenSSL REQUIRED) diff --git a/storage/CMakeLists.txt b/storage/CMakeLists.txt index a5f36ff20..0208a33d7 100644 --- a/storage/CMakeLists.txt +++ b/storage/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.0.2 FATAL_ERROR) +cmake_minimum_required(VERSION 3.5 FATAL_ERROR) if (NOT OPENSSL_FOUND) find_package(OpenSSL REQUIRED) diff --git a/storage/storage-daemon/CMakeLists.txt b/storage/storage-daemon/CMakeLists.txt index 4880eeceb..c987858f6 100644 --- a/storage/storage-daemon/CMakeLists.txt +++ b/storage/storage-daemon/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.0.2 FATAL_ERROR) +cmake_minimum_required(VERSION 3.5 FATAL_ERROR) add_executable(embed-provider-code smartcont/embed-provider-code.cpp) diff --git a/storage/test/storage.cpp b/storage/test/storage.cpp index e7a97352b..ff5a4831a 100644 --- a/storage/test/storage.cpp +++ b/storage/test/storage.cpp @@ -400,7 +400,6 @@ class NetChannel : public td::actor::Actor { break; } else if (l > alive_end - eps) { alive_begin += alive_step + sleep_step; - alive_end = alive_begin + alive_step; } else { double new_l = td::min(alive_end, r); res += (new_l - l) * speed; @@ -516,9 +515,7 @@ class NetChannel : public td::actor::Actor { queue_ = {}; } - bool ok = false; while (!queue_.empty() && (double)queue_.front().size < got_) { - ok = true; auto query = queue_.pop(); got_ -= (double)query.size; total_size_ -= (double)query.size; diff --git a/tdactor/CMakeLists.txt b/tdactor/CMakeLists.txt index 3490eb173..46dd03356 100644 --- a/tdactor/CMakeLists.txt +++ b/tdactor/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.0.2 FATAL_ERROR) +cmake_minimum_required(VERSION 3.5 FATAL_ERROR) #SOURCE SETS set(TDACTOR_SOURCE diff --git a/tdactor/benchmark/CMakeLists.txt b/tdactor/benchmark/CMakeLists.txt index e01d33dc8..c4ff79a1b 100644 --- a/tdactor/benchmark/CMakeLists.txt +++ b/tdactor/benchmark/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.0.2 FATAL_ERROR) +cmake_minimum_required(VERSION 3.5 FATAL_ERROR) set(BENCHMARK_SOURCE benchmark.cpp diff --git a/tdactor/test/actors_core.cpp b/tdactor/test/actors_core.cpp index ae10eb9be..96cd6239e 100644 --- a/tdactor/test/actors_core.cpp +++ b/tdactor/test/actors_core.cpp @@ -720,7 +720,7 @@ TEST(Actor2, actor_function_result) { } TEST(Actor2, actor_ping_pong) { - Scheduler scheduler{{3}, Scheduler::Paused}; + Scheduler scheduler{{3}, false, Scheduler::Paused}; sb.clear(); scheduler.start(); @@ -799,7 +799,7 @@ TEST(Actor2, Schedulers) { for (auto run_count : {0, 1, 2}) { for (auto stop_count : {0, 1, 2}) { for (size_t threads : {0, 1}) { - Scheduler scheduler({threads}, mode); + Scheduler scheduler({threads}, false, mode); for (int i = 0; i < start_count; i++) { scheduler.start(); } diff --git a/tdactor/test/actors_promise.cpp b/tdactor/test/actors_promise.cpp index f1d570697..5717b394c 100644 --- a/tdactor/test/actors_promise.cpp +++ b/tdactor/test/actors_promise.cpp @@ -210,7 +210,7 @@ TEST(Actor, promise_future) { TEST(Actor2, actor_lost_promise) { using namespace td::actor; using namespace td; - Scheduler scheduler({1}, Scheduler::Paused); + Scheduler scheduler({1}, false, Scheduler::Paused); auto watcher = td::create_shared_destructor([] { LOG(ERROR) << "STOP"; diff --git a/tddb/CMakeLists.txt b/tddb/CMakeLists.txt index 1acd54202..89730b954 100644 --- a/tddb/CMakeLists.txt +++ b/tddb/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.0.2 FATAL_ERROR) +cmake_minimum_required(VERSION 3.5 FATAL_ERROR) #SOURCE SETS set(TDDB_UTILS_SOURCE diff --git a/tddb/td/db/utils/BlobView.cpp b/tddb/td/db/utils/BlobView.cpp index 7011a00ed..ebfbc6d54 100644 --- a/tddb/td/db/utils/BlobView.cpp +++ b/tddb/td/db/utils/BlobView.cpp @@ -311,6 +311,7 @@ td::Result FileMemoryMappingBlobView::create(td::CSlice file_path, td: class CyclicBlobViewImpl : public BlobViewImpl { public: CyclicBlobViewImpl(td::BufferSlice data, td::uint64 total_size) : data_(std::move(data)), total_size_(total_size) { + CHECK(!data_.empty()); } td::Result view_impl(td::MutableSlice slice, td::uint64 offset) override { auto res = slice; diff --git a/tdfec/CMakeLists.txt b/tdfec/CMakeLists.txt index adfe2fdbc..828ff90d5 100644 --- a/tdfec/CMakeLists.txt +++ b/tdfec/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.0.2 FATAL_ERROR) +cmake_minimum_required(VERSION 3.5 FATAL_ERROR) set(TDFEC_SOURCE td/fec/raptorq/Rfc.cpp diff --git a/tdfec/benchmark/CMakeLists.txt b/tdfec/benchmark/CMakeLists.txt index 93ec575da..ee8f72cbf 100644 --- a/tdfec/benchmark/CMakeLists.txt +++ b/tdfec/benchmark/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.0.2 FATAL_ERROR) +cmake_minimum_required(VERSION 3.5 FATAL_ERROR) add_executable(benchmark-fec benchmark.cpp ) target_include_directories(benchmark-fec PUBLIC $) diff --git a/tdfec/td/fec/raptorq/Rfc.h b/tdfec/td/fec/raptorq/Rfc.h index 1f5c27f01..e3a331316 100644 --- a/tdfec/td/fec/raptorq/Rfc.h +++ b/tdfec/td/fec/raptorq/Rfc.h @@ -61,7 +61,7 @@ class Rfc { template void encoding_row_for_each(EncodingRow t, F &&f) const { f(t.b); - for (uint16 j = 1; j < t.d; ++j) { + for (uint32 j = 1; j < t.d; ++j) { t.b = (t.b + t.a) % W; f(t.b); } diff --git a/tdnet/CMakeLists.txt b/tdnet/CMakeLists.txt index d5ae7086b..bc00a6769 100644 --- a/tdnet/CMakeLists.txt +++ b/tdnet/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.0.2 FATAL_ERROR) +cmake_minimum_required(VERSION 3.5 FATAL_ERROR) set(TDNET_SOURCE td/net/FdListener.cpp diff --git a/tdtl/CMakeLists.txt b/tdtl/CMakeLists.txt index b0f83cd98..482bd0f7b 100644 --- a/tdtl/CMakeLists.txt +++ b/tdtl/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.0.2 FATAL_ERROR) +cmake_minimum_required(VERSION 3.5 FATAL_ERROR) #SOURCE SETS set(TDTL_SOURCE diff --git a/tdutils/CMakeLists.txt b/tdutils/CMakeLists.txt index 7b577e4f8..f1e4b1ea5 100644 --- a/tdutils/CMakeLists.txt +++ b/tdutils/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.0.2 FATAL_ERROR) +cmake_minimum_required(VERSION 3.5 FATAL_ERROR) option(TDUTILS_MIME_TYPE "Generate mime types conversion (gperf is required)" ON) @@ -314,7 +314,7 @@ if (WIN32) # find_library(WS2_32_LIBRARY ws2_32) # find_library(MSWSOCK_LIBRARY Mswsock) # target_link_libraries(tdutils PRIVATE ${WS2_32_LIBRARY} ${MSWSOCK_LIBRARY}) - target_link_libraries(tdutils PRIVATE ws2_32 Mswsock Normaliz psapi) + target_link_libraries(tdutils PRIVATE ws2_32 Mswsock Normaliz psapi DbgHelp) endif() if (NOT CMAKE_CROSSCOMPILING AND TDUTILS_MIME_TYPE) add_dependencies(tdutils tdmime_auto) diff --git a/tdutils/generate/CMakeLists.txt b/tdutils/generate/CMakeLists.txt index 07353e519..194fda391 100644 --- a/tdutils/generate/CMakeLists.txt +++ b/tdutils/generate/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.0.2 FATAL_ERROR) +cmake_minimum_required(VERSION 3.5 FATAL_ERROR) # Generates files for MIME type <-> extension conversions # DEPENDS ON: gperf grep bash/powershell diff --git a/tdutils/td/utils/BigNum.cpp b/tdutils/td/utils/BigNum.cpp index 36dde064c..9de11fcae 100644 --- a/tdutils/td/utils/BigNum.cpp +++ b/tdutils/td/utils/BigNum.cpp @@ -159,7 +159,11 @@ bool BigNum::is_bit_set(int num) const { } bool BigNum::is_prime(BigNumContext &context) const { +#if OPENSSL_VERSION_MAJOR >= 3 + int result = BN_check_prime(impl_->big_num, context.impl_->big_num_context, nullptr); +#else int result = BN_is_prime_ex(impl_->big_num, BN_prime_checks, context.impl_->big_num_context, nullptr); +#endif LOG_IF(FATAL, result == -1); return result == 1; } diff --git a/tdutils/td/utils/BufferedUdp.h b/tdutils/td/utils/BufferedUdp.h index bf4aa1b80..3fa93e9da 100644 --- a/tdutils/td/utils/BufferedUdp.h +++ b/tdutils/td/utils/BufferedUdp.h @@ -106,6 +106,7 @@ class UdpReader { } if (status.is_error() && !UdpSocketFd::is_critical_read_error(status)) { queue.push(UdpMessage{{}, {}, std::move(status)}); + return td::Status::OK(); } return status; } diff --git a/tdutils/td/utils/crypto.cpp b/tdutils/td/utils/crypto.cpp index 27313cf30..ea1efbe79 100644 --- a/tdutils/td/utils/crypto.cpp +++ b/tdutils/td/utils/crypto.cpp @@ -25,7 +25,6 @@ #include "td/utils/logging.h" #include "td/utils/misc.h" #include "td/utils/port/RwMutex.h" -#include "td/utils/port/thread_local.h" #include "td/utils/Random.h" #include "td/utils/ScopeGuard.h" #include "td/utils/SharedSlice.h" @@ -598,16 +597,23 @@ void aes_ige_decrypt(Slice aes_key, MutableSlice aes_iv, Slice from, MutableSlic static void aes_cbc_xcrypt(Slice aes_key, MutableSlice aes_iv, Slice from, MutableSlice to, bool encrypt_flag) { CHECK(aes_key.size() == 32); CHECK(aes_iv.size() == 16); - AES_KEY key; - int err; + CHECK(from.size() <= to.size()); + CHECK(from.size() % 16 == 0); + int out_len = 0; + EVP_CIPHER_CTX *ctx = EVP_CIPHER_CTX_new(); + CHECK(ctx); if (encrypt_flag) { - err = AES_set_encrypt_key(aes_key.ubegin(), 256, &key); + CHECK(EVP_EncryptInit_ex(ctx, EVP_aes_256_cbc(), nullptr, aes_key.ubegin(), aes_iv.ubegin()) == 1); + CHECK(EVP_CIPHER_CTX_set_padding(ctx, 0) == 1); + CHECK(EVP_EncryptUpdate(ctx, to.ubegin(), &out_len, from.ubegin(), td::narrow_cast(from.size())) == 1); + CHECK(EVP_EncryptFinal_ex(ctx, to.ubegin() + out_len, &out_len) == 1); } else { - err = AES_set_decrypt_key(aes_key.ubegin(), 256, &key); + CHECK(EVP_DecryptInit_ex(ctx, EVP_aes_256_cbc(), nullptr, aes_key.ubegin(), aes_iv.ubegin()) == 1); + CHECK(EVP_CIPHER_CTX_set_padding(ctx, 0) == 1); + CHECK(EVP_DecryptUpdate(ctx, to.ubegin(), &out_len, from.ubegin(), td::narrow_cast(from.size())) == 1); + CHECK(EVP_DecryptFinal_ex(ctx, to.ubegin() + out_len, &out_len) == 1); } - LOG_IF(FATAL, err != 0); - CHECK(from.size() <= to.size()); - AES_cbc_encrypt(from.ubegin(), to.ubegin(), from.size(), &key, aes_iv.ubegin(), encrypt_flag); + EVP_CIPHER_CTX_free(ctx); } void aes_cbc_encrypt(Slice aes_key, MutableSlice aes_iv, Slice from, MutableSlice to) { @@ -723,7 +729,18 @@ string sha512(Slice data) { class Sha256State::Impl { public: - SHA256_CTX ctx_; + EVP_MD_CTX *ctx_ = nullptr; + + Impl() { + ctx_ = EVP_MD_CTX_new(); + CHECK(ctx_); + } + + ~Impl() { + if (ctx_) { + EVP_MD_CTX_free(ctx_); + } + } }; Sha256State::Sha256State() = default; @@ -755,24 +772,23 @@ void Sha256State::init() { impl_ = make_unique(); } CHECK(!is_inited_); - int err = SHA256_Init(&impl_->ctx_); - LOG_IF(FATAL, err != 1); + CHECK(EVP_DigestInit_ex(impl_->ctx_, EVP_sha256(), nullptr) == 1); is_inited_ = true; } void Sha256State::feed(Slice data) { CHECK(impl_); CHECK(is_inited_); - int err = SHA256_Update(&impl_->ctx_, data.ubegin(), data.size()); - LOG_IF(FATAL, err != 1); + CHECK(EVP_DigestUpdate(impl_->ctx_, data.ubegin(), data.size()) == 1); } void Sha256State::extract(MutableSlice output, bool destroy) { CHECK(output.size() >= 32); CHECK(impl_); CHECK(is_inited_); - int err = SHA256_Final(output.ubegin(), &impl_->ctx_); - LOG_IF(FATAL, err != 1); + unsigned size; + CHECK(EVP_DigestFinal_ex(impl_->ctx_, output.ubegin(), &size) == 1); + CHECK(size == 32); is_inited_ = false; if (destroy) { impl_.reset(); diff --git a/tdutils/td/utils/crypto.h b/tdutils/td/utils/crypto.h index 592a8a00a..4494ef481 100644 --- a/tdutils/td/utils/crypto.h +++ b/tdutils/td/utils/crypto.h @@ -151,7 +151,7 @@ class Sha256State { bool is_inited_ = false; }; -void md5(Slice input, MutableSlice output); +[[deprecated("MD5 is not cryptographically secure")]] void md5(Slice input, MutableSlice output); void pbkdf2_sha256(Slice password, Slice salt, int iteration_count, MutableSlice dest); void pbkdf2_sha512(Slice password, Slice salt, int iteration_count, MutableSlice dest); diff --git a/tdutils/td/utils/port/stacktrace.cpp b/tdutils/td/utils/port/stacktrace.cpp index 2c025d2e5..e89daec67 100644 --- a/tdutils/td/utils/port/stacktrace.cpp +++ b/tdutils/td/utils/port/stacktrace.cpp @@ -20,9 +20,13 @@ #include "td/utils/port/signals.h" -#if __GLIBC__ +#if TD_WINDOWS +#include +#else +#if TD_DARWIN || __GLIBC__ #include #endif +#endif #if TD_LINUX || TD_FREEBSD #include @@ -39,13 +43,48 @@ namespace td { namespace { void print_backtrace(void) { -#if __GLIBC__ +#if TD_WINDOWS + void *stack[100]; + HANDLE process = GetCurrentProcess(); + SymInitialize(process, nullptr, 1); + unsigned frames = CaptureStackBackTrace(0, 100, stack, nullptr); + signal_safe_write("------- Stack Backtrace -------\n", false); + for (unsigned i = 0; i < frames; i++) { + td::uint8 symbol_buf[sizeof(SYMBOL_INFO) + 256]; + auto symbol = (SYMBOL_INFO *)symbol_buf; + memset(symbol_buf, 0, sizeof(symbol_buf)); + symbol->MaxNameLen = 255; + symbol->SizeOfStruct = sizeof(SYMBOL_INFO); + SymFromAddr(process, (DWORD64)(stack[i]), nullptr, symbol); + // Don't use sprintf here because it is not signal-safe + char buf[256 + 32]; + char* buf_ptr = buf; + if (frames - i - 1 < 10) { + strcpy(buf_ptr, " "); + buf_ptr += strlen(buf_ptr); + } + _itoa(frames - i - 1, buf_ptr, 10); + buf_ptr += strlen(buf_ptr); + strcpy(buf_ptr, ": ["); + buf_ptr += strlen(buf_ptr); + _ui64toa(td::uint64(symbol->Address), buf_ptr, 16); + buf_ptr += strlen(buf_ptr); + strcpy(buf_ptr, "] "); + buf_ptr += strlen(buf_ptr); + strcpy(buf_ptr, symbol->Name); + buf_ptr += strlen(buf_ptr); + strcpy(buf_ptr, "\n"); + signal_safe_write(td::Slice{buf, strlen(buf)}, false); + } +#else +#if TD_DARWIN || __GLIBC__ void *buffer[128]; int nptrs = backtrace(buffer, 128); signal_safe_write("------- Stack Backtrace -------\n", false); backtrace_symbols_fd(buffer, nptrs, 2); signal_safe_write("-------------------------------\n", false); #endif +#endif } void print_backtrace_gdb(void) { @@ -129,7 +168,7 @@ void Stacktrace::print_to_stderr(const PrintOptions &options) { } void Stacktrace::init() { -#if __GLIBC__ +#if TD_DARWIN || __GLIBC__ // backtrace needs to be called once to ensure that next calls are async-signal-safe void *buffer[1]; backtrace(buffer, 1); diff --git a/tdutils/test/MpmcWaiter.cpp b/tdutils/test/MpmcWaiter.cpp index 9cb5b3635..d0a9fc84e 100644 --- a/tdutils/test/MpmcWaiter.cpp +++ b/tdutils/test/MpmcWaiter.cpp @@ -75,9 +75,9 @@ void test_waiter_stress_one_one() { TEST(MpmcEagerWaiter, stress_one_one) { test_waiter_stress_one_one(); } -TEST(MpmcSleepyWaiter, stress_one_one) { - test_waiter_stress_one_one(); -} +// TEST(MpmcSleepyWaiter, stress_one_one) { +// test_waiter_stress_one_one(); +// } template void test_waiter_stress() { diff --git a/terminal/CMakeLists.txt b/terminal/CMakeLists.txt index ae8c70bd8..af51153f3 100644 --- a/terminal/CMakeLists.txt +++ b/terminal/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.0.2 FATAL_ERROR) +cmake_minimum_required(VERSION 3.5 FATAL_ERROR) if (NOT OPENSSL_FOUND) find_package(OpenSSL REQUIRED) diff --git a/test/ed25519_crypto.cpp b/test/ed25519_crypto.cpp deleted file mode 100644 index 371b72471..000000000 --- a/test/ed25519_crypto.cpp +++ /dev/null @@ -1,2053 +0,0 @@ -/* - This file is part of TON Blockchain source code. - - TON Blockchain 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 2 - of the License, or (at your option) any later version. - - TON Blockchain 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 TON Blockchain. If not, see . - - In addition, as a special exception, the copyright holders give permission - to link the code of portions of this program with the OpenSSL library. - You must obey the GNU General Public License in all respects for all - of the code used other than OpenSSL. If you modify file(s) with this - exception, you may extend this exception to your version of the file(s), - but you are not obligated to do so. If you do not wish to do so, delete this - exception statement from your version. If you delete this exception statement - from all source files in the program, then also delete it here. - - Copyright 2017-2020 Telegram Systems LLP -*/ -#include -#include -#include -#include -#include - -// ****************************************************** - -namespace openssl { -#include -} - -namespace arith { -struct dec_string { - std::string str; - explicit dec_string(const std::string& s) : str(s) { - } -}; - -struct hex_string { - std::string str; - explicit hex_string(const std::string& s) : str(s) { - } -}; -} // namespace arith - -namespace arith { - -using namespace openssl; - -inline void bn_assert(int cond); -BN_CTX* get_ctx(); - -class BignumBitref { - BIGNUM* ptr; - int n; - - public: - BignumBitref(BIGNUM& x, int _n) : ptr(&x), n(_n){}; - operator bool() const { - return BN_is_bit_set(ptr, n); - } - BignumBitref& operator=(bool val); -}; - -class Bignum { - BIGNUM val; - - public: - class bignum_error {}; - Bignum() { - BN_init(&val); - } - Bignum(long x) { - BN_init(&val); - set_long(x); - } - ~Bignum() { - BN_free(&val); - } - Bignum(const dec_string& ds) { - BN_init(&val); - set_dec_str(ds.str); - } - Bignum(const hex_string& hs) { - BN_init(&val); - set_hex_str(hs.str); - } - Bignum(const Bignum& x) { - BN_init(&val); - BN_copy(&val, &x.val); - } - //Bignum (Bignum&& x) { val = x.val; } - void clear() { - BN_clear(&val); - } // use this for sensitive data - Bignum& operator=(const Bignum& x) { - BN_copy(&val, &x.val); - return *this; - } - Bignum& operator=(Bignum&& x) { - swap(x); - return *this; - } - Bignum& operator=(long x) { - return set_long(x); - } - Bignum& operator=(const dec_string& ds) { - return set_dec_str(ds.str); - } - Bignum& operator=(const hex_string& hs) { - return set_hex_str(hs.str); - } - Bignum& swap(Bignum& x) { - BN_swap(&val, &x.val); - return *this; - } - BIGNUM* bn_ptr() { - return &val; - } - const BIGNUM* bn_ptr() const { - return &val; - } - bool is_zero() const { - return BN_is_zero(&val); - } - int sign() const { - return BN_is_zero(&val) ? 0 : (BN_is_negative(&val) ? -1 : 1); - } - bool odd() const { - return BN_is_odd(&val); - } - int num_bits() const { - return BN_num_bits(&val); - } - int num_bytes() const { - return BN_num_bytes(&val); - } - bool operator[](int n) const { - return BN_is_bit_set(&val, n); - } - BignumBitref operator[](int n) { - return BignumBitref(val, n); - } - void export_msb(unsigned char* buffer, std::size_t size) const; - Bignum& import_msb(const unsigned char* buffer, std::size_t size); - Bignum& import_msb(const std::string& s) { - return import_msb((const unsigned char*)s.c_str(), s.size()); - } - void export_lsb(unsigned char* buffer, std::size_t size) const; - Bignum& import_lsb(const unsigned char* buffer, std::size_t size); - Bignum& import_lsb(const std::string& s) { - return import_lsb((const unsigned char*)s.c_str(), s.size()); - } - - Bignum& set_dec_str(std::string s) { - BIGNUM* tmp = &val; - bn_assert(BN_dec2bn(&tmp, s.c_str())); - return *this; - } - - Bignum& set_hex_str(std::string s) { - BIGNUM* tmp = &val; - bn_assert(BN_hex2bn(&tmp, s.c_str())); - return *this; - } - - Bignum& set_ulong(unsigned long x) { - bn_assert(BN_set_word(&val, x)); - return *this; - } - - Bignum& set_long(long x) { - set_ulong(std::abs(x)); - return x < 0 ? negate() : *this; - } - - Bignum& negate() { - BN_set_negative(&val, !BN_is_negative(&val)); - return *this; - } - - Bignum& operator+=(const Bignum& y) { - bn_assert(BN_add(&val, &val, &y.val)); - return *this; - } - - Bignum& operator+=(long y) { - bn_assert((y >= 0 ? BN_add_word : BN_sub_word)(&val, std::abs(y))); - return *this; - } - - Bignum& operator-=(long y) { - bn_assert((y >= 0 ? BN_sub_word : BN_add_word)(&val, std::abs(y))); - return *this; - } - - Bignum& operator*=(const Bignum& y) { - bn_assert(BN_mul(&val, &val, &y.val, get_ctx())); - return *this; - } - - Bignum& operator*=(long y) { - if (y < 0) { - negate(); - } - bn_assert(BN_mul_word(&val, std::abs(y))); - return *this; - } - - Bignum& operator<<=(int r) { - bn_assert(BN_lshift(&val, &val, r)); - return *this; - } - - Bignum& operator>>=(int r) { - bn_assert(BN_rshift(&val, &val, r)); - return *this; - } - - Bignum& operator/=(const Bignum& y) { - Bignum w; - bn_assert(BN_div(&val, &w.val, &val, &y.val, get_ctx())); - return *this; - } - - Bignum& operator/=(long y) { - bn_assert(BN_div_word(&val, std::abs(y)) != (BN_ULONG)(-1)); - return y < 0 ? negate() : *this; - } - - Bignum& operator%=(const Bignum& y) { - bn_assert(BN_mod(&val, &val, &y.val, get_ctx())); - return *this; - } - - Bignum& operator%=(long y) { - BN_ULONG rem = BN_mod_word(&val, std::abs(y)); - bn_assert(rem != (BN_ULONG)(-1)); - return set_long(y < 0 ? -rem : rem); - } - - unsigned long divmod(unsigned long y) { - BN_ULONG rem = BN_div_word(&val, y); - bn_assert(rem != (BN_ULONG)(-1)); - return rem; - } - - const Bignum divmod(const Bignum& y); - - std::string to_str() const; - std::string to_hex() const; -}; - -inline void bn_assert(int cond) { - if (!cond) { - throw Bignum::bignum_error(); - } -} - -BN_CTX* get_ctx(void) { - static BN_CTX* ctx = BN_CTX_new(); - return ctx; -} - -BignumBitref& BignumBitref::operator=(bool val) { - if (val) { - BN_set_bit(ptr, n); - } else { - BN_clear_bit(ptr, n); - } - return *this; -} - -const Bignum operator+(const Bignum& x, const Bignum& y) { - Bignum z; - bn_assert(BN_add(z.bn_ptr(), x.bn_ptr(), y.bn_ptr())); - return z; -} - -const Bignum operator+(const Bignum& x, long y) { - if (y > 0) { - Bignum z(x); - bn_assert(BN_add_word(z.bn_ptr(), y)); - return z; - } else if (y < 0) { - Bignum z(x); - bn_assert(BN_sub_word(z.bn_ptr(), -y)); - return z; - } else { - return x; - } -} - -/* - const Bignum operator+ (Bignum&& x, long y) { - if (y > 0) { - bn_assert (BN_add_word (x.bn_ptr(), y)); - } else if (y < 0) { - bn_assert (BN_sub_word (x.bn_ptr(), -y)); - } - return std::move (x); - } - */ - -const Bignum operator+(long y, const Bignum& x) { - return x + y; -} - -/* - const Bignum operator+ (long y, Bignum&& x) { - return x + y; - } - */ - -const Bignum operator-(const Bignum& x, const Bignum& y) { - Bignum z; - bn_assert(BN_sub(z.bn_ptr(), x.bn_ptr(), y.bn_ptr())); - return z; -} - -const Bignum operator-(const Bignum& x, long y) { - return x + (-y); -} - -/* - const Bignum operator- (Bignum&& x, long y) { - return x + (-y); - } - */ - -const Bignum operator*(const Bignum& x, const Bignum& y) { - Bignum z; - bn_assert(BN_mul(z.bn_ptr(), x.bn_ptr(), y.bn_ptr(), get_ctx())); - return z; -} - -const Bignum operator*(const Bignum& x, long y) { - if (y > 0) { - Bignum z(x); - bn_assert(BN_mul_word(z.bn_ptr(), y)); - return z; - } else if (y < 0) { - Bignum z(x); - z.negate(); - bn_assert(BN_mul_word(z.bn_ptr(), -y)); - return z; - } else { - Bignum z(0); - return z; - } -} - -/* - const Bignum operator* (Bignum&& x, long y) { - if (y > 0) { - bn_assert (BN_mul_word (x.bn_ptr(), y)); - } else if (y < 0) { - x.negate(); - bn_assert (BN_mul_word (x.bn_ptr(), -y)); - } else { - x = 0; - } - return std::move (x); - } - */ - -const Bignum operator*(long y, const Bignum& x) { - return x * y; -} - -const Bignum operator/(const Bignum& x, const Bignum& y) { - Bignum z, w; - bn_assert(BN_div(z.bn_ptr(), w.bn_ptr(), x.bn_ptr(), y.bn_ptr(), get_ctx())); - return z; -} - -const Bignum Bignum::divmod(const Bignum& y) { - Bignum w; - bn_assert(BN_div(&val, w.bn_ptr(), &val, y.bn_ptr(), get_ctx())); - return w; -} - -const Bignum operator%(const Bignum& x, const Bignum& y) { - Bignum z; - bn_assert(BN_mod(z.bn_ptr(), x.bn_ptr(), y.bn_ptr(), get_ctx())); - return z; -} - -unsigned long operator%(const Bignum& x, unsigned long y) { - BN_ULONG rem = BN_mod_word(x.bn_ptr(), y); - bn_assert(rem != (BN_ULONG)(-1)); - return rem; -} - -const Bignum operator<<(const Bignum& x, int r) { - Bignum z; - bn_assert(BN_lshift(z.bn_ptr(), x.bn_ptr(), r)); - return z; -} - -const Bignum operator>>(const Bignum& x, int r) { - Bignum z; - bn_assert(BN_rshift(z.bn_ptr(), x.bn_ptr(), r)); - return z; -} - -const Bignum abs(const Bignum& x) { - Bignum T(x); - if (T.sign() < 0) { - T.negate(); - } - return T; -} - -const Bignum sqr(const Bignum& x) { - Bignum z; - bn_assert(BN_sqr(z.bn_ptr(), x.bn_ptr(), get_ctx())); - return z; -} - -void Bignum::export_msb(unsigned char* buffer, std::size_t size) const { - bn_assert(size >= 0 && size <= (1 << 20)); - bn_assert(sign() >= 0); - int n = BN_num_bytes(&val); - bn_assert(n >= 0 && (unsigned)n <= size); - bn_assert(BN_bn2bin(&val, buffer + size - n) == n); - std::memset(buffer, 0, size - n); -} - -Bignum& Bignum::import_msb(const unsigned char* buffer, std::size_t size) { - bn_assert(size >= 0 && size <= (1 << 20)); - std::size_t i = 0; - while (i < size && !buffer[i]) { - i++; - } - bn_assert(BN_bin2bn(buffer + i, size - i, &val) == &val); - return *this; -} - -void Bignum::export_lsb(unsigned char* buffer, std::size_t size) const { - bn_assert(size >= 0 && size <= (1 << 20)); - bn_assert(sign() >= 0); - std::size_t n = BN_num_bytes(&val); - bn_assert(n >= 0 && (unsigned)n <= size); - bn_assert(BN_bn2bin(&val, buffer) == (int)n); - std::memset(buffer + n, 0, size - n); - for (std::size_t i = 0; 2 * i + 1 < n; i++) { - std::swap(buffer[i], buffer[n - 1 - i]); - } -} - -Bignum& Bignum::import_lsb(const unsigned char* buffer, std::size_t size) { - bn_assert(size >= 0 && size <= (1 << 20)); - while (size > 0 && !buffer[size - 1]) { - size--; - } - if (!size) { - bn_assert(BN_zero(&val)); - return *this; - } - unsigned char tmp[size], *ptr = tmp + size; - for (std::size_t i = 0; i < size; i++) { - *--ptr = buffer[i]; - } - bn_assert(BN_bin2bn(tmp, size, &val) == &val); - return *this; -} - -int cmp(const Bignum& x, const Bignum& y) { - return BN_cmp(x.bn_ptr(), y.bn_ptr()); -} - -bool operator==(const Bignum& x, const Bignum& y) { - return cmp(x, y) == 0; -} - -bool operator!=(const Bignum& x, const Bignum& y) { - return cmp(x, y) != 0; -} - -bool operator<(const Bignum& x, const Bignum& y) { - return cmp(x, y) < 0; -} - -bool operator<=(const Bignum& x, const Bignum& y) { - return cmp(x, y) <= 0; -} - -bool operator>(const Bignum& x, const Bignum& y) { - return cmp(x, y) > 0; -} - -bool operator>=(const Bignum& x, const Bignum& y) { - return cmp(x, y) >= 0; -} - -bool operator==(const Bignum& x, long y) { - if (y >= 0) { - return BN_is_word(x.bn_ptr(), y); - } else { - return x == Bignum(y); - } -} - -bool operator!=(const Bignum& x, long y) { - if (y >= 0) { - return !BN_is_word(x.bn_ptr(), y); - } else { - return x != Bignum(y); - } -} - -std::string Bignum::to_str() const { - char* ptr = BN_bn2dec(&val); - std::string z(ptr); - OPENSSL_free(ptr); - return z; -} - -std::string Bignum::to_hex() const { - char* ptr = BN_bn2hex(&val); - std::string z(ptr); - OPENSSL_free(ptr); - return z; -} - -std::ostream& operator<<(std::ostream& os, const Bignum& x) { - return os << x.to_str(); -} - -std::istream& operator>>(std::istream& is, Bignum& x) { - std::string word; - is >> word; - x = dec_string(word); - return is; -} - -bool is_prime(const Bignum& p, int nchecks = 64, bool trial_div = true) { - return BN_is_prime_fasttest_ex(p.bn_ptr(), BN_prime_checks, get_ctx(), trial_div, 0); -} -} // namespace arith - -namespace arith { -using namespace openssl; - -class Residue; -class ResidueRing; - -class ResidueRing { - public: - struct bad_modulus {}; - struct elem_cnt_mismatch { - int cnt; - elem_cnt_mismatch(int x) : cnt(x) { - } - }; - - private: - const Bignum modulus; - mutable int cnt; - bool prime; - void cnt_assert(bool b) { - if (!b) { - throw elem_cnt_mismatch(cnt); - } - } - Residue* Zero; - Residue* One; - Residue* Img_i; - void init(); - - public: - typedef Residue element; - explicit ResidueRing(Bignum mod) : modulus(mod), cnt(0), prime(arith::is_prime(mod)), Zero(0), One(0) { - init(); - } - ~ResidueRing(); - int incr_count() { - return ++cnt; - } - int decr_count() { - --cnt; - cnt_assert(cnt >= 0); - return cnt; - } - const Bignum& get_modulus() const { - return modulus; - } - bool is_prime() const { - return prime; - } - const Residue& zero() const { - return *Zero; - } - const Residue& one() const { - return *One; - } - const Residue& img_i(); - Residue frac(long num, long denom = 1); - Residue convert(long num); - Residue convert(const Bignum& x); - - Bignum reduce(const Bignum& x) { - Bignum r = x % modulus; - if (r.sign() < 0) { - r += modulus; - } - return r; - } - - Bignum& do_reduce(Bignum& x) { - x %= modulus; - if (x.sign() < 0) { - x += modulus; - } - return x; - } -}; - -class Residue { - public: - struct not_same_ring {}; - - private: - ResidueRing* ring; - mutable Bignum val; - Residue& reduce() { - ring->do_reduce(val); - return *this; - } - - public: - explicit Residue(ResidueRing& R) : ring(&R) { - R.incr_count(); - } - Residue(const Bignum& x, ResidueRing& R) : ring(&R), val(R.reduce(x)) { - R.incr_count(); - } - ~Residue() { - ring->decr_count(); - ring = 0; - } - Residue(const Residue& x) : ring(x.ring), val(x.val) { - ring->incr_count(); - } - Bignum extract() const { - return val; - } - const Bignum& extract_raw() const { - return val; - } - const Bignum& modulus() const { - return ring->get_modulus(); - } - void same_ring(const Residue& y) const { - if (ring != y.ring) { - throw not_same_ring(); - } - } - ResidueRing& ring_of() const { - return *ring; - } - bool is_zero() const { - return (val == 0); - } - Residue& operator=(const Residue& x) { - same_ring(x); - val = x.val; - return *this; - } - Residue& operator=(const Bignum& x) { - val = ring->reduce(x); - return *this; - } - Residue& operator+=(const Residue& y); - Residue& operator-=(const Residue& y); - Residue& operator*=(const Residue& y); - Residue& operator+=(long y) { - val += y; - return reduce(); - } - Residue& operator-=(long y) { - val -= y; - return reduce(); - } - Residue& operator*=(long y) { - val *= y; - return reduce(); - } - Residue& negate() { - val.negate(); - return reduce(); - } - friend const Residue operator+(const Residue& x, const Residue& y); - friend const Residue operator-(const Residue& x, const Residue& y); - friend const Residue operator*(const Residue& x, const Residue& y); - friend const Residue operator-(const Residue& x); - friend Residue sqr(const Residue& x); - friend Residue power(const Residue& x, const Bignum& y); - friend Residue inverse(const Residue& x); - std::string to_str() const; -}; - -void ResidueRing::init() { - Zero = new Residue(0, *this); - One = new Residue(1, *this); -} - -ResidueRing::~ResidueRing() { - delete Zero; - delete One; - Zero = One = 0; - cnt_assert(!cnt); -} - -const Residue operator+(const Residue& x, const Residue& y) { - x.same_ring(y); - Residue z(x.ring_of()); - bn_assert(BN_mod_add(z.val.bn_ptr(), x.val.bn_ptr(), y.val.bn_ptr(), x.modulus().bn_ptr(), get_ctx())); - return z; -} - -const Residue operator-(const Residue& x, const Residue& y) { - x.same_ring(y); - Residue z(x.ring_of()); - bn_assert(BN_mod_sub(z.val.bn_ptr(), x.val.bn_ptr(), y.val.bn_ptr(), x.modulus().bn_ptr(), get_ctx())); - return z; -} - -const Residue operator*(const Residue& x, const Residue& y) { - x.same_ring(y); - Residue z(x.ring_of()); - bn_assert(BN_mod_mul(z.val.bn_ptr(), x.val.bn_ptr(), y.val.bn_ptr(), x.modulus().bn_ptr(), get_ctx())); - return z; -} - -const Residue operator-(const Residue& x) { - Residue z(x); - z.val.negate(); - return z.reduce(); -} - -Residue& Residue::operator+=(const Residue& y) { - same_ring(y); - bn_assert(BN_mod_add(val.bn_ptr(), val.bn_ptr(), y.val.bn_ptr(), modulus().bn_ptr(), get_ctx())); - return *this; -} - -Residue& Residue::operator-=(const Residue& y) { - same_ring(y); - bn_assert(BN_mod_sub(val.bn_ptr(), val.bn_ptr(), y.val.bn_ptr(), modulus().bn_ptr(), get_ctx())); - return *this; -} - -Residue& Residue::operator*=(const Residue& y) { - same_ring(y); - bn_assert(BN_mod_mul(val.bn_ptr(), val.bn_ptr(), y.val.bn_ptr(), modulus().bn_ptr(), get_ctx())); - return *this; -} - -bool operator==(const Residue& x, const Residue& y) { - x.same_ring(y); - return x.extract() == y.extract(); -} - -bool operator!=(const Residue& x, const Residue& y) { - x.same_ring(y); - return x.extract() != y.extract(); -} - -Residue sqr(const Residue& x) { - Residue z(x.ring_of()); - bn_assert(BN_mod_sqr(z.val.bn_ptr(), x.val.bn_ptr(), x.modulus().bn_ptr(), get_ctx())); - return z; -} - -Residue power(const Residue& x, const Bignum& y) { - Residue z(x.ring_of()); - bn_assert(BN_mod_exp(z.val.bn_ptr(), x.val.bn_ptr(), y.bn_ptr(), x.modulus().bn_ptr(), get_ctx())); - return z; -} - -Residue inverse(const Residue& x) { - assert(x.ring_of().is_prime()); - return power(x, x.ring_of().get_modulus() - 2); -} - -const Residue& ResidueRing::img_i() { - if (!Img_i) { - assert(is_prime()); - assert(modulus % 4 == 1); - int g = 2; - Bignum n = (modulus - 1) / 4; - while (true) { - Residue t = power(frac(g), n); - if (t != one() && t != frac(-1)) { - Img_i = new Residue(t); - break; - } - } - } - return *Img_i; -} - -Residue sqrt(const Residue& x) { - assert(x.ring_of().is_prime()); - ResidueRing& R = x.ring_of(); - const Bignum& p = R.get_modulus(); - if (x.is_zero() || !p.odd()) { - return x; - } - if (p[1]) { // p=3 (mod 4) - return power(x, (p + 1) >> 2); - } else if (p[2]) { - // p=5 (mod 8) - Residue t = power(x, (p + 3) >> 3); - return (sqr(t) == x) ? t : R.img_i() * t; - } else { - assert(p[2]); - return R.zero(); - } -} - -Residue ResidueRing::frac(long num, long denom) { - assert(denom); - if (denom < 0) { - num = -num; - denom = -denom; - } - if (!(num % denom)) { - return Residue(num / denom, *this); - } else { - return Residue(num, *this) * inverse(Residue(denom, *this)); - } -} - -inline Residue ResidueRing::convert(long x) { - return Residue(x, *this); -} - -inline Residue ResidueRing::convert(const Bignum& x) { - return Residue(x, *this); -} - -std::string Residue::to_str() const { - return "Mod(" + val.to_str() + "," + modulus().to_str() + ")"; -} - -std::ostream& operator<<(std::ostream& os, const Residue& x) { - return os << x.to_str(); -} - -std::istream& operator>>(std::istream& is, Residue& x) { - std::string word; - is >> word; - x = dec_string(word); - return is; -} -} // namespace arith - -// ****************************************************** - -namespace ellcurve { -using namespace arith; - -const Bignum& P25519() { - static Bignum P25519 = (Bignum(1) << 255) - 19; - return P25519; -} - -ResidueRing& Fp25519() { - static ResidueRing Fp25519(P25519()); - return Fp25519; -} -} // namespace ellcurve - -// ****************************************************** - -namespace ellcurve { -using namespace arith; - -class MontgomeryCurve { - ResidueRing& ring; - int A_short; // v^2 = u^2 + Au + 1 - int Gu_short; // u(G) - int a_short; // (A+2)/4 - Residue A; - Residue Gu; - Bignum P; - Bignum L; - Bignum Order; - Bignum cofactor; - int cofactor_short; - - void init(); - - public: - MontgomeryCurve(int _A, int _Gu, ResidueRing& _R) - : ring(_R) - , A_short(_A) - , Gu_short(_Gu) - , a_short((_A + 2) / 4) - , A(_A, _R) - , Gu(_Gu, _R) - , P(_R.get_modulus()) - , cofactor_short(0) { - init(); - } - - const Residue& get_gen_u() const { - return Gu; - } - const Bignum& get_ell() const { - return L; - } - const Bignum& get_order() const { - return Order; - } - ResidueRing& get_base_ring() const { - return ring; - } - const Bignum& get_p() const { - return P; - } - - void set_order_cofactor(const Bignum& order, int cof); - - struct PointXZ { - Residue X, Z; - PointXZ(Residue x, Residue z) : X(x), Z(z) { - x.same_ring(z); - } - PointXZ(ResidueRing& r) : X(r.one()), Z(r.zero()) { - } - explicit PointXZ(Residue u) : X(u), Z(u.ring_of().one()) { - } - explicit PointXZ(Residue y, bool) : X(y.ring_of().one() - y), Z(y + y.ring_of().one()) { - } - PointXZ(const PointXZ& P) : X(P.X), Z(P.Z) { - } - PointXZ& operator=(const PointXZ& P) { - X = P.X; - Z = P.Z; - return *this; - } - Residue get_u() const { - return X * inverse(Z); - } - Residue get_v(bool sign_v = false) const; - bool is_infty() const { - return Z.is_zero(); - } - Residue get_y() const { - return (X - Z) * inverse(X + Z); - } - bool export_point_y(unsigned char buffer[32]) const; - bool export_point_u(unsigned char buffer[32]) const; - void zeroize() { - X = Z = Z.ring_of().zero(); - } - }; - - PointXZ power_gen_xz(const Bignum& n) const; - PointXZ power_xz(const Residue& u, const Bignum& n) const; - PointXZ power_xz(const PointXZ& P, const Bignum& n) const; - PointXZ add_xz(const PointXZ& P, const PointXZ& Q) const; - PointXZ double_xz(const PointXZ& P) const; - - PointXZ import_point_u(const unsigned char point[32]) const; - PointXZ import_point_y(const unsigned char point[32]) const; -}; - -void MontgomeryCurve::init() { - assert(!((a_short + 2) & 3) && a_short >= 0); -} - -void MontgomeryCurve::set_order_cofactor(const Bignum& order, int cof) { - assert(order > 0); - assert(cof >= 0); - assert(cof == 0 || (order % cof) == 0); - Order = order; - cofactor = cofactor_short = cof; - if (cof > 0) { - L = order / cof; - assert(is_prime(L)); - } - assert(!power_gen_xz(1).is_infty()); - assert(power_gen_xz(Order).is_infty()); -} - -// computes u(P+Q)*u(P-Q) as X/Z -MontgomeryCurve::PointXZ MontgomeryCurve::add_xz(const MontgomeryCurve::PointXZ& P, - const MontgomeryCurve::PointXZ& Q) const { - Residue u = (P.X + P.Z) * (Q.X - Q.Z); - Residue v = (P.X - P.Z) * (Q.X + Q.Z); - return MontgomeryCurve::PointXZ(sqr(u + v), sqr(u - v)); -} - -// computes u(2P) as X/Z -MontgomeryCurve::PointXZ MontgomeryCurve::double_xz(const MontgomeryCurve::PointXZ& P) const { - Residue u = sqr(P.X + P.Z); - Residue v = sqr(P.X - P.Z); - Residue w = u - v; - return PointXZ(u * v, w * (v + Residue(a_short, ring) * w)); -} - -MontgomeryCurve::PointXZ MontgomeryCurve::power_gen_xz(const Bignum& n) const { - return power_xz(Gu, n); -} - -MontgomeryCurve::PointXZ MontgomeryCurve::power_xz(const Residue& u, const Bignum& n) const { - return power_xz(PointXZ(u), n); -} - -// computes u([n]P) in form X/Z -MontgomeryCurve::PointXZ MontgomeryCurve::power_xz(const PointXZ& A, const Bignum& n) const { - assert(n >= 0); - if (n == 0) { - return PointXZ(ring); - } - - int k = n.num_bits(); - PointXZ P(A); - PointXZ Q(double_xz(P)); - for (int i = k - 2; i >= 0; --i) { - PointXZ PQ(add_xz(P, Q)); - PQ.X *= A.Z; - PQ.Z *= A.X; - if (n[i]) { - P = PQ; - Q = double_xz(Q); - } else { - Q = PQ; - P = double_xz(P); - } - } - return P; -} - -bool MontgomeryCurve::PointXZ::export_point_y(unsigned char buffer[32]) const { - if ((X + Z).is_zero()) { - std::memset(buffer, 0xff, 32); - return false; - } else { - get_y().extract().export_lsb(buffer, 32); - return true; - } -} - -bool MontgomeryCurve::PointXZ::export_point_u(unsigned char buffer[32]) const { - if (Z.is_zero()) { - std::memset(buffer, 0xff, 32); - return false; - } else { - get_u().extract().export_lsb(buffer, 32); - return true; - } -} - -MontgomeryCurve::PointXZ MontgomeryCurve::import_point_u(const unsigned char point[32]) const { - Bignum u; - u.import_lsb(point, 32); - u[255] = 0; - return PointXZ(Residue(u, ring)); -} - -MontgomeryCurve::PointXZ MontgomeryCurve::import_point_y(const unsigned char point[32]) const { - Bignum y; - y.import_lsb(point, 32); - y[255] = 0; - return PointXZ(Residue(y, ring), true); -} - -MontgomeryCurve& Curve25519() { - static MontgomeryCurve Curve25519(486662, 9, Fp25519()); - static bool init = false; - if (!init) { - Curve25519.set_order_cofactor(hex_string{"80000000000000000000000000000000a6f7cef517bce6b2c09318d2e7ae9f68"}, 8); - init = true; - } - return Curve25519; -} -} // namespace ellcurve - -// ****************************************************** - -namespace ellcurve { -using namespace arith; - -class TwEdwardsCurve; - -class TwEdwardsCurve { - public: - struct SegrePoint { - Residue XY, X, Y, Z; // if x=X/Z and y=Y/T, stores (xy,x,y,1)*Z*T - SegrePoint(ResidueRing& R) : XY(R), X(R), Y(R), Z(R) { - } - SegrePoint(const Residue& x, const Residue& y) : XY(x * y), X(x), Y(y), Z(y.ring_of().one()) { - } - SegrePoint(const TwEdwardsCurve& E, const Residue& y, bool x_sign); - SegrePoint(const SegrePoint& P) : XY(P.XY), X(P.X), Y(P.Y), Z(P.Z) { - } - SegrePoint& operator=(const SegrePoint& P) { - XY = P.XY; - X = P.X; - Y = P.Y; - Z = P.Z; - return *this; - } - bool is_zero() const { - return X.is_zero() && (Y == Z); - } - bool is_valid() const { - return (XY * Z == X * Y) && !(XY.is_zero() && X.is_zero() && Y.is_zero() && Z.is_zero()); - } - bool is_finite() const { - return !Z.is_zero(); - } - bool is_normalized() const { - return Z == Z.ring_of().one(); - } - SegrePoint& normalize() { - auto f = inverse(Z); - XY *= f; - X *= f; - Y *= f; - Z = Z.ring_of().one(); - return *this; - } - SegrePoint& zeroize() { - XY = X = Y = Z = Z.ring_of().zero(); - return *this; - } - bool export_point(unsigned char buffer[32], bool need_x = true) const; - bool export_point_y(unsigned char buffer[32]) const { - return export_point(buffer, false); - } - bool export_point_u(unsigned char buffer[32]) const; - Residue get_y() const { - return Y * inverse(Z); - } - Residue get_x() const { - return X * inverse(Z); - } - Residue get_u() const { - return (Z + Y) * inverse(Z - Y); - } - void negate() { - XY.negate(); - X.negate(); - } - }; - - private: - ResidueRing& ring; - Residue D; - Residue D2; - Residue Gy; - Bignum P; - Bignum L; - Bignum Order; - Bignum cofactor; - int cofactor_short; - SegrePoint G; - SegrePoint O; - void init(); - - public: - TwEdwardsCurve(const Residue& _D, const Residue& _Gy, ResidueRing& _R) - : ring(_R), D(_D), D2(_D + _D), Gy(_Gy), P(_R.get_modulus()), cofactor_short(0), G(_R), O(_R) { - init(); - } - - const Residue& get_gen_y() const { - return Gy; - } - const Bignum& get_ell() const { - return L; - } - const Bignum& get_order() const { - return Order; - } - ResidueRing& get_base_ring() const { - return ring; - } - const Bignum& get_p() const { - return P; - } - const SegrePoint& get_base_point() const { - return G; - } - - void set_order_cofactor(const Bignum& order, int cof); - bool recover_x(Residue& x, const Residue& y, bool x_sign) const; - - void add_points(SegrePoint& R, const SegrePoint& P, const SegrePoint& Q) const; - SegrePoint add_points(const SegrePoint& P, const SegrePoint& Q) const; - void double_point(SegrePoint& R, const SegrePoint& P) const; - SegrePoint double_point(const SegrePoint& P) const; - SegrePoint power_point(const SegrePoint& A, const Bignum& n) const; - SegrePoint power_gen(const Bignum& n) const; - - SegrePoint import_point(const unsigned char point[32], bool& ok) const; -}; - -std::ostream& operator<<(std::ostream& os, const TwEdwardsCurve::SegrePoint& P) { - return os << "[" << P.XY << ":" << P.X << ":" << P.Y << ":" << P.Z << "]"; -} - -void TwEdwardsCurve::init() { - assert(D != ring.zero() && D != ring.convert(-1)); - O.X = O.Z = ring.one(); - G = SegrePoint(*this, Gy, 0); - assert(!G.XY.is_zero()); -} - -void TwEdwardsCurve::set_order_cofactor(const Bignum& order, int cof) { - assert(order > 0); - assert(cof >= 0); - assert(cof == 0 || (order % cof) == 0); - Order = order; - cofactor = cofactor_short = cof; - if (cof > 0) { - L = order / cof; - assert(is_prime(L)); - assert(!power_gen(1).is_zero()); - assert(power_gen(L).is_zero()); - } -} - -TwEdwardsCurve::SegrePoint::SegrePoint(const TwEdwardsCurve& E, const Residue& y, bool x_sign) - : XY(y), X(E.get_base_ring()), Y(y), Z(E.get_base_ring().one()) { - Residue x(y.ring_of()); - if (E.recover_x(x, y, x_sign)) { - XY *= x; - X = x; - } else { - XY = Y = Z = E.get_base_ring().zero(); - } -} - -bool TwEdwardsCurve::recover_x(Residue& x, const Residue& y, bool x_sign) const { - // recovers x from equation -x^2+y^2 = 1+d*x^2*y^2 - Residue z = inverse(ring.one() + D * sqr(y)); - if (z.is_zero()) { - return false; - } - z *= sqr(y) - ring.one(); - Residue t = sqrt(z); - if (sqr(t) == z) { - x = (t.extract().odd() == x_sign) ? t : -t; - //std::cout << "x=" << x << ", y=" << y << std::endl; - return true; - } else { - return false; - } -} - -void TwEdwardsCurve::add_points(SegrePoint& Res, const SegrePoint& P, const SegrePoint& Q) const { - Residue a((P.X + P.Y) * (Q.X + Q.Y)); - Residue b((P.X - P.Y) * (Q.X - Q.Y)); - Residue c(P.Z * Q.Z * ring.convert(2)); - Residue d(P.XY * Q.XY * D2); - Residue x_num(a - b); // 2(x1y2+x2y1) - Residue y_num(a + b); // 2(x1x2+y1y2) - Residue x_den(c + d); // 2(1+dx1x2y1y2) - Residue y_den(c - d); // 2(1-dx1x2y1y2) - Res.X = x_num * y_den; // x = x_num/x_den, y = y_num/y_den - Res.Y = y_num * x_den; - Res.XY = x_num * y_num; - Res.Z = x_den * y_den; -} - -TwEdwardsCurve::SegrePoint TwEdwardsCurve::add_points(const SegrePoint& P, const SegrePoint& Q) const { - SegrePoint Res(ring); - add_points(Res, P, Q); - return Res; -} - -void TwEdwardsCurve::double_point(SegrePoint& Res, const SegrePoint& P) const { - add_points(Res, P, P); -} - -TwEdwardsCurve::SegrePoint TwEdwardsCurve::double_point(const SegrePoint& P) const { - SegrePoint Res(ring); - double_point(Res, P); - return Res; -} - -// computes u([n]P) in form (xy,x,y,1)*Z -TwEdwardsCurve::SegrePoint TwEdwardsCurve::power_point(const SegrePoint& A, const Bignum& n) const { - assert(n >= 0); - if (n == 0) { - return O; - } - - int k = n.num_bits(); - SegrePoint P(A); - SegrePoint Q(double_point(A)); - for (int i = k - 2; i >= 0; --i) { - if (n[i]) { - add_points(P, P, Q); - double_point(Q, Q); - } else { - // we do more operations than necessary for uniformicity - add_points(Q, P, Q); - double_point(P, P); - } - } - return P; -} - -TwEdwardsCurve::SegrePoint TwEdwardsCurve::power_gen(const Bignum& n) const { - return power_point(G, n); -} - -bool TwEdwardsCurve::SegrePoint::export_point(unsigned char buffer[32], bool need_x) const { - if (!is_normalized()) { - if (Z.is_zero()) { - std::memset(buffer, 0xff, 32); - return false; - } - Residue f(inverse(Z)); - Bignum y((Y * f).extract()); - assert(!y[255]); - if (need_x) { - y[255] = (X * f).extract().odd(); - } - y.export_lsb(buffer, 32); - } else { - Bignum y(Y.extract()); - assert(!y[255]); - if (need_x) { - y[255] = X.extract().odd(); - } - y.export_lsb(buffer, 32); - } - return true; -} - -bool TwEdwardsCurve::SegrePoint::export_point_u(unsigned char buffer[32]) const { - if (Z == Y) { - std::memset(buffer, 0xff, 32); - return false; - } - Residue f(inverse(Z - Y)); - ((Z + Y) * f).extract().export_lsb(buffer, 32); - assert(!(buffer[31] & 0x80)); - return true; -} - -TwEdwardsCurve::SegrePoint TwEdwardsCurve::import_point(const unsigned char point[32], bool& ok) const { - Bignum y; - y.import_lsb(point, 32); - bool x_sign = y[255]; - y[255] = 0; - Residue yr(y, ring); - Residue xr(ring); - ok = recover_x(xr, yr, x_sign); - return ok ? SegrePoint(xr, yr) : SegrePoint(ring); -} - -TwEdwardsCurve& Ed25519() { - static TwEdwardsCurve Ed25519(Fp25519().frac(-121665, 121666), Fp25519().frac(4, 5), Fp25519()); - static bool init = false; - if (!init) { - Ed25519.set_order_cofactor(hex_string{"80000000000000000000000000000000a6f7cef517bce6b2c09318d2e7ae9f68"}, 8); - init = true; - } - return Ed25519; -} -} // namespace ellcurve - -// ****************************************************** - -namespace openssl { -#include -} - -namespace digest { -using namespace openssl; - -struct OpensslEVP_SHA1 { - enum { digest_bytes = 20 }; - static const EVP_MD* get_evp() { - return EVP_sha1(); - } -}; - -struct OpensslEVP_SHA256 { - enum { digest_bytes = 32 }; - static const EVP_MD* get_evp() { - return EVP_sha256(); - } -}; - -struct OpensslEVP_SHA512 { - enum { digest_bytes = 64 }; - static const EVP_MD* get_evp() { - return EVP_sha512(); - } -}; - -template -class HashCtx { - EVP_MD_CTX ctx; - void init(); - void clear(); - - public: - enum { digest_bytes = H::digest_bytes }; - HashCtx() { - init(); - } - HashCtx(const void* data, std::size_t len) { - init(); - feed(data, len); - } - ~HashCtx() { - clear(); - } - void feed(const void* data, std::size_t len); - std::size_t extract(unsigned char buffer[digest_bytes]); - std::string extract(); -}; - -template -void HashCtx::init() { - EVP_MD_CTX_init(&ctx); - EVP_DigestInit_ex(&ctx, H::get_evp(), 0); -} - -template -void HashCtx::clear() { - EVP_MD_CTX_cleanup(&ctx); -} - -template -void HashCtx::feed(const void* data, std::size_t len) { - EVP_DigestUpdate(&ctx, data, len); -} - -template -std::size_t HashCtx::extract(unsigned char buffer[digest_bytes]) { - unsigned olen = 0; - EVP_DigestFinal_ex(&ctx, buffer, &olen); - assert(olen == digest_bytes); - return olen; -} - -template -std::string HashCtx::extract() { - unsigned char buffer[digest_bytes]; - unsigned olen = 0; - EVP_DigestFinal_ex(&ctx, buffer, &olen); - assert(olen == digest_bytes); - return std::string((char*)buffer, olen); -} - -typedef HashCtx SHA1; -typedef HashCtx SHA256; -typedef HashCtx SHA512; - -template -std::size_t hash_str(unsigned char buffer[T::digest_bytes], const void* data, std::size_t size) { - T hasher(data, size); - return hasher.extract(buffer); -} - -template -std::size_t hash_two_str(unsigned char buffer[T::digest_bytes], const void* data1, std::size_t size1, const void* data2, - std::size_t size2) { - T hasher(data1, size1); - hasher.feed(data2, size2); - return hasher.extract(buffer); -} - -template -std::string hash_str(const void* data, std::size_t size) { - T hasher(data, size); - return hasher.extract(); -} - -template -std::string hash_two_str(const void* data1, std::size_t size1, const void* data2, std::size_t size2) { - T hasher(data1, size1); - hasher.feed(data2, size2); - return hasher.extract(); -} -} // namespace digest - -// ****************************************************** - -namespace openssl { -#include -} - -#include -#include - -namespace prng { - -int os_get_random_bytes(void* buf, int n) { - using namespace std; - int r = 0, h = open("/dev/random", O_RDONLY | O_NONBLOCK); - if (h >= 0) { - r = read(h, buf, n); - if (r > 0) { - //std::cerr << "added " << r << " bytes of real entropy to secure random numbers seed" << std::endl; - } else { - r = 0; - } - close(h); - } - - if (r < n) { - h = open("/dev/urandom", O_RDONLY); - if (h < 0) { - return r; - } - int s = read(h, (char*)buf + r, n - r); - close(h); - if (s < 0) { - return r; - } - r += s; - } - - if (r >= 8) { - *(long*)buf ^= lrand48(); - srand48(*(long*)buf); - } - - return r; -} -} // namespace prng - -namespace prng { -using namespace openssl; - -class RandomGen { - public: - struct rand_error {}; - void randomize(bool force = true); - void seed_add(const void* data, std::size_t size, double entropy = 0); - bool ok() const { - return RAND_status(); - } - RandomGen() { - randomize(false); - } - RandomGen(const void* seed, std::size_t size) { - seed_add(seed, size); - randomize(false); - } - bool rand_bytes(void* data, std::size_t size, bool strong = false); - bool strong_rand_bytes(void* data, std::size_t size) { - return rand_bytes(data, size, true); - } - template - bool rand_obj(T& obj) { - return rand_bytes(&obj, sizeof(T)); - } - template - bool rand_objs(T* ptr, std::size_t count) { - return rand_bytes(ptr, sizeof(T) * count); - } - std::string rand_string(std::size_t size, bool strong = false); -}; - -void RandomGen::seed_add(const void* data, std::size_t size, double entropy) { - RAND_add(data, size, entropy > 0 ? entropy : size); -} - -void RandomGen::randomize(bool force) { - if (!force && ok()) { - return; - } - unsigned char buffer[128]; - int n = os_get_random_bytes(buffer, 128); - seed_add(buffer, n); - assert(ok()); -} - -bool RandomGen::rand_bytes(void* data, std::size_t size, bool strong) { - int res = (strong ? RAND_bytes : RAND_pseudo_bytes)((unsigned char*)data, size); - if (res != 0 && res != 1) { - throw rand_error(); - } - return res; -} - -std::string RandomGen::rand_string(std::size_t size, bool strong) { - char buffer[size]; - if (!rand_bytes(buffer, size, strong)) { - throw rand_error(); - } - return std::string(buffer, size); -} - -RandomGen& rand_gen() { - static RandomGen MainPRNG; - return MainPRNG; -} - -} // namespace prng - -// ****************************************************** - -namespace crypto { -namespace Ed25519 { - -const int privkey_bytes = 32; -const int pubkey_bytes = 32; -const int sign_bytes = 64; -const int shared_secret_bytes = 32; - -bool all_bytes_same(const unsigned char* str, std::size_t size) { - unsigned char c = str[0]; - for (std::size_t i = 0; i < size; i++) { - if (str[i] != c) { - return false; - } - } - return true; -} - -class PublicKey { - enum { pk_empty, pk_xz, pk_init } inited; - unsigned char pubkey[pubkey_bytes]; - ellcurve::TwEdwardsCurve::SegrePoint PubKey; - ellcurve::MontgomeryCurve::PointXZ PubKey_xz; - - public: - PublicKey() : inited(pk_empty), PubKey(ellcurve::Fp25519()), PubKey_xz(ellcurve::Fp25519()) { - } - PublicKey(const unsigned char pub_key[pubkey_bytes]); - PublicKey(const ellcurve::TwEdwardsCurve::SegrePoint& Pub_Key); - - bool import_public_key(const unsigned char pub_key[pubkey_bytes]); - bool import_public_key(const ellcurve::TwEdwardsCurve::SegrePoint& Pub_Key); - bool export_public_key(unsigned char pubkey_buffer[pubkey_bytes]) const; - bool check_message_signature(unsigned char signature[sign_bytes], const unsigned char* message, std::size_t msg_size); - - void clear(); - bool ok() const { - return inited == pk_init; - } - - const unsigned char* get_pubkey_ptr() const { - return inited == pk_init ? pubkey : 0; - } - const ellcurve::TwEdwardsCurve::SegrePoint& get_point() const { - return PubKey; - } - const ellcurve::MontgomeryCurve::PointXZ& get_point_xz() const { - return PubKey_xz; - } -}; - -void PublicKey::clear(void) { - if (inited != pk_empty) { - std::memset(pubkey, 0, pubkey_bytes); - PubKey.zeroize(); - PubKey_xz.zeroize(); - } - inited = pk_empty; -} - -PublicKey::PublicKey(const unsigned char pub_key[pubkey_bytes]) - : inited(pk_empty), PubKey(ellcurve::Fp25519()), PubKey_xz(ellcurve::Fp25519()) { - import_public_key(pub_key); -} - -PublicKey::PublicKey(const ellcurve::TwEdwardsCurve::SegrePoint& Pub_Key) - : inited(pk_empty), PubKey(ellcurve::Fp25519()), PubKey_xz(ellcurve::Fp25519()) { - import_public_key(Pub_Key); -} - -bool PublicKey::import_public_key(const unsigned char pub_key[pubkey_bytes]) { - clear(); - if (all_bytes_same(pub_key, pubkey_bytes)) { - return false; - } - bool ok = false; - PubKey = ellcurve::Ed25519().import_point(pub_key, ok); - if (!ok) { - clear(); - return false; - } - std::memcpy(pubkey, pub_key, pubkey_bytes); - PubKey_xz.X = PubKey.Z + PubKey.Y; - PubKey_xz.Z = PubKey.Z - PubKey.Y; - inited = pk_init; - return true; -} - -bool PublicKey::import_public_key(const ellcurve::TwEdwardsCurve::SegrePoint& Pub_Key) { - clear(); - if (!Pub_Key.is_valid()) { - return false; - } - PubKey = Pub_Key; - PubKey_xz.X = PubKey.Z + PubKey.Y; - PubKey_xz.Z = PubKey.Z - PubKey.Y; - inited = pk_init; - - if (!PubKey.export_point(pubkey)) { - clear(); - return false; - } - return true; -} - -bool PublicKey::export_public_key(unsigned char pubkey_buffer[pubkey_bytes]) const { - if (inited != pk_init) { - std::memset(pubkey_buffer, 0, pubkey_bytes); - return false; - } else { - std::memcpy(pubkey_buffer, pubkey, pubkey_bytes); - return true; - } -} - -bool PublicKey::check_message_signature(unsigned char signature[sign_bytes], const unsigned char* message, - std::size_t msg_size) { - if (inited != pk_init) { - return false; - } - unsigned char hash[64]; - { - digest::SHA512 hasher(signature, 32); - hasher.feed(pubkey, 32); - hasher.feed(message, msg_size); - hasher.extract(hash); - } - auto& E = ellcurve::Ed25519(); - const arith::Bignum& L = E.get_ell(); - arith::Bignum H, S; - S.import_lsb(signature + 32, 32); - H.import_lsb(hash, 64); - H %= L; - H = L - H; - auto sG = E.power_gen(S); - auto hA = E.power_point(PubKey, H); - auto pR1 = E.add_points(sG, hA); - unsigned char pR1_bytes[32]; - if (!pR1.export_point(pR1_bytes)) { - return false; - } - return !std::memcmp(pR1_bytes, signature, 32); -} - -class PrivateKey { - public: - struct priv_key_no_copy {}; - PrivateKey() : inited(false) { - std::memset(privkey, 0, privkey_bytes); - } - PrivateKey(const unsigned char pk[privkey_bytes]) : inited(false) { - std::memset(privkey, 0, privkey_bytes); - import_private_key(pk); - } - ~PrivateKey() { - clear(); - } - bool random_private_key(bool strong = false); - bool import_private_key(const unsigned char pk[privkey_bytes]); - bool export_private_key(unsigned char pk[privkey_bytes]) const; // careful! - bool export_public_key(unsigned char pubk[pubkey_bytes]) const { - return PubKey.export_public_key(pubk); - } - void clear(); - bool ok() const { - return inited; - } - - // used for EdDSA (sign) - bool sign_message(unsigned char signature[sign_bytes], const unsigned char* message, std::size_t msg_size); - // used for ECDH (encrypt / decrypt) - bool compute_shared_secret(unsigned char secret[shared_secret_bytes], const PublicKey& Pub); - // used for EC asymmetric decryption - bool compute_temp_shared_secret(unsigned char secret[shared_secret_bytes], - const unsigned char temp_pub_key[pubkey_bytes]); - - const PublicKey& get_public_key() const { - return PubKey; - } - - private: - bool inited; - unsigned char privkey[privkey_bytes]; - unsigned char priv_salt[32]; - arith::Bignum priv_exp; - PublicKey PubKey; - - bool process_private_key(); - PrivateKey(const PrivateKey&) { - throw priv_key_no_copy(); - } - PrivateKey& operator=(const PrivateKey&) { - throw priv_key_no_copy(); - } -}; - -bool PrivateKey::random_private_key(bool strong) { - inited = false; - if (!prng::rand_gen().rand_bytes(privkey, privkey_bytes, strong)) { - clear(); - return false; - } - return process_private_key(); -} - -void PrivateKey::clear(void) { - std::memset(privkey, 0, privkey_bytes); - std::memset(priv_salt, 0, sizeof(priv_salt)); - priv_exp.clear(); - PubKey.clear(); - inited = false; -} - -bool PrivateKey::import_private_key(const unsigned char pk[privkey_bytes]) { - clear(); - if (all_bytes_same(pk, privkey_bytes)) { - return false; - } - std::memcpy(privkey, pk, privkey_bytes); - return process_private_key(); -} - -bool PrivateKey::export_private_key(unsigned char pk[privkey_bytes]) const { // careful! - if (!inited) { - std::memset(pk, 0, privkey_bytes); - return false; - } else { - std::memcpy(pk, privkey, privkey_bytes); - return true; - } -} - -bool PrivateKey::process_private_key() { - unsigned char buff[64]; - digest::hash_str(buff, privkey, privkey_bytes); - std::memcpy(priv_salt, buff + 32, 32); - buff[0] &= -8; - buff[31] = ((buff[31] | 0x40) & ~0x80); - priv_exp.import_lsb(buff, 32); - PubKey = ellcurve::Ed25519().power_gen(priv_exp); - inited = PubKey.ok(); - if (!inited) { - clear(); - } - return inited; -} - -bool PrivateKey::compute_shared_secret(unsigned char secret[shared_secret_bytes], const PublicKey& Pub) { - if (!inited || !Pub.ok()) { - std::memset(secret, 0, shared_secret_bytes); - *(long*)secret = lrand48(); - return false; - } - auto P = ellcurve::Curve25519().power_xz(Pub.get_point_xz(), priv_exp); - if (P.is_infty()) { - std::memset(secret, 0, shared_secret_bytes); - *(long*)secret = lrand48(); - return false; - } - P.export_point_y(secret); - return true; -} - -bool PrivateKey::compute_temp_shared_secret(unsigned char secret[shared_secret_bytes], - const unsigned char temp_pub_key[pubkey_bytes]) { - PublicKey tempPubkey(temp_pub_key); - if (!tempPubkey.ok()) { - return false; - } - return compute_shared_secret(secret, tempPubkey); -} - -bool PrivateKey::sign_message(unsigned char signature[sign_bytes], const unsigned char* message, std::size_t msg_size) { - if (!inited) { - std::memset(signature, 0, sign_bytes); - return false; - } - unsigned char r_bytes[64]; - digest::hash_two_str(r_bytes, priv_salt, 32, message, msg_size); - const arith::Bignum& L = ellcurve::Ed25519().get_ell(); - arith::Bignum eR; - eR.import_lsb(r_bytes, 64); - eR %= L; - - auto pR = ellcurve::Ed25519().power_gen(eR); - - assert(pR.export_point(signature, 32)); - { - digest::SHA512 hasher(signature, 32); - hasher.feed(PubKey.get_pubkey_ptr(), 32); - hasher.feed(message, msg_size); - hasher.extract(r_bytes); - } - arith::Bignum S; - S.import_lsb(r_bytes, 64); - S %= L; - S *= priv_exp; - S += eR; - S %= L; - S.export_lsb(signature + 32, 32); - return true; -} - -// use one TempKeyGenerator object a lot of times -class TempKeyGenerator { - enum { salt_size = 64 }; - unsigned char random_salt[salt_size]; - unsigned char buffer[privkey_bytes]; - - public: - TempKeyGenerator() { - prng::rand_gen().strong_rand_bytes(random_salt, salt_size); - } - ~TempKeyGenerator() { - std::memset(random_salt, 0, salt_size); - std::memset(buffer, 0, privkey_bytes); - } - - unsigned char* get_temp_private_key(unsigned char* to, const unsigned char* message, std::size_t size, - const unsigned char* rand = 0, std::size_t rand_size = 0); // rand may be 0 - void create_temp_private_key(PrivateKey& pk, const unsigned char* message, std::size_t size, - const unsigned char* rand = 0, std::size_t rand_size = 0); - - // sets temp_pub_key and shared_secret for one-time asymmetric encryption of message - bool create_temp_shared_secret(unsigned char temp_pub_key[pubkey_bytes], unsigned char secret[shared_secret_bytes], - const PublicKey& recipientPubKey, const unsigned char* message, std::size_t size, - const unsigned char* rand = 0, std::size_t rand_size = 0); -}; - -unsigned char* TempKeyGenerator::get_temp_private_key(unsigned char* to, const unsigned char* message, std::size_t size, - const unsigned char* rand, - std::size_t rand_size) { // rand may be 0 - digest::SHA256 hasher(message, size); - hasher.feed(random_salt, salt_size); - if (rand && rand_size) { - hasher.feed(rand, rand_size); - } - if (!to) { - to = buffer; - } - hasher.extract(to); - //++ *((long *)random_salt); - return to; -} - -void TempKeyGenerator::create_temp_private_key(PrivateKey& pk, const unsigned char* message, std::size_t size, - const unsigned char* rand, std::size_t rand_size) { - pk.import_private_key(get_temp_private_key(buffer, message, size, rand, rand_size)); - std::memset(buffer, 0, privkey_bytes); -} - -bool TempKeyGenerator::create_temp_shared_secret(unsigned char temp_pub_key[pubkey_bytes], - unsigned char shared_secret[shared_secret_bytes], - const PublicKey& recipientPubKey, const unsigned char* message, - std::size_t size, const unsigned char* rand, std::size_t rand_size) { - PrivateKey tmpPk; - create_temp_private_key(tmpPk, message, size, rand, rand_size); - return tmpPk.export_public_key(temp_pub_key) && tmpPk.compute_shared_secret(shared_secret, recipientPubKey); -} - -} // namespace Ed25519 -} // namespace crypto - -// ****************************************************** - -void print_buffer(const unsigned char buffer[32]) { - for (int i = 0; i < 32; i++) { - char buff[4]; - sprintf(buff, "%02x", buffer[i]); - std::cout << buff; - } -} - -std::string buffer_to_hex(const unsigned char* buffer, std::size_t size = 32) { - char str[2 * size + 1]; - for (std::size_t i = 0; i < size; i++) { - sprintf(str + 2 * i, "%02x", buffer[i]); - } - return str; -} - -int main(void) { - arith::Bignum x = (3506824292LL << 31); - x = (2948877059LL << 31); - arith::Bignum L = (((36 * x + 36) * x + 18) * x + 6) * x + 1; - arith::Bignum P = L + 6 * sqr(x); - std::cout << "x= " << x << "; l= " << L << "; p= " << P << std::endl; - std::cout << "x= " << x.to_hex() << "; l= " << L.to_hex() << "; p= " << P.to_hex() << std::endl; - std::cout << "x mod 3=" << x % 3 << "; p mod 9=" << P % 9 << "; x/2^31=" << (x >> 31).to_hex() << "=" << (x >> 31) - << std::endl; - - crypto::Ed25519::PrivateKey PK1, PK2, PK3; - PK1.random_private_key(); - PK2.random_private_key(); - unsigned char priv2_export[32]; - bool ok = PK2.export_private_key(priv2_export); - std::cout << "PK2 = " << ok << " " << buffer_to_hex(priv2_export) << std::endl; - PK3.import_private_key(priv2_export); - std::cout << "PK3 = " << PK3.ok() << std::endl; - - unsigned char pub_export[32]; - ok = PK1.export_public_key(pub_export); - std::cout << "PubK1 = " << ok << " " << buffer_to_hex(pub_export) << std::endl; - crypto::Ed25519::PublicKey PubK1(pub_export); - ok = PK2.export_public_key(pub_export); - std::cout << "PubK2 = " << ok << " " << buffer_to_hex(pub_export) << std::endl; - crypto::Ed25519::PublicKey PubK2(pub_export); - ok = PK3.export_public_key(pub_export); - std::cout << "PubK3 = " << ok << " " << buffer_to_hex(pub_export) << std::endl; - crypto::Ed25519::PublicKey PubK3(pub_export); - ok = PubK1.export_public_key(pub_export); - std::cout << "PubK1 = " << ok << " " << buffer_to_hex(pub_export) << std::endl; - - unsigned char secret12[32], secret21[32]; - ok = PK1.compute_shared_secret(secret12, PK3.get_public_key()); - std::cout << "secret(PK1,PubK2)=" << ok << " " << buffer_to_hex(secret12) << std::endl; - ok = PK2.compute_shared_secret(secret21, PubK1); - std::cout << "secret(PK2,PubK1)=" << ok << " " << buffer_to_hex(secret21) << std::endl; - - unsigned char signature[64]; - ok = PK1.sign_message(signature, (const unsigned char*)"abc", 3); - std::cout << "PK1.signature=" << ok << " " << buffer_to_hex(signature) << std::endl; - - // signature[63] ^= 1; - ok = PubK1.check_message_signature(signature, (const unsigned char*)"abc", 3); - std::cout << "PubK1.check_signature=" << ok << std::endl; - - unsigned char temp_pubkey[32]; - crypto::Ed25519::TempKeyGenerator TKG; // use one generator a lot of times - - TKG.create_temp_shared_secret(temp_pubkey, secret12, PubK1, (const unsigned char*)"abc", 3); - std::cout << "secret12=" << buffer_to_hex(secret12) << "; temp_pubkey=" << buffer_to_hex(temp_pubkey) << std::endl; - - PK1.compute_temp_shared_secret(secret21, temp_pubkey); - std::cout << "secret21=" << buffer_to_hex(secret21) << std::endl; -} diff --git a/test/regression-tests.ans b/test/regression-tests.ans index e2057210c..0e07e3d61 100644 --- a/test/regression-tests.ans +++ b/test/regression-tests.ans @@ -13,7 +13,7 @@ Test_Fift_test_bls_ops_default fb0a81d4f247ab806318b051d12158f7f1aacc5513db5f8cb Test_Fift_test_deep_stack_ops_default df812efbadfffa8a3f553416f68c8c4435bac07266f84562cf98fe5f0dd62a52 Test_Fift_test_default 4e44b3382963ec89f7b5c8f2ebd85da3bc8aebad5b49f5b11b14075061477b4d Test_Fift_test_dict_default a9c8cbcfdece5573185022cea07f59f1bc404e5d879e5157a5745757f8ee0525 -Test_Fift_test_disasm_default dacaa555f5f217b2373e01e3bcd59634e480f5759dcc43edbdef35273ae38492 +Test_Fift_test_disasm_default 412cf37d37c5d9d81f44dbf4e3d3e7cda173c23b890614eb8a3bc5f2b92f13e6 Test_Fift_test_fiftext_default 2b0db5d4d4bfbc705b959cc787540d7b3a21a71469eac54756e76953f0d9afca Test_Fift_test_fixed_default 278a19d56b773102caf5c1fe2997ea6c8d0d9e720eff8503feede6398a197eec Test_Fift_test_hash_ext_default 686fc5680feca5b3bb207768215b27f6872a95128762dee0d7f2c88bc492d62d @@ -37,40 +37,40 @@ Test_Fift_testvm8_default 17c9e2205ccecfd8549328b4a501d07dde0336899a7a496e747e10 Test_Fift_testvm_default ee4cbfec76c050b6de7877cfc39817d594cd1e175b6265b76fb642e30b940437 Test_Fift_testvmprog_default e5d0b2c68ee568280877c8495be558bfd0054ca5d99a99eebb525bbeca8a65af Test_RefInt_main_default 768493e0aef8e09a401a6d369edd1ef503a9215fb09dc460f52b27a8bde767cb -Test_VM_assert_code_not_null_default 05bc07e129181c972b976442f200de9487dee8bfb5ac53dd36ff61c5d4d4291d -Test_VM_assert_extract_minmax_key_default c352309c61bdf62ba7a0ba7280d303c88b0696fe7efa550c05feb2c662275297 -Test_VM_assert_lookup_prefix_default c5b45999b46d324e4008c07e5ce671bbcd833f4e15fb21a4a5136f7b980ca6fc -Test_VM_assert_pfx_dict_lookup_default fa6e3f96b31cf2ed9a9dac6b279ec05acfedf13b8ed7b815789f167d1ed7352f +Test_VM_assert_code_not_null_default 09f75cb845e0df27f3ec92405ccb4018484711a79813fd47fe8e158762c1cb93 +Test_VM_assert_extract_minmax_key_default 756337c2b2ce489243956a6608d6934ba9f76124a9435f045fc3a3b65c113d41 +Test_VM_assert_lookup_prefix_default f7683f9d2010bca53b1ef20c0e82427fb04ed62fa5fea1ee986f005ecfc9a27a +Test_VM_assert_pfx_dict_lookup_default 6d7c80d94dbc6d3ae4bafa216667b95ede4f2cbd44a59384abace84270417ef8 Test_VM_bigint_default feeb473a4ac51133989e1c145d0f49defa77117d2ae8b66bd7d12e3579e91b9f -Test_VM_bug_div_short_any_default f69aca6873f75d53dd37b6952151a2d858407a04589330762827dbc96d8b7c04 -Test_VM_bug_exec_dict_getnear_default db314c2e25b49c1f7f044d271e225f36da546c66242a8ab12f6afae37628a81e -Test_VM_bug_stack_overflow_default 7e0e3e96ca438ac96648d569c55213aa82154cf004e80265b1c481b1c4219719 -Test_VM_infinity_loop_1_default 670beda76229922806805e558d50d8f320017c642c3e7e34a7e1f2b7edb83cee -Test_VM_infinity_loop_2_default 22d9bd8cb41ff7b6cced5825e4ab73275b2fc07b1e3cd4588de815e2e6df2963 -Test_VM_memory_leak_default e10dc118f3538720a16bcbd39be9a68c3ea07f76b3d2ed5719a5e866d91f0ab3 -Test_VM_memory_leak_new_default fd2eec0a1d5ae49fb5ff8ba4b938fd9d0fe330be4a07b2b8be12bab249b00d90 -Test_VM_memory_leak_old_default f3076ae38d14000c021597b824d2f0e51de4f00601429ec3e23cca1b32dba844 -Test_VM_oom_1_default 90862ddf3270840fbc9263c003c628ddd4a8bf6548b9bd3d53eb35a5c34bc325 -Test_VM_report3_1_default 7bc6a8e66f9a0e40cd131e9829ff36fed16b464170d27c0b365a3f549df57282 -Test_VM_report3_2_default 2231bc352cf431e72a84abad2261969bd5b0ee3d9051bb7a53b69fd8ea05f951 -Test_VM_report3_3_default 9416187eb0600ed247795837ca820bccaffb39841bd9d2ff625816bfbba35d6d -Test_VM_report3_4_default 11661eb00ea37c68e3483a8e048f922f73070c6da8219247663e3d6471c5c0cc -Test_VM_report3_6_default 1d7be98a8b07f803e80168247459e620ce4b91df634ad896e878d21a3ed757c0 -Test_VM_report3_int_overflow_1_default a0c2414ca2c9672d54409ee375a6aad6e2233306eaa3dfd33a82de3c90bba3ba -Test_VM_report3_int_overflow_2_default 01cd461802e532a6830705ad50eaa1760278737ff7beeb654e3c59ceb4aa8e2e -Test_VM_report3_loop_1_default b28b35d057a1b4fa2282d6f422ecd822b18cc4344733d923ef7b002f64bc4d72 -Test_VM_report3_loop_2_default 9f8236535902b04e403d412fcf1f79e64d0f2eb25b3cc014b7d61b2d7a34b9ef -Test_VM_report3_loop_3_default 7ee05ea553c48a2476035817b9d860f614a355927c9e011b2f824dc6e5f7b0cf -Test_VM_report3_loop_4_default 4b6c2f65fda3c9e9c6660b6cbbcb1b2103c5b52870cb5daa8876bbed0ca9bbc9 -Test_VM_report3_loop_5_default 0d5d504884172ef8513757d7f6b2a3870dbd28efd5960857441c032e1c67d836 -Test_VM_report3_loop_6_default 5c35b92144debdb61b2020d690669bffbdd96f75ecde827fd0c75c05da22b5a0 -Test_VM_report3_qnot_default dc280444c7e3886cc3412f96f44c803c45287a07fcb9c638643e21bcdfe3905d -Test_VM_simple_default f6733549069427c2beb1a85ee25635540e27aa68cb8ad101d8435e19afeae862 -Test_VM_unhandled_exception_1_default 0abe2740dd3b6a6b91eb67fee573f638086fecc72653d2d81c956782186b5d78 -Test_VM_unhandled_exception_2_default 5ca67db5a0e957cc106bb47b744177ca959632a352f3629df376c34cbf03d51b -Test_VM_unhandled_exception_3_default b354e897e35a1177fd66d2c6ad7d77ae33a4e18f8678a518d79fea1388853307 -Test_VM_unhandled_exception_4_default 412cbfe13745fde55cdcc5e41d7b15ba4d09f0e723f8e4421ae0b7066ca07b8f -Test_VM_unhandled_exception_5_default d760e540cd9c200c207f71c540cdaf06d11c96e32ec19860b9c1046cb1e38855 +Test_VM_bug_div_short_any_default 49c9588b2b25b08979016f8b7ca42ae9fa4904a1dc6a2093a7dae6dce0cdf42f +Test_VM_bug_exec_dict_getnear_default 0b0cb6c1fef773f8b5a4aab8d575ba941f3b85dd449f85051296954028e59781 +Test_VM_bug_stack_overflow_default 31950eb2ed62bd1ce1c18e0031a81390ff3a3feee61ff23a09181995917137d0 +Test_VM_infinity_loop_1_default 6b8cc0ff85efa6882ffdf6e9e4333967976a29c4ce32a25b42c4c53370ad3024 +Test_VM_infinity_loop_2_default 4be08957dc86dfde3dfadd8c2f961ef2f1fa839788bbf7affea754115cee9e18 +Test_VM_memory_leak_default da588f89f3bc3ef7496bbab61e2d993f0c84bba80bb28d9c20c6eac0f7f57dd3 +Test_VM_memory_leak_new_default d25e8602c88c454ded6271d0f7afbc556820cc9942c56de9e0bd95b329f8783e +Test_VM_memory_leak_old_default 563f5a02130f231823099985c77d09913db07d2d8782edf431822f6afe4911b8 +Test_VM_oom_1_default 354934173c82e4f7bca5063846abd35cb47c4fcf1c3ba8c2fd04a4b186fcbf18 +Test_VM_report3_1_default 26bb43b5100e94791911a66226ec6545422749e0ea9e6279983b00ef4b506601 +Test_VM_report3_2_default 07a84726217f362fd71b3ceab96112ffc7aa40ed44636cf0128205d85798c66c +Test_VM_report3_3_default 0d9a92491c88ada92283691debd123724db2b7c1bd345200a53c057032e9cc07 +Test_VM_report3_4_default eb23c8e1219aed91b1b4f519efcac87018a5cf8e0ce473cfa641f8221f3c5d20 +Test_VM_report3_6_default 769ce8f9bb6fb9b8619afdb8e9d621b6199466f07c37eeea8edf3c21bf05a101 +Test_VM_report3_int_overflow_1_default 7aaf32ec7ace54b93d6b55f3ac9642572f348ebd64412afdda24849f8e4eb1dc +Test_VM_report3_int_overflow_2_default 572d197681654c94951280448ea3cf448613391633383c2424d719b03b6ec939 +Test_VM_report3_loop_1_default c9b00b32a024c65e0a8019c86e94ee365a823ff26e2420e1797902841abab57c +Test_VM_report3_loop_2_default 3654949987ddb44d8e11e84fe907d43707eaed910b9d0ad15dd68b531df1444a +Test_VM_report3_loop_3_default c1fc7e0d160b334fe8a4735a2a9d36c3b10530edaad5c1859df88382ff82a2d9 +Test_VM_report3_loop_4_default 5ad7cc51a6e553ee3d4a427229908a51692e117624838190311c7023df7a5e5b +Test_VM_report3_loop_5_default 068f81caecc344132a601259d9f73eea7089b1399793661ba1954483e0d5682c +Test_VM_report3_loop_6_default bf2e45709fceeed0192ec34af618cba3b85b90f71071e018afba686167618a90 +Test_VM_report3_qnot_default 7fcbda7e3fc4853a36e6b02e9d346f039690b1879d40850f561ea4123452d3ec +Test_VM_simple_default c96d70ea853828c89cd38fcf22543289335f3086a53301a1d0f186753ba9975b +Test_VM_unhandled_exception_1_default 80fe0e4c2ae19ae73e67e4355548d0afa59ea286be2d75a91db4529618dba008 +Test_VM_unhandled_exception_2_default 1362ba3a6ddbf5a30aba07ad58e8c24b0f85bdc53525e3eaa27af7248c62525a +Test_VM_unhandled_exception_3_default e381ce751cbd0e2994d7f60df7746b9ed7783198cfbcb31dccf02fafe68b6733 +Test_VM_unhandled_exception_4_default 51dd501ec0514f3b388145761b252f09d6ef3e831ea450605ae30511688dd708 +Test_VM_unhandled_exception_5_default 8231cfe1fb6ce6107b592f2c8f6a4eae0d123fc399163c81e8e0d5228b68bc91 Test_base64_main_default e90d541bd810871c4a81e162f1fffb555024b72807cb895414d16bc11494b789 Test_bigexp_main_default 45a1f51fb2abcc1ebf8569e1a57bebee04c334a15e03535ff5869bc9a9db8956 Test_bits256_scan_main_default 3ec7434e1cabc8e08eb2e79064e67747ffbfed177473c7873b88c144a7ed6f42 diff --git a/test/test-adnl.cpp b/test/test-adnl.cpp index d9ae4abef..85e965a4e 100644 --- a/test/test-adnl.cpp +++ b/test/test-adnl.cpp @@ -52,7 +52,7 @@ int main() { td::to_integer_safe("0").ensure(); - std::string db_root_ = "tmp-ee"; + std::string db_root_ = "tmp-dir-test-adnl"; td::rmrf(db_root_).ignore(); td::mkdir(db_root_).ensure(); diff --git a/test/test-catchain.cpp b/test/test-catchain.cpp index 53b329248..149ea3e38 100644 --- a/test/test-catchain.cpp +++ b/test/test-catchain.cpp @@ -219,7 +219,7 @@ int main(int argc, char *argv[]) { SET_VERBOSITY_LEVEL(verbosity_INFO); td::set_default_failure_signal_handler().ensure(); - std::string db_root_ = "tmp-ee"; + std::string db_root_ = "tmp-dir-test-catchain"; td::rmrf(db_root_).ignore(); td::mkdir(db_root_).ensure(); @@ -274,8 +274,6 @@ int main(int argc, char *argv[]) { } }); - auto t = td::Timestamp::in(1.0); - ton::catchain::CatChainSessionId unique_id; td::Random::secure_bytes(unique_id.as_slice()); @@ -287,7 +285,7 @@ int main(int argc, char *argv[]) { } }); - t = td::Timestamp::in(10.0); + auto t = td::Timestamp::in(10.0); while (scheduler.run(1)) { if (t.is_in_past()) { break; @@ -300,7 +298,7 @@ int main(int argc, char *argv[]) { scheduler.run_in_context([&] { td::actor::send_closure(inst[0], &CatChainInst::create_fork); }); - t = td::Timestamp::in(10.0); + t = td::Timestamp::in(1.0); while (scheduler.run(1)) { if (t.is_in_past()) { break; diff --git a/test/test-dht.cpp b/test/test-dht.cpp index 2391fd9c4..8d814f6e0 100644 --- a/test/test-dht.cpp +++ b/test/test-dht.cpp @@ -41,7 +41,7 @@ int main() { SET_VERBOSITY_LEVEL(verbosity_INFO); - std::string db_root_ = "tmp-ee"; + std::string db_root_ = "tmp-dir-test-dht"; td::rmrf(db_root_).ignore(); td::mkdir(db_root_).ensure(); diff --git a/test/test-ext-client.cpp b/test/test-ext-client.cpp deleted file mode 100644 index a1187d781..000000000 --- a/test/test-ext-client.cpp +++ /dev/null @@ -1,220 +0,0 @@ -/* - This file is part of TON Blockchain source code. - - TON Blockchain 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 2 - of the License, or (at your option) any later version. - - TON Blockchain 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 TON Blockchain. If not, see . - - In addition, as a special exception, the copyright holders give permission - to link the code of portions of this program with the OpenSSL library. - You must obey the GNU General Public License in all respects for all - of the code used other than OpenSSL. If you modify file(s) with this - exception, you may extend this exception to your version of the file(s), - but you are not obligated to do so. If you do not wish to do so, delete this - exception statement from your version. If you delete this exception statement - from all source files in the program, then also delete it here. - - Copyright 2017-2020 Telegram Systems LLP -*/ -#include "adnl/adnl.h" -#include "adnl/utils.hpp" -#include "auto/tl/ton_api_json.h" -#include "dht/dht.h" -#include "overlay/overlays.h" -#include "td/utils/OptionParser.h" -#include "td/utils/Time.h" -#include "td/utils/filesystem.h" -#include "td/utils/format.h" -#include "td/utils/Random.h" -#include "td/utils/port/signals.h" -#include "td/utils/port/FileFd.h" -#include "adnl/adnl-ext-client.h" - -#if TD_DARWIN || TD_LINUX -#include -#endif -#include -#include - -template -std::ostream &operator<<(std::ostream &stream, const td::UInt &x) { - for (size_t i = 0; i < size / 8; i++) { - stream << td::format::hex_digit((x.raw[i] >> 4) & 15) << td::format::hex_digit(x.raw[i] & 15); - } - - return stream; -} - -class TestNode : public td::actor::Actor { - private: - std::string local_config_ = "ton-local.config"; - std::string global_config_ = "ton-global.config"; - - td::actor::ActorOwn client_; - - std::unique_ptr make_callback() { - class Callback : public ton::adnl::AdnlExtClient::Callback { - public: - void on_ready() override { - td::actor::send_closure(id_, &TestNode::conn_ready); - } - void on_stop_ready() override { - td::actor::send_closure(id_, &TestNode::conn_closed); - } - Callback(td::actor::ActorId id) : id_(std::move(id)) { - } - - private: - td::actor::ActorId id_; - }; - - return std::make_unique(actor_id(this)); - } - - bool ready_ = false; - std::string db_root_; - - public: - void conn_ready() { - LOG(ERROR) << "conn ready"; - ready_ = true; - } - void conn_closed() { - ready_ = false; - } - void set_local_config(std::string str) { - local_config_ = str; - } - void set_global_config(std::string str) { - global_config_ = str; - } - void set_db_root(std::string db_root) { - db_root_ = db_root; - } - void start_up() override { - } - void alarm() override { - if (ready_ && !client_.empty()) { - LOG(ERROR) << "sending query"; - auto P = td::PromiseCreator::lambda([](td::Result R) { - if (R.is_error()) { - LOG(ERROR) << "failed query: " << R.move_as_error(); - return; - } - auto F = ton::fetch_tl_object(R.move_as_ok(), true); - if (F.is_error()) { - LOG(ERROR) << "failed to pasrse answer: " << F.move_as_error(); - return; - } - auto obj = F.move_as_ok(); - LOG(ERROR) << "got answer: " << ton::ton_api::to_string(obj); - }); - td::BufferSlice b = ton::serialize_tl_object(ton::create_tl_object(), true); - td::actor::send_closure(client_, &ton::adnl::AdnlExtClient::send_query, "query", std::move(b), - td::Timestamp::in(10.0), std::move(P)); - } - alarm_timestamp() = td::Timestamp::in(2.0); - } - TestNode() { - } - void run() { - auto L = td::read_file(local_config_).move_as_ok(); - auto lc_j = td::json_decode(L.as_slice()).move_as_ok(); - ton::ton_api::config_local lc; - ton::ton_api::from_json(lc, lc_j.get_object()).ensure(); - - auto G = td::read_file(global_config_).move_as_ok(); - auto gc_j = td::json_decode(G.as_slice()).move_as_ok(); - ton::ton_api::config_global gc; - ton::ton_api::from_json(gc, gc_j.get_object()).ensure(); - - CHECK(gc.liteclients_.size() > 0); - auto &cli = gc.liteclients_[0]; - td::IPAddress addr; - addr.init_host_port(td::IPAddress::ipv4_to_str(cli->ip_), cli->port_).ensure(); - - client_ = ton::adnl::AdnlExtClient::create(ton::adnl::AdnlNodeIdFull::create(cli->id_).move_as_ok(), addr, - make_callback()); - alarm_timestamp() = td::Timestamp::in(2.0); - } -}; - -td::Result get_uint256(std::string str) { - if (str.size() != 64) { - return td::Status::Error("uint256 must have 64 bytes"); - } - td::UInt256 res; - for (size_t i = 0; i < 32; i++) { - res.raw[i] = static_cast(td::hex_to_int(str[2 * i]) * 16 + td::hex_to_int(str[2 * i + 1])); - } - return res; -} - -int main(int argc, char *argv[]) { - SET_VERBOSITY_LEVEL(verbosity_DEBUG); - td::set_default_failure_signal_handler().ensure(); - - td::actor::ActorOwn x; - - td::OptionParser p; - p.set_description("test basic adnl functionality"); - p.add_option('h', "help", "prints_help", [&]() { - char b[10240]; - td::StringBuilder sb(td::MutableSlice{b, 10000}); - sb << p; - std::cout << sb.as_cslice().c_str(); - std::exit(2); - return td::Status::OK(); - }); - p.add_option('C', "global-config", "file to read global config", [&](td::Slice fname) { - td::actor::send_closure(x, &TestNode::set_global_config, fname.str()); - return td::Status::OK(); - }); - p.add_option('c', "local-config", "file to read local config", [&](td::Slice fname) { - td::actor::send_closure(x, &TestNode::set_local_config, fname.str()); - return td::Status::OK(); - }); - p.add_option('D', "db", "root for dbs", [&](td::Slice fname) { - td::actor::send_closure(x, &TestNode::set_db_root, fname.str()); - return td::Status::OK(); - }); - p.add_option('d', "daemonize", "set SIGHUP", [&]() { - td::set_signal_handler(td::SignalType::HangUp, [](int sig) { -#if TD_DARWIN || TD_LINUX - close(0); - setsid(); -#endif - }).ensure(); - return td::Status::OK(); - }); -#if TD_DARWIN || TD_LINUX - p.add_option('l', "logname", "log to file", [&](td::Slice fname) { - auto FileLog = td::FileFd::open(td::CSlice(fname.str().c_str()), - td::FileFd::Flags::Create | td::FileFd::Flags::Append | td::FileFd::Flags::Write) - .move_as_ok(); - - dup2(FileLog.get_native_fd().fd(), 1); - dup2(FileLog.get_native_fd().fd(), 2); - return td::Status::OK(); - }); -#endif - - td::actor::Scheduler scheduler({2}); - - scheduler.run_in_context([&] { x = td::actor::create_actor("testnode"); }); - - scheduler.run_in_context([&] { p.run(argc, argv).ensure(); }); - scheduler.run_in_context([&] { td::actor::send_closure(x, &TestNode::run); }); - scheduler.run(); - - return 0; -} diff --git a/test/test-ext-server.cpp b/test/test-ext-server.cpp deleted file mode 100644 index b4b787283..000000000 --- a/test/test-ext-server.cpp +++ /dev/null @@ -1,221 +0,0 @@ -/* - This file is part of TON Blockchain source code. - - TON Blockchain 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 2 - of the License, or (at your option) any later version. - - TON Blockchain 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 TON Blockchain. If not, see . - - In addition, as a special exception, the copyright holders give permission - to link the code of portions of this program with the OpenSSL library. - You must obey the GNU General Public License in all respects for all - of the code used other than OpenSSL. If you modify file(s) with this - exception, you may extend this exception to your version of the file(s), - but you are not obligated to do so. If you do not wish to do so, delete this - exception statement from your version. If you delete this exception statement - from all source files in the program, then also delete it here. - - Copyright 2017-2020 Telegram Systems LLP -*/ -#include "adnl/adnl.h" -#include "adnl/utils.hpp" -#include "auto/tl/ton_api_json.h" -#include "dht/dht.h" -#include "overlay/overlays.h" -#include "td/utils/OptionParser.h" -#include "td/utils/Time.h" -#include "td/utils/filesystem.h" -#include "td/utils/format.h" -#include "td/utils/Random.h" -#include "td/utils/port/signals.h" -#include "td/utils/port/FileFd.h" - -#if TD_DARWIN || TD_LINUX -#include -#endif -#include -#include - -template -std::ostream &operator<<(std::ostream &stream, const td::UInt &x) { - for (size_t i = 0; i < size / 8; i++) { - stream << td::format::hex_digit((x.raw[i] >> 4) & 15) << td::format::hex_digit(x.raw[i] & 15); - } - - return stream; -} - -class TestNode : public td::actor::Actor { - private: - td::actor::ActorOwn keyring_; - td::actor::ActorOwn adnl_; - - std::string local_config_ = "ton-local.config"; - std::string global_config_ = "ton-global.config"; - - std::unique_ptr make_callback() { - class Callback : public ton::adnl::Adnl::Callback { - public: - void receive_message(ton::adnl::AdnlNodeIdShort src, ton::adnl::AdnlNodeIdShort dst, - td::BufferSlice data) override { - td::actor::send_closure(id_, &TestNode::adnl_receive_message, src, dst, std::move(data)); - } - void receive_query(ton::adnl::AdnlNodeIdShort src, ton::adnl::AdnlNodeIdShort dst, td::BufferSlice data, - td::Promise promise) override { - td::actor::send_closure(id_, &TestNode::adnl_receive_query, src, dst, std::move(data), std::move(promise)); - } - Callback(td::actor::ActorId id) : id_(std::move(id)) { - } - - private: - td::actor::ActorId id_; - }; - - return std::make_unique(actor_id(this)); - } - - std::string db_root_; - - public: - void adnl_receive_message(ton::adnl::AdnlNodeIdShort src, ton::adnl::AdnlNodeIdShort dst, td::BufferSlice data) { - LOG(ERROR) << "ADNL MESSAGE FROM " << src << ": size=" << data.size() << "\n"; - } - - void adnl_receive_query(ton::adnl::AdnlNodeIdShort src, ton::adnl::AdnlNodeIdShort dst, td::BufferSlice data, - td::Promise promise) { - LOG(ERROR) << "ADNL QUERY FROM " << src << ": size=" << data.size() << "\n"; - promise.set_value(ton::serialize_tl_object(ton::create_tl_object("xxx"), true)); - } - void set_local_config(std::string str) { - local_config_ = str; - } - void set_global_config(std::string str) { - global_config_ = str; - } - void set_db_root(std::string db_root) { - db_root_ = db_root; - } - void start_up() override { - } - void alarm() override { - } - TestNode() { - } - void run() { - keyring_ = ton::keyring::Keyring::create(db_root_ + "/keyring/"); - adnl_ = ton::adnl::Adnl::create(db_root_, keyring_.get()); - - auto L = td::read_file(local_config_).move_as_ok(); - auto lc_j = td::json_decode(L.as_slice()).move_as_ok(); - ton::ton_api::config_local lc; - ton::ton_api::from_json(lc, lc_j.get_object()).ensure(); - - auto G = td::read_file(global_config_).move_as_ok(); - auto gc_j = td::json_decode(G.as_slice()).move_as_ok(); - ton::ton_api::config_global gc; - ton::ton_api::from_json(gc, gc_j.get_object()).ensure(); - - for (auto &port : lc.udp_ports_) { - td::actor::send_closure(adnl_, &ton::adnl::Adnl::add_listening_udp_port, "0.0.0.0", - static_cast(port)); - } - - //td::actor::send_closure(network_manager_, &ton::adnl::AdnlNetworkManager::load_local_config, std::move(lc.net_)); - //td::actor::send_closure(adnl_, &ton::adnl::Adnl::add_ids_from_config, std::move(lc.local_ids_)); - if (gc.adnl_) { - td::actor::send_closure(adnl_, &ton::adnl::Adnl::add_static_nodes_from_config, - std::move(gc.adnl_->static_nodes_)); - } - for (auto &x : lc.liteservers_) { - auto pk = ton::PrivateKey{x->id_}; - auto pub_k = ton::adnl::AdnlNodeIdFull{pk.compute_public_key()}; - auto id = pub_k.compute_short_id(); - - td::actor::send_closure(keyring_, &ton::keyring::Keyring::add_key, std::move(pk), false); - td::actor::send_closure(adnl_, &ton::adnl::Adnl::add_id, pub_k, ton::adnl::AdnlAddressList{}); - td::actor::send_closure(adnl_, &ton::adnl::Adnl::subscribe, id, - ton::adnl::Adnl::int_to_bytestring(ton::ton_api::getTestObject::ID), make_callback()); - td::actor::send_closure(adnl_, &ton::adnl::Adnl::add_ext_local_id, id); - td::actor::send_closure(adnl_, &ton::adnl::Adnl::add_ext_tcp_port, static_cast(x->port_)); - } - } -}; - -td::Result get_uint256(std::string str) { - if (str.size() != 64) { - return td::Status::Error("uint256 must have 64 bytes"); - } - td::UInt256 res; - for (size_t i = 0; i < 32; i++) { - res.raw[i] = static_cast(td::hex_to_int(str[2 * i]) * 16 + td::hex_to_int(str[2 * i + 1])); - } - return res; -} - -int main(int argc, char *argv[]) { - SET_VERBOSITY_LEVEL(verbosity_DEBUG); - td::set_default_failure_signal_handler().ensure(); - - td::actor::ActorOwn x; - - td::OptionParser p; - p.set_description("test basic adnl functionality"); - p.add_option('h', "help", "prints_help", [&]() { - char b[10240]; - td::StringBuilder sb(td::MutableSlice{b, 10000}); - sb << p; - std::cout << sb.as_cslice().c_str(); - std::exit(2); - return td::Status::OK(); - }); - p.add_option('C', "global-config", "file to read global config", [&](td::Slice fname) { - td::actor::send_closure(x, &TestNode::set_global_config, fname.str()); - return td::Status::OK(); - }); - p.add_option('c', "local-config", "file to read local config", [&](td::Slice fname) { - td::actor::send_closure(x, &TestNode::set_local_config, fname.str()); - return td::Status::OK(); - }); - p.add_option('D', "db", "root for dbs", [&](td::Slice fname) { - td::actor::send_closure(x, &TestNode::set_db_root, fname.str()); - return td::Status::OK(); - }); - p.add_option('d', "daemonize", "set SIGHUP", [&]() { - td::set_signal_handler(td::SignalType::HangUp, [](int sig) { -#if TD_DARWIN || TD_LINUX - close(0); - setsid(); -#endif - }).ensure(); - return td::Status::OK(); - }); -#if TD_DARWIN || TD_LINUX - p.add_option('l', "logname", "log to file", [&](td::Slice fname) { - auto FileLog = td::FileFd::open(td::CSlice(fname.str().c_str()), - td::FileFd::Flags::Create | td::FileFd::Flags::Append | td::FileFd::Flags::Write) - .move_as_ok(); - - dup2(FileLog.get_native_fd().fd(), 1); - dup2(FileLog.get_native_fd().fd(), 2); - return td::Status::OK(); - }); -#endif - - td::actor::Scheduler scheduler({2}); - - scheduler.run_in_context([&] { x = td::actor::create_actor("testnode"); }); - - scheduler.run_in_context([&] { p.run(argc, argv).ensure(); }); - scheduler.run_in_context([&] { td::actor::send_closure(x, &TestNode::run); }); - scheduler.run(); - - return 0; -} diff --git a/test/test-node.cpp b/test/test-node.cpp deleted file mode 100644 index d771d3aeb..000000000 --- a/test/test-node.cpp +++ /dev/null @@ -1,376 +0,0 @@ -/* - This file is part of TON Blockchain source code. - - TON Blockchain 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 2 - of the License, or (at your option) any later version. - - TON Blockchain 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 TON Blockchain. If not, see . - - In addition, as a special exception, the copyright holders give permission - to link the code of portions of this program with the OpenSSL library. - You must obey the GNU General Public License in all respects for all - of the code used other than OpenSSL. If you modify file(s) with this - exception, you may extend this exception to your version of the file(s), - but you are not obligated to do so. If you do not wish to do so, delete this - exception statement from your version. If you delete this exception statement - from all source files in the program, then also delete it here. - - Copyright 2017-2020 Telegram Systems LLP -*/ -#include "adnl/adnl.h" -#include "adnl/utils.hpp" -#include "auto/tl/ton_api_json.h" -#include "dht/dht.h" -#include "overlay/overlays.h" -#include "td/utils/OptionParser.h" -#include "td/utils/Time.h" -#include "td/utils/filesystem.h" -#include "td/utils/format.h" -#include "td/utils/Random.h" -#include "td/utils/port/signals.h" -#include "td/utils/port/FileFd.h" -#include "catchain/catchain.h" - -#include "crypto/common/refvector.hpp" - -#if TD_DARWIN || TD_LINUX -#include -#endif -#include -#include - -template -std::ostream &operator<<(std::ostream &stream, const td::UInt &x) { - for (size_t i = 0; i < size / 8; i++) { - stream << td::format::hex_digit((x.raw[i] >> 4) & 15) << td::format::hex_digit(x.raw[i] & 15); - } - - return stream; -} - -class TestNode : public td::actor::Actor { - private: - std::vector ping_ids_; - td::Timestamp next_dht_dump_; - - td::actor::ActorOwn adnl_; - std::vector> dht_nodes_; - td::actor::ActorOwn overlay_manager_; - std::vector> overlays_; - std::vector> catchains_; - - std::string local_config_ = "ton-local.config"; - std::string global_config_ = "ton-global.config"; - - td::int32 broadcast_size_ = 100; - - void receive_message(td::UInt256 src, td::UInt256 dst, td::BufferSlice data) { - LOG(ERROR) << "MESSAGE FROM " << src << " to " << dst << " of size " << std::to_string(data.size()) << "\n"; - } - - void receive_broadcast(td::UInt256 overlay_id, td::BufferSlice data) { - LOG(ERROR) << "BROADCAST IN " << overlay_id << " hash=" << td::sha256(data.as_slice()) << "\n"; - } - - void receive_query(td::UInt256 src, td::UInt256 dst, td::BufferSlice data, td::Promise promise) { - auto Q = ton::fetch_tl_object(std::move(data), true); - CHECK(Q.is_ok()); - auto R = Q.move_as_ok(); - LOG(ERROR) << "QUERY " - << " FROM " << src << " to " << dst << ": " << ton::ton_api::to_string(R) << "\n"; - promise.set_value(serialize_tl_object(ton::create_tl_object(), true)); - } - - void catchain_new_block(td::UInt256 src, td::uint64 height, td::BufferSlice data) { - LOG(ERROR) << "CATCHAIN BLOCK: " << src << "@" << height << ": " << td::sha256_uint256(data.as_slice()) << "\n"; - } - void catchain_bad_block(td::UInt256 src) { - LOG(ERROR) << "CATCHAIN BAD BLOCK\n"; - } - void catchain_broadcast(td::BufferSlice data) { - LOG(ERROR) << "CATCHAIN BROADCAST " << td::sha256_uint256(data.as_slice()) << "\n"; - } - - std::unique_ptr make_callback() { - class Callback : public ton::adnl::Adnl::Callback { - public: - void receive_message(td::UInt256 src, td::UInt256 dst, td::BufferSlice data) override { - td::actor::send_closure(id_, &TestNode::receive_message, src, dst, std::move(data)); - } - void receive_query(td::UInt256 src, td::UInt256 dst, td::BufferSlice data, - td::Promise promise) override { - td::actor::send_closure(id_, &TestNode::receive_query, src, dst, std::move(data), std::move(promise)); - } - Callback(td::actor::ActorId id) : id_(std::move(id)) { - } - - private: - td::actor::ActorId id_; - }; - - return std::make_unique(actor_id(this)); - } - - std::unique_ptr make_catchain_callback() { - class Callback : public ton::CatChainActor::Callback { - public: - void new_block(td::UInt256 src, td::uint64 height, td::BufferSlice data) override { - td::actor::send_closure(id_, &TestNode::catchain_new_block, src, height, std::move(data)); - } - void bad_block(td::UInt256 src) override { - td::actor::send_closure(id_, &TestNode::catchain_bad_block, src); - } - void broadcast(td::BufferSlice data) override { - td::actor::send_closure(id_, &TestNode::catchain_broadcast, std::move(data)); - } - Callback(td::actor::ActorId id) : id_(std::move(id)) { - } - - private: - td::actor::ActorId id_; - }; - - return std::make_unique(actor_id(this)); - } - - std::unique_ptr make_overlay_callback() { - class Callback : public ton::overlay::Overlays::Callback { - public: - void receive_message(td::UInt256 src, td::UInt256 overlay_id, td::BufferSlice data) override { - } - void receive_query(td::UInt256 src, td::uint64 query_id, td::UInt256 overlay_id, td::BufferSlice data) override { - } - - void receive_broadcast(td::UInt256 overlay_id, td::BufferSlice data) override { - td::actor::send_closure(id_, &TestNode::receive_broadcast, overlay_id, std::move(data)); - } - Callback(td::actor::ActorId id) : id_(std::move(id)) { - } - - private: - td::actor::ActorId id_; - }; - - return std::make_unique(actor_id(this)); - } - - public: - void set_broadcast_size(td::int32 size) { - broadcast_size_ = size; - } - void set_local_config(std::string str) { - local_config_ = str; - } - void set_global_config(std::string str) { - global_config_ = str; - } - void start_up() override { - alarm_timestamp() = td::Timestamp::in(1); - } - void alarm() override { - /*if (overlays_.size() > 0 && broadcast_size_ > 0) { - td::BufferSlice s(broadcast_size_); - td::Random::secure_bytes(s.as_slice()); - - td::actor::send_closure(overlay_manager_, &ton::overlay::OverlayManager::send_broadcast_fer, overlays_[0].first, - overlays_[0].second, ton::create_tl_object(s.as_slice().str())); - }*/ - for (auto &chain : catchains_) { - td::BufferSlice s(broadcast_size_); - td::Random::secure_bytes(s.as_slice()); - - td::actor::send_closure(chain, &ton::CatChainActor::add_event, std::move(s)); - } - alarm_timestamp() = td::Timestamp::in(1.0); - if (next_dht_dump_.is_in_past()) { - /*for (auto &node : dht_nodes_) { - char b[10240]; - td::StringBuilder sb({b, 10000}); - node->get_actor_unsafe().dump(sb); - LOG(DEBUG) << sb.as_cslice().c_str(); - }*/ - next_dht_dump_ = td::Timestamp::in(60.0); - } - } - TestNode() { - adnl_ = ton::adnl::Adnl::create("/var/ton-work/db.adnl"); - } - void run() { - auto L = td::read_file(local_config_).move_as_ok(); - auto lc_j = td::json_decode(L.as_slice()).move_as_ok(); - ton::ton_api::config_local lc; - ton::ton_api::from_json(lc, lc_j.get_object()).ensure(); - - auto G = td::read_file(global_config_).move_as_ok(); - auto gc_j = td::json_decode(G.as_slice()).move_as_ok(); - ton::ton_api::config_global gc; - ton::ton_api::from_json(gc, gc_j.get_object()).ensure(); - - for (auto &port : lc.udp_ports_) { - td::actor::send_closure(adnl_, &ton::adnl::Adnl::add_listening_udp_port, "0.0.0.0", - static_cast(port)); - } - /*if (!lc.net_) { - LOG(FATAL) << "local config does not contain NET section"; - }*/ - - //td::actor::send_closure(network_manager_, &ton::adnl::AdnlNetworkManager::load_local_config, std::move(lc.net_)); - td::actor::send_closure(adnl_, &ton::adnl::Adnl::add_ids_from_config, std::move(lc.local_ids_)); - if (gc.adnl_) { - td::actor::send_closure(adnl_, &ton::adnl::Adnl::add_static_nodes_from_config, - std::move(gc.adnl_->static_nodes_)); - } - if (!gc.dht_) { - LOG(FATAL) << "global config does not contain dht section"; - } - - for (auto &it : lc.dht_) { - if (it->get_id() == ton::ton_api::dht_config_local::ID) { - auto R = ton::dht::Dht::create_from_json( - ton::clone_tl_object(gc.dht_), ton::move_tl_object_as(it), adnl_.get()); - if (R.is_error()) { - LOG(FATAL) << "fail creating dht node: " << R.move_as_error(); - } - dht_nodes_.push_back(R.move_as_ok()); - } else { - auto I = ton::move_tl_object_as(it); - for (int i = 0; i < I->cnt_; i++) { - auto R = ton::dht::Dht::create_random(ton::clone_tl_object(gc.dht_), ton::clone_tl_object(I->addr_list_), - adnl_.get()); - if (R.is_error()) { - LOG(FATAL) << "fail creating dht node: " << R.move_as_error(); - } - dht_nodes_.push_back(R.move_as_ok()); - } - } - } - - CHECK(dht_nodes_.size() > 0); - - td::actor::send_closure(adnl_, &ton::adnl::Adnl::register_dht_node, dht_nodes_[0].get()); - //td::actor::send_closure(overlay_manager_, &ton::overlay::Overlays::register_dht_node, dht_nodes_[0].get()); - - overlay_manager_ = ton::overlay::Overlays::create(adnl_.get(), dht_nodes_[0].get()); - - for (auto &it : lc.public_overlays_) { - if (it->get_id() == ton::ton_api::overlay_config_local::ID) { - auto X = ton::move_tl_object_as(it); - auto id = ton::create_tl_object(X->name_.clone()); - auto Id = ton::move_tl_object_as(id); - auto sid = ton::adnl_short_id(Id); - overlays_.emplace_back(X->id_->id_, sid); - td::actor::send_closure(overlay_manager_, &ton::overlay::Overlays::create_public_overlay, X->id_->id_, - std::move(Id), make_overlay_callback()); - } else { - auto X = ton::move_tl_object_as(it); - for (int i = 0; i < X->cnt_; i++) { - auto pk = ton::adnl_generate_random_pk(); - auto local_id = ton::adnl_short_id(ton::get_public_key(pk)); - - td::actor::send_closure(adnl_, &ton::adnl::Adnl::add_id, std::move(pk), ton::clone_tl_object(X->addr_list_)); - - auto id = ton::create_tl_object(X->name_.clone()); - auto Id = ton::move_tl_object_as(id); - auto sid = ton::adnl_short_id(Id); - overlays_.emplace_back(local_id, sid); - td::actor::send_closure(overlay_manager_, &ton::overlay::Overlays::create_public_overlay, local_id, - std::move(Id), make_overlay_callback()); - } - } - } - - //auto C = ton::CatChainActor::create(nullptr, adnl_.get(), overlay_manager_.get(), - // std::vector>()); - - for (auto &it : lc.catchains_) { - auto tag = it->tag_; - for (auto &V : gc.catchains_) { - if (V->tag_ == tag) { - auto v = std::move(clone_tl_object(V)->nodes_); - auto C = ton::CatChainActor::create(make_catchain_callback(), adnl_.get(), overlay_manager_.get(), - std::move(v), it->id_->id_, tag); - catchains_.push_back(std::move(C)); - } - } - } - } -}; - -td::Result get_uint256(std::string str) { - if (str.size() != 64) { - return td::Status::Error("uint256 must have 64 bytes"); - } - td::UInt256 res; - for (size_t i = 0; i < 32; i++) { - res.raw[i] = static_cast(td::hex_to_int(str[2 * i]) * 16 + td::hex_to_int(str[2 * i + 1])); - } - return res; -} - -int main(int argc, char *argv[]) { - SET_VERBOSITY_LEVEL(verbosity_DEBUG); - td::set_default_failure_signal_handler().ensure(); - - td::actor::ActorOwn x; - - td::OptionParser p; - p.set_description("test basic adnl functionality"); - p.add_option('h', "help", "prints_help", [&]() { - char b[10240]; - td::StringBuilder sb({b, 10000}); - sb << p; - std::cout << sb.as_cslice().c_str(); - std::exit(2); - return td::Status::OK(); - }); - p.add_option('C', "global-config", "file to read global config", [&](td::Slice fname) { - td::actor::send_closure(x, &TestNode::set_global_config, fname.str()); - return td::Status::OK(); - }); - p.add_option('c', "local-config", "file to read local config", [&](td::Slice fname) { - td::actor::send_closure(x, &TestNode::set_local_config, fname.str()); - return td::Status::OK(); - }); - p.add_option('s', "broadcast-size", "size of broadcast", [&](td::Slice fname) { - td::actor::send_closure(x, &TestNode::set_broadcast_size, std::atoi(fname.str().c_str())); - return td::Status::OK(); - }); - p.add_option('d', "daemonize", "set SIGHUP", [&]() { - td::set_signal_handler(td::SignalType::HangUp, [](int sig) { -#if TD_DARWIN || TD_LINUX - close(0); - setsid(); -#endif - }).ensure(); - return td::Status::OK(); - }); -#if TD_DARWIN || TD_LINUX - p.add_option('l', "logname", "log to file", [&](td::Slice fname) { - auto FileLog = td::FileFd::open(td::CSlice(fname.str().c_str()), - td::FileFd::Flags::Create | td::FileFd::Flags::Append | td::FileFd::Flags::Write) - .move_as_ok(); - - dup2(FileLog.get_native_fd().fd(), 1); - dup2(FileLog.get_native_fd().fd(), 2); - return td::Status::OK(); - }); -#endif - - td::actor::Scheduler scheduler({2}); - - scheduler.run_in_context([&] { x = td::actor::create_actor("testnode"); }); - - scheduler.run_in_context([&] { p.run(argc, argv).ensure(); }); - scheduler.run_in_context([&] { td::actor::send_closure(x, &TestNode::run); }); - scheduler.run(); - - return 0; -} diff --git a/test/test-rldp.cpp b/test/test-rldp.cpp index 11344c55b..b07f5f7dc 100644 --- a/test/test-rldp.cpp +++ b/test/test-rldp.cpp @@ -40,7 +40,7 @@ int main() { SET_VERBOSITY_LEVEL(verbosity_INFO); - std::string db_root_ = "tmp-ee"; + std::string db_root_ = "tmp-dir-test-rldp"; td::rmrf(db_root_).ignore(); td::mkdir(db_root_).ensure(); diff --git a/test/test-rldp2.cpp b/test/test-rldp2.cpp index 5367ffd3e..646b27d5d 100644 --- a/test/test-rldp2.cpp +++ b/test/test-rldp2.cpp @@ -40,7 +40,7 @@ int main() { SET_VERBOSITY_LEVEL(verbosity_INFO); - std::string db_root_ = "tmp-ee"; + std::string db_root_ = "tmp-dir-test-rldp2"; td::rmrf(db_root_).ignore(); td::mkdir(db_root_).ensure(); diff --git a/test/test-ton-collator.cpp b/test/test-ton-collator.cpp index 9ed5c7814..b76dd5ebb 100644 --- a/test/test-ton-collator.cpp +++ b/test/test-ton-collator.cpp @@ -50,7 +50,7 @@ #include "validator/fabric.h" #include "validator/impl/collator.h" -#include "crypto/vm/cp0.h" +#include "crypto/vm/vm.h" #include "crypto/block/block-db.h" #include "common/errorlog.h" @@ -408,7 +408,7 @@ int main(int argc, char *argv[]) { SET_VERBOSITY_LEVEL(verbosity_INFO); td::set_default_failure_signal_handler().ensure(); - CHECK(vm::init_op_cp0()); + vm::init_vm().ensure(); td::actor::ActorOwn x; diff --git a/test/test-validator-session-state.cpp b/test/test-validator-session-state.cpp index 819c1cc2d..5ed08add7 100644 --- a/test/test-validator-session-state.cpp +++ b/test/test-validator-session-state.cpp @@ -48,6 +48,7 @@ class Description : public ton::validatorsession::ValidatorSessionDescription { return 0; } void *alloc(size_t size, size_t align, bool temp) override { + size = (size + 15) / 16 * 16; td::uint32 idx = temp ? 1 : 0; auto s = pdata_cur_[idx].fetch_add(size); CHECK(s + size <= pdata_size_[idx]); diff --git a/test/test-validator-session.cpp b/test/test-validator-session.cpp deleted file mode 100644 index e986795ad..000000000 --- a/test/test-validator-session.cpp +++ /dev/null @@ -1,356 +0,0 @@ -/* - This file is part of TON Blockchain source code. - - TON Blockchain 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 2 - of the License, or (at your option) any later version. - - TON Blockchain 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 TON Blockchain. If not, see . - - In addition, as a special exception, the copyright holders give permission - to link the code of portions of this program with the OpenSSL library. - You must obey the GNU General Public License in all respects for all - of the code used other than OpenSSL. If you modify file(s) with this - exception, you may extend this exception to your version of the file(s), - but you are not obligated to do so. If you do not wish to do so, delete this - exception statement from your version. If you delete this exception statement - from all source files in the program, then also delete it here. - - Copyright 2017-2020 Telegram Systems LLP -*/ -#include "adnl/adnl.h" -#include "rldp/rldp.h" -#include "adnl/utils.hpp" -#include "auto/tl/ton_api_json.h" -#include "dht/dht.h" -#include "overlay/overlays.h" -#include "td/utils/OptionParser.h" -#include "td/utils/Time.h" -#include "td/utils/filesystem.h" -#include "td/utils/format.h" -#include "td/utils/Random.h" -#include "td/utils/port/signals.h" -#include "td/utils/port/FileFd.h" -#include "td/utils/overloaded.h" -#include "catchain/catchain.h" -#include "validator-session/validator-session.h" - -#if TD_DARWIN || TD_LINUX -#include -#endif -#include -#include - -class TestNode : public td::actor::Actor { - private: - td::actor::ActorOwn keyring_; - td::actor::ActorOwn adnl_; - td::actor::ActorOwn rldp_; - std::vector> dht_nodes_; - td::actor::ActorOwn overlay_manager_; - std::vector> validator_sessions_; - - std::string local_config_ = "ton-local.config"; - std::string global_config_ = "ton-global.config"; - - std::unique_ptr make_vs_callback() { - class Callback : public ton::validatorsession::ValidatorSession::Callback { - public: - void on_candidate(td::uint32 round, ton::PublicKeyHash source, - ton::validatorsession::ValidatorSessionRootHash root_hash, td::BufferSlice data, - td::BufferSlice extra, - td::Promise promise) override { - td::actor::send_closure(id_, &TestNode::on_candidate, round, source, root_hash, std::move(data), - std::move(extra), std::move(promise)); - } - void on_generate_slot(td::uint32 round, td::Promise promise) override { - td::actor::send_closure(id_, &TestNode::on_generate_slot, round, std::move(promise)); - } - void on_block_committed(td::uint32 round, ton::PublicKeyHash src, - ton::validatorsession::ValidatorSessionRootHash root_hash, - ton::validatorsession::ValidatorSessionFileHash file_hash, td::BufferSlice data, - std::vector> signatures, - ton::validatorsession::ValidatorSessionStats stats) override { - td::actor::send_closure(id_, &TestNode::on_block_committed, round, root_hash, std::move(data), - std::move(signatures)); - } - /*void on_missing_block_committed( - td::uint32 round, ton::validatorsession::ValidatorSessionRootHash root_hash, ton::validatorsession::ValidatorSessionFileHash file_hash, - td::BufferSlice data, std::vector> signatures) override { - td::actor::send_closure(id_, &TestNode::on_block_committed_abscent, round, root_hash, file_hash, - std::move(data), std::move(signatures)); - }*/ - void on_block_skipped(td::uint32 round) override { - td::actor::send_closure(id_, &TestNode::on_block_skipped, round); - } - void get_approved_candidate(ton::validatorsession::ValidatorSessionRootHash root_hash, - ton::validatorsession::ValidatorSessionFileHash file_hash, - ton::validatorsession::ValidatorSessionFileHash collated_data_file_hash, - td::Promise promise) override { - UNREACHABLE(); - } - - Callback(td::actor::ActorId id) : id_(std::move(id)) { - } - - private: - td::actor::ActorId id_; - }; - - return std::make_unique(actor_id(this)); - } - - td::uint64 height_ = 0; - - public: - void on_candidate(td::uint32 round, ton::PublicKeyHash source, - ton::validatorsession::ValidatorSessionRootHash root_hash, td::BufferSlice data, - td::BufferSlice collated, - td::Promise promise) { - auto sh = sha256_bits256(data.as_slice()); - auto B = ton::fetch_tl_object(std::move(data), true); - if (B.is_error()) { - promise.set_result( - ton::validatorsession::ValidatorSession::CandidateDecision{B.move_as_error().to_string(), td::BufferSlice()}); - return; - } - if (collated.size() != 32) { - promise.set_result( - ton::validatorsession::ValidatorSession::CandidateDecision{"bad collated data length", td::BufferSlice()}); - return; - } - td::Bits256 x; - x.as_slice().copy_from(collated.as_slice().truncate(32)); - if (x != sh) { - promise.set_result( - ton::validatorsession::ValidatorSession::CandidateDecision{"bad block hash", td::BufferSlice()}); - return; - } - auto block = B.move_as_ok(); - if (block->root_hash_ != root_hash) { - promise.set_result( - ton::validatorsession::ValidatorSession::CandidateDecision{"bad root hash", td::BufferSlice()}); - return; - } - if (block->root_hash_ != sha256_bits256(block->data_.as_slice())) { - promise.set_result( - ton::validatorsession::ValidatorSession::CandidateDecision{"bad root hash (2)", td::BufferSlice()}); - return; - } - if (block->height_ != static_cast(height_) + 1) { - promise.set_result( - ton::validatorsession::ValidatorSession::CandidateDecision{"bad root height", td::BufferSlice()}); - return; - } - promise.set_result(ton::validatorsession::ValidatorSession::CandidateDecision{0}); - } - void on_generate_slot(td::uint32 round, td::Promise promise) { - auto data = td::BufferSlice{10000}; - td::Random::secure_bytes(data.as_slice()); - auto root_hash = sha256_bits256(data.as_slice()); - auto block = - ton::create_tl_object(root_hash, height_ + 1, std::move(data)); - - auto B = ton::serialize_tl_object(block, true); - auto hash = sha256_bits256(B.as_slice()); - auto collated = td::BufferSlice{32}; - collated.as_slice().copy_from(as_slice(hash)); - - /*BlockId id; - BlockStatus status; - RootHash root_hash; - FileHash file_hash; - FileHash collated_file_hash; - td::BufferSlice data; - td::BufferSlice collated_data;*/ - auto collated_file_hash = td::sha256_bits256(collated.as_slice()); - ton::BlockCandidate candidate{ton::BlockIdExt{ton::BlockId{0, 0, 0}, root_hash, td::sha256_bits256(B.as_slice())}, - collated_file_hash, std::move(B), std::move(collated)}; - promise.set_result(std::move(candidate)); - } - void on_block_committed(td::uint32 round, ton::validatorsession::ValidatorSessionRootHash root_hash, - td::BufferSlice data, - std::vector> signatures) { - LOG(ERROR) << "COMITTED BLOCK: ROUND=" << round << " ROOT_HASH=" << root_hash - << " DATA_HASH=" << sha256_bits256(data.as_slice()) << " SIGNED BY " << signatures.size(); - } - void on_block_skipped(td::uint32 round) { - LOG(ERROR) << "SKIPPED ROUND=" << round; - } - - void set_local_config(std::string str) { - local_config_ = str; - } - void set_global_config(std::string str) { - global_config_ = str; - } - void start_up() override { - } - void alarm() override { - } - TestNode() { - } - void run() { - keyring_ = ton::keyring::Keyring::create("/var/ton-work/db.keyring"); - adnl_ = ton::adnl::Adnl::create("/var/ton-work/db.adnl", keyring_.get()); - rldp_ = ton::rldp::Rldp::create(adnl_.get()); - - auto L = td::read_file(local_config_).move_as_ok(); - auto lc_j = td::json_decode(L.as_slice()).move_as_ok(); - ton::ton_api::config_local lc; - ton::ton_api::from_json(lc, lc_j.get_object()).ensure(); - - auto G = td::read_file(global_config_).move_as_ok(); - auto gc_j = td::json_decode(G.as_slice()).move_as_ok(); - ton::ton_api::config_global gc; - ton::ton_api::from_json(gc, gc_j.get_object()).ensure(); - - for (auto &port : lc.udp_ports_) { - td::actor::send_closure(adnl_, &ton::adnl::Adnl::add_listening_udp_port, "0.0.0.0", - static_cast(port)); - } - /*if (!lc.net_) { - LOG(FATAL) << "local config does not contain NET section"; - }*/ - - //td::actor::send_closure(network_manager_, &ton::adnl::AdnlNetworkManager::load_local_config, std::move(lc.net_)); - //td::actor::send_closure(adnl_, &ton::adnl::Adnl::add_ids_from_config, std::move(lc.local_ids_)); - if (gc.adnl_) { - td::actor::send_closure(adnl_, &ton::adnl::Adnl::add_static_nodes_from_config, - std::move(gc.adnl_->static_nodes_)); - } - if (!gc.dht_) { - LOG(FATAL) << "global config does not contain dht section"; - } - auto dhtR = ton::dht::Dht::create_global_config(std::move(gc.dht_)); - if (dhtR.is_error()) { - LOG(FATAL) << "bad dht config: " << dhtR.move_as_error(); - } - auto dht = dhtR.move_as_ok(); - - for (auto &it : lc.dht_) { - std::vector adnl_ids; - ton::ton_api::downcast_call( - *it.get(), td::overloaded( - [&](ton::ton_api::dht_config_local &obj) { - adnl_ids.push_back(ton::adnl::AdnlNodeIdShort{obj.id_->id_}); - }, - [&](ton::ton_api::dht_config_random_local &obj) { - auto addrR = ton::adnl::AdnlAddressList::create(std::move(obj.addr_list_)); - addrR.ensure(); - auto addr = addrR.move_as_ok(); - for (td::int32 i = 0; i < obj.cnt_; i++) { - auto pk = ton::PrivateKey{ton::privkeys::Ed25519::random()}; - auto pub = pk.compute_public_key(); - td::actor::send_closure(keyring_, &ton::keyring::Keyring::add_key, std::move(pk), false); - td::actor::send_closure(adnl_, &ton::adnl::Adnl::add_id, ton::adnl::AdnlNodeIdFull{pub}, - addr); - auto adnl_id = ton::adnl::AdnlNodeIdShort{pub.compute_short_id()}; - adnl_ids.push_back(adnl_id); - } - })); - for (auto &id : adnl_ids) { - auto R = ton::dht::Dht::create(id, "/var/ton-work/db/", dht, keyring_.get(), adnl_.get()); - R.ensure(); - dht_nodes_.push_back(R.move_as_ok()); - } - } - - CHECK(dht_nodes_.size() > 0); - - td::actor::send_closure(adnl_, &ton::adnl::Adnl::register_dht_node, dht_nodes_[0].get()); - //td::actor::send_closure(overlay_manager_, &ton::overlay::Overlays::register_dht_node, dht_nodes_[0].get()); - - overlay_manager_ = - ton::overlay::Overlays::create("/var/ton-work/db.overlays", keyring_.get(), adnl_.get(), dht_nodes_[0].get()); - - //auto C = ton::CatChainActor::create(nullptr, adnl_.get(), overlay_manager_.get(), - // std::vector>()); - - for (auto &it : lc.catchains_) { - auto tag = it->tag_; - for (auto &V : gc.catchains_) { - if (V->tag_ == tag) { - auto v = std::move(clone_tl_object(V)->nodes_); - - std::vector w; - w.resize(v.size()); - for (size_t i = 0; i < w.size(); i++) { - w[i].pub_key = ton::PublicKey{v[i]}; - w[i].adnl_id = ton::adnl::AdnlNodeIdShort{w[i].pub_key.compute_short_id()}; - w[i].weight = 1; - } - - auto C = ton::validatorsession::ValidatorSession::create( - tag, ton::PublicKeyHash{it->id_->id_}, std::move(w), make_vs_callback(), keyring_.get(), adnl_.get(), - rldp_.get(), overlay_manager_.get(), "/var/ton-work/db/"); - td::actor::send_closure(C, &ton::validatorsession::ValidatorSession::start); - validator_sessions_.emplace_back(std::move(C)); - } - } - } - } -}; - -int main(int argc, char *argv[]) { - SET_VERBOSITY_LEVEL(verbosity_INFO); - td::set_default_failure_signal_handler().ensure(); - - td::actor::ActorOwn x; - - td::OptionParser p; - p.set_description("test basic adnl functionality"); - p.add_option('h', "help", "prints_help", [&]() { - char b[10240]; - td::StringBuilder sb(td::MutableSlice{b, 10000}); - sb << p; - std::cout << sb.as_cslice().c_str(); - std::exit(2); - return td::Status::OK(); - }); - p.add_option('C', "global-config", "file to read global config", [&](td::Slice fname) { - td::actor::send_closure(x, &TestNode::set_global_config, fname.str()); - return td::Status::OK(); - }); - p.add_option('c', "local-config", "file to read local config", [&](td::Slice fname) { - td::actor::send_closure(x, &TestNode::set_local_config, fname.str()); - return td::Status::OK(); - }); - p.add_option('d', "daemonize", "set SIGHUP", [&]() { - td::set_signal_handler(td::SignalType::HangUp, [](int sig) { -#if TD_DARWIN || TD_LINUX - close(0); - setsid(); -#endif - }).ensure(); - return td::Status::OK(); - }); -#if TD_DARWIN || TD_LINUX - p.add_option('l', "logname", "log to file", [&](td::Slice fname) { - auto FileLog = td::FileFd::open(td::CSlice(fname.str().c_str()), - td::FileFd::Flags::Create | td::FileFd::Flags::Append | td::FileFd::Flags::Write) - .move_as_ok(); - - dup2(FileLog.get_native_fd().fd(), 1); - dup2(FileLog.get_native_fd().fd(), 2); - return td::Status::OK(); - }); -#endif - - td::actor::Scheduler scheduler({7}); - - scheduler.run_in_context([&] { x = td::actor::create_actor("testnode"); }); - - scheduler.run_in_context([&] { p.run(argc, argv).ensure(); }); - scheduler.run_in_context([&] { td::actor::send_closure(x, &TestNode::run); }); - scheduler.run(); - - return 0; -} diff --git a/test/test-validator.cpp b/test/test-validator.cpp deleted file mode 100644 index 7bc018f74..000000000 --- a/test/test-validator.cpp +++ /dev/null @@ -1,356 +0,0 @@ -/* - This file is part of TON Blockchain source code. - - TON Blockchain 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 2 - of the License, or (at your option) any later version. - - TON Blockchain 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 TON Blockchain. If not, see . - - In addition, as a special exception, the copyright holders give permission - to link the code of portions of this program with the OpenSSL library. - You must obey the GNU General Public License in all respects for all - of the code used other than OpenSSL. If you modify file(s) with this - exception, you may extend this exception to your version of the file(s), - but you are not obligated to do so. If you do not wish to do so, delete this - exception statement from your version. If you delete this exception statement - from all source files in the program, then also delete it here. - - Copyright 2017-2020 Telegram Systems LLP -*/ -#include "adnl/adnl.h" -#include "rldp/rldp.h" -#include "adnl/utils.hpp" -#include "auto/tl/ton_api_json.h" -#include "auto/tl/ton_api.hpp" -#include "dht/dht.h" -#include "overlay/overlays.h" -#include "td/utils/OptionParser.h" -#include "td/utils/Time.h" -#include "td/utils/TsFileLog.h" -#include "td/utils/filesystem.h" -#include "td/utils/format.h" -#include "td/utils/Random.h" -#include "td/utils/port/signals.h" -#include "td/utils/port/FileFd.h" -#include "catchain/catchain.h" -#include "validator-session/validator-session.h" -#include "ton-node/ton-node.h" -#include "validator/manager.h" -#include "td/utils/filesystem.h" -#include "td/utils/ThreadSafeCounter.h" -#include "td/utils/port/path.h" -#include "crypto/vm/cp0.h" -#include "td/utils/overloaded.h" - -#include "memprof/memprof.h" - -#if TD_DARWIN || TD_LINUX -#include -#endif -#include -#include -#include - -class TestNode : public td::actor::Actor { - private: - td::actor::ActorOwn keyring_; - td::actor::ActorOwn adnl_; - td::actor::ActorOwn rldp_; - std::vector> dht_nodes_; - td::actor::ActorOwn overlay_manager_; - td::actor::ActorOwn validator_manager_; - td::actor::ActorOwn ton_node_; - - std::string local_config_ = "ton-local.config"; - std::string global_config_ = "ton-global.config"; - - std::string db_root_ = "/var/ton-work/db/"; - std::string zero_state_ = ""; - - public: - void set_local_config(std::string str) { - local_config_ = str; - } - void set_global_config(std::string str) { - global_config_ = str; - } - void set_db_root(std::string db_root) { - db_root_ = db_root; - } - void set_zero_state(std::string zero_state) { - zero_state_ = zero_state; - } - void start_up() override { - } - void alarm() override { - } - TestNode() { - } - void run() { - td::mkdir(db_root_).ensure(); - - keyring_ = ton::keyring::Keyring::create(db_root_ + "/keyring"); - adnl_ = ton::adnl::Adnl::create(db_root_, keyring_.get()); - rldp_ = ton::rldp::Rldp::create(adnl_.get()); - - auto L = td::read_file(local_config_).move_as_ok(); - auto lc_j = td::json_decode(L.as_slice()).move_as_ok(); - ton::ton_api::config_local lc; - ton::ton_api::from_json(lc, lc_j.get_object()).ensure(); - - auto G = td::read_file(global_config_).move_as_ok(); - auto gc_j = td::json_decode(G.as_slice()).move_as_ok(); - ton::ton_api::config_global gc; - ton::ton_api::from_json(gc, gc_j.get_object()).ensure(); - - for (auto &port : lc.udp_ports_) { - td::actor::send_closure(adnl_, &ton::adnl::Adnl::add_listening_udp_port, "0.0.0.0", - static_cast(port)); - } - /*if (!lc.net_) { - LOG(FATAL) << "local config does not contain NET section"; - }*/ - - //td::actor::send_closure(network_manager_, &ton::adnl::AdnlNetworkManager::load_local_config, std::move(lc.net_)); - //td::actor::send_closure(adnl_, &ton::adnl::Adnl::add_ids_from_config, std::move(lc.local_ids_)); - for (auto &local_id : lc.local_ids_) { - auto pk = ton::PrivateKey{local_id->id_}; - auto pub = pk.compute_public_key(); - auto addr_list = ton::adnl::AdnlAddressList::create(local_id->addr_list_); - addr_list.ensure(); - td::actor::send_closure(keyring_, &ton::keyring::Keyring::add_key, std::move(pk), false); - td::actor::send_closure(adnl_, &ton::adnl::Adnl::add_id, ton::adnl::AdnlNodeIdFull{pub}, addr_list.move_as_ok()); - } - if (gc.adnl_) { - td::actor::send_closure(adnl_, &ton::adnl::Adnl::add_static_nodes_from_config, - std::move(gc.adnl_->static_nodes_)); - } - if (!gc.dht_) { - LOG(FATAL) << "global config does not contain dht section"; - } - - auto dhtR = ton::dht::Dht::create_global_config(std::move(gc.dht_)); - if (dhtR.is_error()) { - LOG(FATAL) << "bad dht config: " << dhtR.move_as_error(); - } - auto dht = dhtR.move_as_ok(); - - for (auto &it : lc.dht_) { - std::vector adnl_ids; - ton::ton_api::downcast_call( - *it.get(), td::overloaded( - [&](ton::ton_api::dht_config_local &obj) { - adnl_ids.push_back(ton::adnl::AdnlNodeIdShort{obj.id_->id_}); - }, - [&](ton::ton_api::dht_config_random_local &obj) { - auto addrR = ton::adnl::AdnlAddressList::create(std::move(obj.addr_list_)); - addrR.ensure(); - auto addr = addrR.move_as_ok(); - for (td::int32 i = 0; i < obj.cnt_; i++) { - auto pk = ton::PrivateKey{ton::privkeys::Ed25519::random()}; - auto pub = pk.compute_public_key(); - td::actor::send_closure(keyring_, &ton::keyring::Keyring::add_key, std::move(pk), false); - td::actor::send_closure(adnl_, &ton::adnl::Adnl::add_id, ton::adnl::AdnlNodeIdFull{pub}, - addr); - auto adnl_id = ton::adnl::AdnlNodeIdShort{pub.compute_short_id()}; - adnl_ids.push_back(adnl_id); - } - })); - for (auto &id : adnl_ids) { - auto R = ton::dht::Dht::create(id, db_root_, dht, keyring_.get(), adnl_.get()); - R.ensure(); - dht_nodes_.push_back(R.move_as_ok()); - } - } - - CHECK(dht_nodes_.size() > 0); - - td::actor::send_closure(adnl_, &ton::adnl::Adnl::register_dht_node, dht_nodes_[0].get()); - overlay_manager_ = ton::overlay::Overlays::create(db_root_, keyring_.get(), adnl_.get(), dht_nodes_[0].get()); - - CHECK(lc.validators_.size() <= 1); - CHECK(gc.validators_.size() <= 1); - - bool is_validator = false; - if (lc.validators_.size() == 1) { - CHECK(gc.validators_.size() == 1); - auto zero_state_id = - ton::BlockIdExt{ton::masterchainId, ton::shardIdAll, 0, gc.validators_[0]->zero_state_root_hash_, - gc.validators_[0]->zero_state_file_hash_}; - ton::PublicKeyHash id; - ton::adnl::AdnlNodeIdShort adnl_id; - ton::ton_api::downcast_call(*lc.validators_[0].get(), - td::overloaded( - [&](ton::ton_api::validator_config_local &cfg) { - id = ton::PublicKeyHash{cfg.id_->id_}; - adnl_id = ton::adnl::AdnlNodeIdShort{id}; - is_validator = true; - }, - [&](ton::ton_api::validator_config_random_local &cfg) { - auto privkey = ton::PrivateKey{ton::privkeys::Ed25519::random()}; - auto pubkey = ton::adnl::AdnlNodeIdFull{privkey.compute_public_key()}; - auto addrR = ton::adnl::AdnlAddressList::create(std::move(cfg.addr_list_)); - addrR.ensure(); - auto addr = addrR.move_as_ok(); - id = privkey.compute_short_id(); - td::actor::send_closure(keyring_, &ton::keyring::Keyring::add_key, - std::move(privkey), false); - td::actor::send_closure(adnl_, &ton::adnl::Adnl::add_id, pubkey, addr); - adnl_id = ton::adnl::AdnlNodeIdShort{id}; - })); - - auto opts = ton::ValidatorManagerOptions::create( - zero_state_id, std::vector{ton::ShardIdFull{ton::basechainId, ton::shardIdAll}}); - CHECK(!opts.is_null()); - opts.write().set_allow_blockchain_init(is_validator); - validator_manager_ = - ton::ValidatorManagerFactory::create(is_validator ? id : ton::PublicKeyHash::zero(), opts, db_root_, - keyring_.get(), adnl_.get(), rldp_.get(), overlay_manager_.get()); - ton_node_ = - ton::TonNodeManager::create(adnl_id, gc.validators_[0]->zero_state_file_hash_, adnl_.get(), rldp_.get(), - dht_nodes_[0].get(), overlay_manager_.get(), validator_manager_.get(), db_root_); - - for (auto &x : lc.liteservers_) { - auto pk = ton::PrivateKey{x->id_}; - auto pub_k = ton::adnl::AdnlNodeIdFull{pk.compute_public_key()}; - auto id = pub_k.compute_short_id(); - - td::actor::send_closure(keyring_, &ton::keyring::Keyring::add_key, std::move(pk), false); - td::actor::send_closure(adnl_, &ton::adnl::Adnl::add_id, pub_k, ton::adnl::AdnlAddressList{}); - td::actor::send_closure(validator_manager_, &ton::ValidatorManager::add_ext_server_id, id); - td::actor::send_closure(validator_manager_, &ton::ValidatorManager::add_ext_server_port, - static_cast(x->port_)); - } - } - } -}; - -td::Result get_uint256(std::string str) { - if (str.size() != 64) { - return td::Status::Error("uint256 must have 64 bytes"); - } - td::UInt256 res; - for (size_t i = 0; i < 32; i++) { - res.raw[i] = static_cast(td::hex_to_int(str[2 * i]) * 16 + td::hex_to_int(str[2 * i + 1])); - } - return res; -} - -std::atomic need_stats_flag{false}; -void need_stats(int sig) { - need_stats_flag.store(true); -} -void dump_memory_stats() { - if (!is_memprof_on()) { - return; - } - LOG(WARNING) << "memory_dump"; - std::vector v; - dump_alloc([&](const AllocInfo &info) { v.push_back(info); }); - std::sort(v.begin(), v.end(), [](const AllocInfo &a, const AllocInfo &b) { return a.size > b.size; }); - size_t total_size = 0; - size_t other_size = 0; - int cnt = 0; - for (auto &info : v) { - if (cnt++ < 50) { - LOG(WARNING) << td::format::as_size(info.size) << td::format::as_array(info.backtrace); - } else { - other_size += info.size; - } - total_size += info.size; - } - LOG(WARNING) << td::tag("other", td::format::as_size(other_size)); - LOG(WARNING) << td::tag("total", td::format::as_size(total_size)); - LOG(WARNING) << td::tag("total traces", get_ht_size()); - LOG(WARNING) << td::tag("fast_backtrace_success_rate", get_fast_backtrace_success_rate()); -} -void dump_stats() { - dump_memory_stats(); - LOG(WARNING) << td::NamedThreadSafeCounter::get_default(); -} - -int main(int argc, char *argv[]) { - SET_VERBOSITY_LEVEL(verbosity_INFO); - - td::set_default_failure_signal_handler().ensure(); - - CHECK(vm::init_op_cp0()); - - td::actor::ActorOwn x; - td::unique_ptr logger_; - SCOPE_EXIT { - td::log_interface = td::default_log_interface; - }; - - td::OptionParser p; - p.set_description("test basic adnl functionality"); - p.add_option('v', "verbosity", "set verbosity level", [&](td::Slice arg) { - int v = VERBOSITY_NAME(FATAL) + (td::to_integer(arg)); - SET_VERBOSITY_LEVEL(v); - return td::Status::OK(); - }); - p.add_option('h', "help", "prints_help", [&]() { - char b[10240]; - td::StringBuilder sb(td::MutableSlice{b, 10000}); - sb << p; - std::cout << sb.as_cslice().c_str(); - std::exit(2); - return td::Status::OK(); - }); - p.add_option('C', "global-config", "file to read global config", [&](td::Slice fname) { - td::actor::send_closure(x, &TestNode::set_global_config, fname.str()); - return td::Status::OK(); - }); - p.add_option('c', "local-config", "file to read local config", [&](td::Slice fname) { - td::actor::send_closure(x, &TestNode::set_local_config, fname.str()); - return td::Status::OK(); - }); - p.add_option('i', "id", "id of instance", [&](td::Slice fname) { return td::Status::OK(); }); - p.add_option('D', "db", "root for dbs", [&](td::Slice fname) { - td::actor::send_closure(x, &TestNode::set_db_root, fname.str()); - return td::Status::OK(); - }); - p.add_option('z', "zero-state", "file with serialized zero state", [&](td::Slice fname) { - td::actor::send_closure(x, &TestNode::set_zero_state, fname.str()); - return td::Status::OK(); - }); - p.add_option('d', "daemonize", "set SIGHUP", [&]() { - td::set_signal_handler(td::SignalType::HangUp, [](int sig) { -#if TD_DARWIN || TD_LINUX - close(0); - setsid(); -#endif - }).ensure(); - return td::Status::OK(); - }); -#if TD_DARWIN || TD_LINUX - p.add_option('l', "logname", "log to file", [&](td::Slice fname) { - logger_ = td::TsFileLog::create(fname.str()).move_as_ok(); - td::log_interface = logger_.get(); - return td::Status::OK(); - }); -#endif - td::set_runtime_signal_handler(1, need_stats).ensure(); - - td::actor::Scheduler scheduler({7}); - - scheduler.run_in_context([&] { x = td::actor::create_actor("testnode"); }); - - scheduler.run_in_context([&] { p.run(argc, argv).ensure(); }); - scheduler.run_in_context([&] { td::actor::send_closure(x, &TestNode::run); }); - while (scheduler.run(1)) { - if (need_stats_flag.exchange(false)) { - dump_stats(); - } - } - - return 0; -} diff --git a/third-party/blst b/third-party/blst index e9dfc5ee7..3dd0f804b 160000 --- a/third-party/blst +++ b/third-party/blst @@ -1 +1 @@ -Subproject commit e9dfc5ee724b5b25d50a3b6226bee8c2c9d5e65d +Subproject commit 3dd0f804b1819e5d03fb22ca2e6fac105932043a diff --git a/third-party/rocksdb b/third-party/rocksdb index fcf3d75f3..cb7a5e02e 160000 --- a/third-party/rocksdb +++ b/third-party/rocksdb @@ -1 +1 @@ -Subproject commit fcf3d75f3f022a6a55ff1222d6b06f8518d38c7c +Subproject commit cb7a5e02edeb883193eb5b4901d5943f58e9add9 diff --git a/tl-utils/CMakeLists.txt b/tl-utils/CMakeLists.txt index b17b7dc98..d5c52d48a 100644 --- a/tl-utils/CMakeLists.txt +++ b/tl-utils/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.0.2 FATAL_ERROR) +cmake_minimum_required(VERSION 3.5 FATAL_ERROR) set(TL_UTILS_SOURCE common-utils.hpp diff --git a/tl/CMakeLists.txt b/tl/CMakeLists.txt index 8adabedae..d0760a349 100644 --- a/tl/CMakeLists.txt +++ b/tl/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.0.2 FATAL_ERROR) +cmake_minimum_required(VERSION 3.5 FATAL_ERROR) add_subdirectory(generate) set_source_files_properties(${TL_TON_API} PROPERTIES GENERATED TRUE) diff --git a/tl/generate/CMakeLists.txt b/tl/generate/CMakeLists.txt index 61d66c932..083d39737 100644 --- a/tl/generate/CMakeLists.txt +++ b/tl/generate/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.0.2 FATAL_ERROR) +cmake_minimum_required(VERSION 3.5 FATAL_ERROR) file(MAKE_DIRECTORY auto/tl) diff --git a/tl/tl/tl_json.h b/tl/tl/tl_json.h index 489bd6e81..8eee3aad5 100644 --- a/tl/tl/tl_json.h +++ b/tl/tl/tl_json.h @@ -108,12 +108,13 @@ inline Status from_json(std::int32_t &to, JsonValue from) { inline Status from_json(bool &to, JsonValue from) { if (from.type() != JsonValue::Type::Boolean) { int32 x; + auto type = from.type(); auto status = from_json(x, std::move(from)); if (status.is_ok()) { to = x != 0; return Status::OK(); } - return Status::Error(PSLICE() << "Expected bool, got " << from.type()); + return Status::Error(PSLICE() << "Expected bool, got " << type); } to = from.get_boolean(); return Status::OK(); diff --git a/tonlib/CMakeLists.txt b/tonlib/CMakeLists.txt index 72c59c4da..dc3e90300 100644 --- a/tonlib/CMakeLists.txt +++ b/tonlib/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.0.2 FATAL_ERROR) +cmake_minimum_required(VERSION 3.5 FATAL_ERROR) option(BUILD_SHARED_LIBS "Use \"OFF\" for a static build." ON) diff --git a/tonlib/test/offline.cpp b/tonlib/test/offline.cpp index a1e5a0f61..35a95f5b1 100644 --- a/tonlib/test/offline.cpp +++ b/tonlib/test/offline.cpp @@ -609,7 +609,30 @@ TEST(Tonlib, ConfigCache) { "seqno": 0, "root_hash": "gj+B8wb/AmlPk1z1AhVI484rhrUpgSr2oSFIh56VoSg=", "file_hash": "Z+IKwYS54DmmJmesw/nAD5DzWadnOCMzee+kdgSYDOg=" - } + }, + "hardforks": [ + { + "file_hash": "jF3RTD+OyOoP+OI9oIjdV6M8EaOh9E+8+c3m5JkPYdg=", + "seqno": 5141579, + "root_hash": "6JSqIYIkW7y8IorxfbQBoXiuY3kXjcoYgQOxTJpjXXA=", + "workchain": -1, + "shard": -9223372036854775808 + }, + { + "file_hash": "WrNoMrn5UIVPDV/ug/VPjYatvde8TPvz5v1VYHCLPh8=", + "seqno": 5172980, + "root_hash": "054VCNNtUEwYGoRe1zjH+9b1q21/MeM+3fOo76Vcjes=", + "workchain": -1, + "shard": -9223372036854775808 + }, + { + "file_hash": "xRaxgUwgTXYFb16YnR+Q+VVsczLl6jmYwvzhQ/ncrh4=", + "seqno": 5176527, + "root_hash": "SoPLqMe9Dz26YJPOGDOHApTSe5i0kXFtRmRh/zPMGuI=", + "workchain": -1, + "shard": -9223372036854775808 + } + ] } })abc"; auto custom = R"abc({ diff --git a/tonlib/tonlib/TonlibClient.cpp b/tonlib/tonlib/TonlibClient.cpp index 0eabe142d..9ec664bba 100644 --- a/tonlib/tonlib/TonlibClient.cpp +++ b/tonlib/tonlib/TonlibClient.cpp @@ -1971,7 +1971,7 @@ class RunEmulator : public TonlibQueryActor { ton::UnixTime now = account_state_->get_sync_time(); bool is_special = address.workchain == ton::masterchainId && config->is_special_smartcontract(address.addr); block::Account account(address.workchain, address.addr.bits()); - if (!account.unpack(std::move(shard_account), td::Ref(), now, is_special)) { + if (!account.unpack(std::move(shard_account), now, is_special)) { check(td::Status::Error("Can't unpack shard account")); return; } diff --git a/utils/CMakeLists.txt b/utils/CMakeLists.txt index 3d029c938..0149e06e1 100644 --- a/utils/CMakeLists.txt +++ b/utils/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.0.2 FATAL_ERROR) +cmake_minimum_required(VERSION 3.5 FATAL_ERROR) if (NOT OPENSSL_FOUND) find_package(OpenSSL REQUIRED) diff --git a/utils/opcode-timing.cpp b/utils/opcode-timing.cpp index f50d7041f..4f5c8ab41 100644 --- a/utils/opcode-timing.cpp +++ b/utils/opcode-timing.cpp @@ -64,7 +64,6 @@ typedef struct { vm::Stack prepare_stack(td::Slice command) { const auto cell = to_cell(command); - vm::init_op_cp0(); vm::DictionaryBase::get_empty_dictionary(); vm::Stack stack; try { @@ -80,7 +79,6 @@ vm::Stack prepare_stack(td::Slice command) { runInfo time_run_vm(td::Slice command, td::Ref stack) { const auto cell = to_cell(command); - vm::init_op_cp0(); vm::DictionaryBase::get_empty_dictionary(); CHECK(stack.is_unique()); try { @@ -171,6 +169,7 @@ int main(int argc, char** argv) { setup = argv[1]; code = argv[2]; } + vm::init_vm().ensure(); const auto time = timeInstruction(setup, code); std::cout << std::fixed << std::setprecision(9) << code << "," << time.runtime.mean << "," << time.runtime.stddev << "," << time.gasUsage.mean << "," << time.gasUsage.stddev << "," << (int)time.errored << std::endl; diff --git a/validator-engine-console/CMakeLists.txt b/validator-engine-console/CMakeLists.txt index 487169603..634a5b8b4 100644 --- a/validator-engine-console/CMakeLists.txt +++ b/validator-engine-console/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.0.2 FATAL_ERROR) +cmake_minimum_required(VERSION 3.5 FATAL_ERROR) add_executable (validator-engine-console validator-engine-console.cpp validator-engine-console.h validator-engine-console-query.cpp diff --git a/validator-engine/CMakeLists.txt b/validator-engine/CMakeLists.txt index d369a2c35..5df720fe6 100644 --- a/validator-engine/CMakeLists.txt +++ b/validator-engine/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.0.2 FATAL_ERROR) +cmake_minimum_required(VERSION 3.5 FATAL_ERROR) if (NOT OPENSSL_FOUND) find_package(OpenSSL REQUIRED) diff --git a/validator-engine/validator-engine.cpp b/validator-engine/validator-engine.cpp index aaa4f8496..23cc93473 100644 --- a/validator-engine/validator-engine.cpp +++ b/validator-engine/validator-engine.cpp @@ -38,7 +38,7 @@ #include "common/errorlog.h" -#include "crypto/vm/cp0.h" +#include "crypto/vm/vm.h" #include "crypto/fift/utils.h" #include "td/utils/filesystem.h" @@ -3774,7 +3774,7 @@ int main(int argc, char *argv[]) { td::actor::Scheduler scheduler({threads}); scheduler.run_in_context([&] { - CHECK(vm::init_op_cp0()); + vm::init_vm().ensure(); x = td::actor::create_actor("validator-engine"); for (auto &act : acts) { act(); diff --git a/validator-session/CMakeLists.txt b/validator-session/CMakeLists.txt index 4931e464d..c769f4d86 100644 --- a/validator-session/CMakeLists.txt +++ b/validator-session/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.0.2 FATAL_ERROR) +cmake_minimum_required(VERSION 3.5 FATAL_ERROR) if (NOT OPENSSL_FOUND) find_package(OpenSSL REQUIRED) diff --git a/validator/CMakeLists.txt b/validator/CMakeLists.txt index 573cd8e5a..068569de8 100644 --- a/validator/CMakeLists.txt +++ b/validator/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.0.2 FATAL_ERROR) +cmake_minimum_required(VERSION 3.5 FATAL_ERROR) if (NOT OPENSSL_FOUND) find_package(OpenSSL REQUIRED) diff --git a/validator/impl/CMakeLists.txt b/validator/impl/CMakeLists.txt index 459e77244..f4b967a8e 100644 --- a/validator/impl/CMakeLists.txt +++ b/validator/impl/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.0.2 FATAL_ERROR) +cmake_minimum_required(VERSION 3.5 FATAL_ERROR) if (NOT OPENSSL_FOUND) find_package(OpenSSL REQUIRED) diff --git a/validator/impl/collator-impl.h b/validator/impl/collator-impl.h index abbe904c6..c2088f47b 100644 --- a/validator/impl/collator-impl.h +++ b/validator/impl/collator-impl.h @@ -202,7 +202,7 @@ class Collator final : public td::actor::Actor { // block::Account* lookup_account(td::ConstBitPtr addr) const; std::unique_ptr make_account_from(td::ConstBitPtr addr, Ref account, - Ref extra, bool force_create = false); + bool force_create); td::Result make_account(td::ConstBitPtr addr, bool force_create = false); td::actor::ActorId get_self() { return actor_id(this); @@ -269,10 +269,6 @@ class Collator final : public td::actor::Actor { void after_get_external_messages(td::Result>> res); td::Result register_external_message_cell(Ref ext_msg, const ExtMessage::Hash& ext_hash); // td::Result register_external_message(td::Slice ext_msg_boc); - td::Result register_ihr_message_cell(Ref ihr_msg); - td::Result register_ihr_message(td::Slice ihr_msg_boc); - td::Result register_shard_signatures_cell(Ref shard_blk_signatures); - td::Result register_shard_signatures(td::Slice shard_blk_signatures_boc); void register_new_msg(block::NewOutMsg msg); void register_new_msgs(block::transaction::Transaction& trans); bool process_new_messages(bool enqueue_only = false); @@ -285,7 +281,7 @@ class Collator final : public td::actor::Actor { bool enqueue_message(block::NewOutMsg msg, td::RefInt256 fwd_fees_remaining, ton::LogicalTime enqueued_lt); bool enqueue_transit_message(Ref msg, Ref old_msg_env, ton::AccountIdPrefixFull prev_prefix, ton::AccountIdPrefixFull cur_prefix, ton::AccountIdPrefixFull dest_prefix, - td::RefInt256 fwd_fee_remaining, ton::LogicalTime enqueued_lt); + td::RefInt256 fwd_fee_remaining); bool delete_out_msg_queue_msg(td::ConstBitPtr key); bool insert_in_msg(Ref in_msg); bool insert_out_msg(Ref out_msg); diff --git a/validator/impl/collator.cpp b/validator/impl/collator.cpp index 54941f217..d133278f3 100644 --- a/validator/impl/collator.cpp +++ b/validator/impl/collator.cpp @@ -54,6 +54,20 @@ static inline bool dbg(int c) { return true; } +/** + * Constructs a Collator object. + * + * @param shard The shard of the new block. + * @param is_hardfork A boolean indicating whether the new block is a hardfork. + * @param min_ts The minimum UnixTime for the new block. + * @param min_masterchain_block_id The the minimum reference masterchain block. + * @param prev A vector of BlockIdExt representing the previous blocks. + * @param validator_set A reference to the ValidatorSet. + * @param collator_id The public key of the block creator. + * @param manager The ActorId of the ValidatorManager. + * @param timeout The timeout for the collator. + * @param promise The promise to return the result. + */ Collator::Collator(ShardIdFull shard, bool is_hardfork, UnixTime min_ts, BlockIdExt min_masterchain_block_id, std::vector prev, td::Ref validator_set, Ed25519_PublicKey collator_id, td::actor::ActorId manager, td::Timestamp timeout, @@ -77,6 +91,14 @@ Collator::Collator(ShardIdFull shard, bool is_hardfork, UnixTime min_ts, BlockId }) { } +/** + * Starts the Collator. + * + * This function initializes the Collator by performing various checks and queries to the ValidatorManager. + * It checks the validity of the shard, the previous blocks, and the workchain. + * If all checks pass, it proceeds to query the ValidatorManager for the top masterchain state block, shard states, block data, external messages, and shard blocks. + * The results of these queries are handled by corresponding callback functions. + */ void Collator::start_up() { LOG(DEBUG) << "Collator for shard " << shard_.to_str() << " started"; LOG(DEBUG) << "Previous block #1 is " << prev_blocks.at(0).to_str(); @@ -250,10 +272,21 @@ void Collator::start_up() { CHECK(pending); } +/** + * Raises an error when timeout is reached. + */ void Collator::alarm() { fatal_error(ErrorCode::timeout, "timeout"); } +/** + * Generates a string representation of a shard. + * + * @param workchain The workchain ID of the shard. + * @param shard The shard ID. + * + * @returns A string representation of the shard. + */ std::string show_shard(ton::WorkchainId workchain, ton::ShardId shard) { char tmp[128]; char* ptr = tmp + snprintf(tmp, 31, "%d:", workchain); @@ -268,14 +301,35 @@ std::string show_shard(ton::WorkchainId workchain, ton::ShardId shard) { return {tmp, ptr}; } +/** + * Returns a string representation of the shard of the given block. + * + * @param blk_id The BlockId object. + * + * @returns A string representation of the shard. + */ std::string show_shard(const ton::BlockId blk_id) { return show_shard(blk_id.workchain, blk_id.shard); } +/** + * Converts a `ShardIdFull` object to a string representation. + * + * @param blk_id The `ShardIdFull` object to convert. + * + * @returns The string representation of the `ShardIdFull` object. + */ std::string show_shard(const ton::ShardIdFull blk_id) { return show_shard(blk_id.workchain, blk_id.shard); } +/** + * Handles a fatal error encountered during block candidate generation. + * + * @param error The error encountered. + * + * @returns False to indicate that a fatal error occurred. + */ bool Collator::fatal_error(td::Status error) { error.ensure_error(); LOG(ERROR) << "cannot generate block candidate for " << show_shard(shard_) << " : " << error.to_string(); @@ -287,14 +341,39 @@ bool Collator::fatal_error(td::Status error) { return false; } +/** + * Handles a fatal error encountered during block candidate generation. + * + * @param err_code The error code. + * @param err_msg The error message. + * + * @returns False to indicate that a fatal error occurred. + */ bool Collator::fatal_error(int err_code, std::string err_msg) { return fatal_error(td::Status::Error(err_code, err_msg)); } +/** + * Handles a fatal error encountered during block candidate generation. + * + * @param err_msg The error message. + * @param err_code The error code. + * + * @returns False to indicate that a fatal error occurred. + */ bool Collator::fatal_error(std::string err_msg, int err_code) { return fatal_error(td::Status::Error(err_code, err_msg)); } +/** + * Checks if there are any pending tasks. + * + * If there are no pending tasks, it continues collation. + * If collation fails, it raises a fatal error. + * If an exception is caught during collation, it raises a fatal error with the corresponding error message. + * + * @returns None + */ void Collator::check_pending() { // LOG(DEBUG) << "pending = " << pending; if (!pending) { @@ -309,6 +388,13 @@ void Collator::check_pending() { } } +/** + * Registers a masterchain state. + * + * @param other_mc_state The masterchain state to register. + * + * @returns True if the registration is successful, false otherwise. + */ bool Collator::register_mc_state(Ref other_mc_state) { if (other_mc_state.is_null() || mc_state_.is_null()) { return false; @@ -334,6 +420,14 @@ bool Collator::register_mc_state(Ref other_mc_state) { return true; } +/** + * Requests the auxiliary masterchain state. + * + * @param seqno The seqno of the block. + * @param state A reference to the auxiliary masterchain state. + * + * @returns True if the auxiliary masterchain state is successfully requested, false otherwise. + */ bool Collator::request_aux_mc_state(BlockSeqno seqno, Ref& state) { if (mc_state_.is_null()) { return fatal_error(PSTRING() << "cannot find masterchain block with seqno " << seqno @@ -366,6 +460,13 @@ bool Collator::request_aux_mc_state(BlockSeqno seqno, Ref& st return true; } +/** + * Retrieves the auxiliary masterchain state for a given block sequence number. + * + * @param seqno The sequence number of the block. + * + * @returns A reference to the auxiliary masterchain state if found, otherwise an empty reference. + */ Ref Collator::get_aux_mc_state(BlockSeqno seqno) const { auto it = aux_mc_states_.find(seqno); if (it != aux_mc_states_.end()) { @@ -375,6 +476,13 @@ Ref Collator::get_aux_mc_state(BlockSeqno seqno) const { } } +/** + * Callback function called after retrieving the auxiliary shard state. + * Handles the retrieved shard state and performs necessary checks and registrations. + * + * @param blkid The BlockIdExt of the shard state. + * @param res The result of retrieving the shard state. + */ void Collator::after_get_aux_shard_state(ton::BlockIdExt blkid, td::Result> res) { LOG(DEBUG) << "in Collator::after_get_aux_shard_state(" << blkid.to_str() << ")"; --pending; @@ -400,6 +508,14 @@ void Collator::after_get_aux_shard_state(ton::BlockIdExt blkid, td::Result, BlockIdExt>> res) { LOG(DEBUG) << "in Collator::after_get_mc_state()"; --pending; @@ -455,6 +576,12 @@ void Collator::after_get_mc_state(td::Result, Bl check_pending(); } +/** + * Callback function called after retrieving the shard state for a previous block. + * + * @param idx The index of the previous shard block (0 or 1). + * @param res The retrieved shard state. + */ void Collator::after_get_shard_state(int idx, td::Result> res) { LOG(DEBUG) << "in Collator::after_get_shard_state(" << idx << ")"; --pending; @@ -482,6 +609,12 @@ void Collator::after_get_shard_state(int idx, td::Result> res) { check_pending(); } +/** + * Callback function called after retrieving block data for a previous block. + * + * @param idx The index of the previous block (0 or 1). + * @param res The retreived block data. + */ void Collator::after_get_block_data(int idx, td::Result> res) { LOG(DEBUG) << "in Collator::after_get_block_data(" << idx << ")"; --pending; @@ -513,6 +646,11 @@ void Collator::after_get_block_data(int idx, td::Result> res) { check_pending(); } +/** + * Callback function called after retrieving shard block descriptions for masterchain. + * + * @param res The retrieved shard block descriptions. + */ void Collator::after_get_shard_blocks(td::Result>> res) { --pending; if (res.is_error()) { @@ -525,6 +663,11 @@ void Collator::after_get_shard_blocks(td::Resultget_neighbor_shard_hash_ids(shard_); @@ -634,6 +787,12 @@ bool Collator::request_neighbor_msg_queues() { return true; } +/** + * Handles the result of obtaining the outbound queue for a neighbor. + * + * @param i The index of the neighbor. + * @param res The obtained outbound queue. + */ void Collator::got_neighbor_out_queue(int i, td::Result> res) { LOG(DEBUG) << "obtained outbound queue for neighbor #" << i; --pending; @@ -692,6 +851,12 @@ void Collator::got_neighbor_out_queue(int i, td::Result> res) check_pending(); } +/** + * Unpacks and merges the states of two previous blocks. + * Used if the block is after_merge. + * + * @returns True if the unpacking and merging was successful, false otherwise. + */ bool Collator::unpack_merge_last_state() { LOG(DEBUG) << "unpack/merge last states"; // 0. mechanically merge two ShardStateUnsplit into split_state constructor @@ -730,6 +895,12 @@ bool Collator::unpack_merge_last_state() { return import_shard_state_data(ss0); } +/** + * Unpacks the state of the previous block. + * Used if the block is not after_merge. + * + * @returns True if the unpacking is successful, false otherwise. + */ bool Collator::unpack_last_state() { if (after_merge_) { if (!unpack_merge_last_state()) { @@ -749,6 +920,15 @@ bool Collator::unpack_last_state() { import_shard_state_data(ss); } +/** + * Unpacks the state of a previous block and performs necessary checks. + * + * @param ss The ShardState object to unpack the state into. + * @param blkid The BlockIdExt of the previous block. + * @param prev_state_root The root of the state. + * + * @returns True if the unpacking and checks are successful, false otherwise. + */ bool Collator::unpack_one_last_state(block::ShardState& ss, BlockIdExt blkid, Ref prev_state_root) { auto res = ss.unpack_state_ext(blkid, std::move(prev_state_root), global_id_, prev_mc_block_seqno, after_split_, after_split_ | after_merge_, [self = this](ton::BlockSeqno mc_seqno) { @@ -767,6 +947,14 @@ bool Collator::unpack_one_last_state(block::ShardState& ss, BlockIdExt blkid, Re return true; } +/** + * Splits the state of previous block. + * Used if the block is after_split. + * + * @param ss The ShardState object representing the previous state. The result is stored here. + * + * @returns True if the split operation is successful, false otherwise. + */ bool Collator::split_last_state(block::ShardState& ss) { LOG(INFO) << "Splitting previous state " << ss.id_.to_str() << " to subshard " << shard_.to_str(); CHECK(after_split_); @@ -788,11 +976,19 @@ bool Collator::split_last_state(block::ShardState& ss) { return true; } -// SETS: account_dict, shard_libraries_, mc_state_extra -// total_balance_ = old_total_balance_, total_validator_fees_ -// SETS: overload_history_, underload_history_ -// SETS: prev_state_utime_, prev_state_lt_, prev_vert_seqno_ -// SETS: out_msg_queue, processed_upto_, ihr_pending +/** + * Imports the shard state data into the Collator object. + * + * SETS: account_dict, shard_libraries_, mc_state_extra + * total_balance_ = old_total_balance_, total_validator_fees_ + * SETS: overload_history_, underload_history_ + * SETS: prev_state_utime_, prev_state_lt_, prev_vert_seqno_ + * SETS: out_msg_queue, processed_upto_, ihr_pending + * + * @param ss The ShardState object containing the shard state data. + * + * @returns True if the import was successful, False otherwise. + */ bool Collator::import_shard_state_data(block::ShardState& ss) { account_dict = std::move(ss.account_dict_); shard_libraries_ = std::move(ss.shard_libraries_); @@ -813,6 +1009,12 @@ bool Collator::import_shard_state_data(block::ShardState& ss) { return true; } +/** + * Adds trivials neighbor after merging two shards. + * Trivial neighbors are the two previous blocks. + * + * @returns True if the operation is successful, false otherwise. + */ bool Collator::add_trivial_neighbor_after_merge() { LOG(DEBUG) << "in add_trivial_neighbor_after_merge()"; CHECK(prev_blocks.size() == 2); @@ -847,6 +1049,12 @@ bool Collator::add_trivial_neighbor_after_merge() { return true; } +/** + * Adds a trivial neighbor. + * A trivial neighbor is the previous block. + * + * @returns True if the operation is successful, false otherwise. + */ bool Collator::add_trivial_neighbor() { LOG(DEBUG) << "in add_trivial_neighbor()"; if (after_merge_) { @@ -982,6 +1190,15 @@ bool Collator::add_trivial_neighbor() { return true; } +/** + * Checks the previous block against the block registered in the masterchain. + * + * @param listed The BlockIdExt of the top block of this shard registered in the masterchain. + * @param prev The BlockIdExt of the previous block. + * @param chk_chain_len Flag indicating whether to check the chain length. + * + * @returns True if the previous block is valid, false otherwise. + */ bool Collator::check_prev_block(const BlockIdExt& listed, const BlockIdExt& prev, bool chk_chain_len) { if (listed.seqno() > prev.seqno()) { return fatal_error(PSTRING() << "cannot generate a shardchain block after previous block " << prev.to_str() @@ -1001,6 +1218,14 @@ bool Collator::check_prev_block(const BlockIdExt& listed, const BlockIdExt& prev return true; } +/** + * Checks the previous block against the block registered in the masterchain. + * + * @param listed The BlockIdExt of the top block of this shard registered in the masterchain. + * @param prev The BlockIdExt of the previous block. + * + * @returns True if the previous block is equal to the one registered in the masterchain, false otherwise. + */ bool Collator::check_prev_block_exact(const BlockIdExt& listed, const BlockIdExt& prev) { if (listed != prev) { return fatal_error(PSTRING() << "cannot generate shardchain block for shard " << shard_.to_str() @@ -1011,6 +1236,11 @@ bool Collator::check_prev_block_exact(const BlockIdExt& listed, const BlockIdExt return true; } +/** + * Checks the validity of the shard configuration of the current shard. + * + * @returns True if the shard configuration is valid, false otherwise. + */ bool Collator::check_this_shard_mc_info() { wc_info_ = config_->get_workchain_info(workchain()); if (wc_info_.is_null()) { @@ -1145,6 +1375,11 @@ bool Collator::check_this_shard_mc_info() { return true; } +/** + * Initializes the block limits for the collator. + * + * @returns True if the block limits were successfully initialized, false otherwise. + */ bool Collator::init_block_limits() { CHECK(block_limits_); CHECK(state_usage_tree_); @@ -1153,6 +1388,11 @@ bool Collator::init_block_limits() { return true; } +/** + * Performs pre-initialization steps for the Collator. + * + * @returns True if pre-initialization is successful, false otherwise. + */ bool Collator::do_preinit() { CHECK(prev_blocks.size() == 1U + after_merge_); last_block_seqno = prev_blocks[0].seqno(); @@ -1209,6 +1449,12 @@ bool Collator::do_preinit() { return true; } +/** + * Adjusts the shard configuration by adding new workchains to the shard configuration in the masterchain state. + * Used in masterchain collator. + * + * @returns True if the shard configuration was successfully adjusted, false otherwise. + */ bool Collator::adjust_shard_config() { CHECK(is_masterchain() && config_ && shard_conf_); const block::WorkchainSet& wset = config_->get_workchain_list(); @@ -1237,12 +1483,30 @@ bool Collator::adjust_shard_config() { return true; } +/** + * Compares two ShardTopBlockDescription references based on their block IDs. + * + * @param a The first ShardTopBlockDescription reference. + * @param b The second ShardTopBlockDescription reference. + * + * @returns True if a is considered less than b, false otherwise. + */ static bool cmp_shard_block_descr_ref(const Ref& a, const Ref& b) { BlockId x = a->block_id().id, y = b->block_id().id; return x.workchain < y.workchain || (x.workchain == y.workchain && (x.shard < y.shard || (x.shard == y.shard && x.seqno > y.seqno))); } +/** + * Stores the fees imported from a shard blocks to `fees_import_dict_`. + * Used in masterchain collator. + * + * @param shard The shard identifier. + * @param fees The fees imported from the block. + * @param created The fee for creating shard blocks. + * + * @returns True if the fees were successfully stored, false otherwise. + */ bool Collator::store_shard_fees(ShardIdFull shard, const block::CurrencyCollection& fees, const block::CurrencyCollection& created) { if (shard.is_valid() && fees.is_valid()) { @@ -1258,6 +1522,14 @@ bool Collator::store_shard_fees(ShardIdFull shard, const block::CurrencyCollecti } } +/** + * Stores the fees imported from a shard blocks to `fees_import_dict_`. + * Used in masterchain collator. + * + * @param descr A reference to the McShardHash object containing the shard information. + * + * @returns True if the shard fees and funds created were successfully stored, false otherwise. + */ bool Collator::store_shard_fees(Ref descr) { CHECK(descr.not_null()); CHECK(descr->fees_collected_.is_valid()); @@ -1266,6 +1538,11 @@ bool Collator::store_shard_fees(Ref descr) { return true; } +/** + * Imports new top shard blocks and updates the shard configuration. + * + * @returns True if the import was successful, false otherwise. + */ bool Collator::import_new_shard_top_blocks() { if (shard_block_descr_.empty()) { return true; @@ -1404,6 +1681,13 @@ bool Collator::import_new_shard_top_blocks() { return true; } +/** + * Registers the shard block creators to block_create_count_ + * + * @param creator_list A vector of Bits256 representing the shard block creators. + * + * @returns True if the registration was successful, False otherwise. + */ bool Collator::register_shard_block_creators(std::vector creator_list) { for (const auto& x : creator_list) { LOG(DEBUG) << "registering block creator " << x.to_hex(); @@ -1418,6 +1702,11 @@ bool Collator::register_shard_block_creators(std::vector creator_li return true; } +/** + * Performs pre-initialization and collates the new block. + * + * @returns True if collation is successful, false otherwise. + */ bool Collator::try_collate() { if (!preinit_complete) { LOG(DEBUG) << "running do_preinit()"; @@ -1477,6 +1766,14 @@ bool Collator::try_collate() { return do_collate(); } +/** + * Adjusts one entry from the processed up to information using the masterchain state that is referenced in the entry. + * + * @param proc The MsgProcessedUpto object. + * @param owner The shard that the MsgProcessesUpto information is taken from. + * + * @returns True if the processed up to information was successfully adjusted, false otherwise. + */ bool Collator::fix_one_processed_upto(block::MsgProcessedUpto& proc, const ton::ShardIdFull& owner) { if (proc.compute_shard_end_lt) { return true; @@ -1493,6 +1790,13 @@ bool Collator::fix_one_processed_upto(block::MsgProcessedUpto& proc, const ton:: return (bool)proc.compute_shard_end_lt; } +/** + * Adjusts the processed up to collection using the using the auxilliary masterchain states. + * + * @param upto The MsgProcessedUptoCollection to be adjusted. + * + * @returns True if all entries were successfully adjusted, False otherwise. + */ bool Collator::fix_processed_upto(block::MsgProcessedUptoCollection& upto) { for (auto& entry : upto.list) { if (!fix_one_processed_upto(entry, upto.owner)) { @@ -1502,6 +1806,14 @@ bool Collator::fix_processed_upto(block::MsgProcessedUptoCollection& upto) { return true; } +/** + * Initializes the unix time for the new block. + * + * Unix time is set based on the current time, and the timestamps of the previous blocks. + * If the previous block has a timestamp too far in the past then skipping importing external messages and new shard blocks is allowed. + * + * @returns True if the initialization is successful, false otherwise. + */ bool Collator::init_utime() { CHECK(config_); // consider unixtime and lt from previous block(s) of the same shardchain @@ -1547,6 +1859,9 @@ bool Collator::init_utime() { return true; } +/** + * Initializes the logical time of the new block. + */ bool Collator::init_lt() { CHECK(config_); start_lt = config_->lt; @@ -1569,6 +1884,11 @@ bool Collator::init_lt() { return true; } +/** + * Fetches and initializes the configuration parameters using the masterchain configuration. + * + * @returns True if the configuration parameters were successfully fetched and initialized, false otherwise. + */ bool Collator::fetch_config_params() { auto res = block::FetchConfigParams::fetch_config_params(*config_, &old_mparams_, &storage_prices_, &storage_phase_cfg_, @@ -1583,6 +1903,13 @@ bool Collator::fetch_config_params() { return true; } +/** + * Computes the amount of extra currencies to be minted. + * + * @param to_mint A reference to the CurrencyCollection object to store the minted amount. + * + * @returns True if the computation is successful, false otherwise. + */ bool Collator::compute_minted_amount(block::CurrencyCollection& to_mint) { if (!is_masterchain()) { return to_mint.set_zero(); @@ -1633,6 +1960,11 @@ bool Collator::compute_minted_amount(block::CurrencyCollection& to_mint) { return true; } +/** + * Initializes value_flow_ and computes fees for creating the new block. + * + * @returns True if the initialization is successful, false otherwise. + */ bool Collator::init_value_create() { value_flow_.created.set_zero(); value_flow_.minted.set_zero(); @@ -1663,6 +1995,9 @@ bool Collator::init_value_create() { return true; } +/** + * Performs the collation of the new block. + */ bool Collator::do_collate() { // After do_collate started it will not be interrupted by timeout alarm_timestamp() = td::Timestamp::never(); @@ -1786,6 +2121,14 @@ bool Collator::do_collate() { return true; } +/** + * Dequeues an outbound message from the message queue of this shard. + * + * @param msg_envelope The message envelope to dequeue. + * @param delivered_lt The logical time at which the message was delivered. + * + * @returns True if the message was successfully dequeued, false otherwise. + */ bool Collator::dequeue_message(Ref msg_envelope, ton::LogicalTime delivered_lt) { LOG(DEBUG) << "dequeueing outbound message"; vm::CellBuilder cb; @@ -1805,6 +2148,13 @@ bool Collator::dequeue_message(Ref msg_envelope, ton::LogicalTime deli } } +/** + * Cleans up the outbound message queue by removing messages that have already been imported by neighbors. + * + * Cleanup may be interrupted early if it takes too long. + * + * @returns True if the cleanup operation was successful, false otherwise. + */ bool Collator::out_msg_queue_cleanup() { LOG(INFO) << "cleaning outbound queue from messages already imported by neighbors"; if (verbosity >= 2) { @@ -1884,8 +2234,17 @@ bool Collator::out_msg_queue_cleanup() { return register_out_msg_queue_op(true); } +/** + * Creates a new Account object from the given address and serialized account data. + * + * @param addr A pointer to the 256-bit address of the account. + * @param account A cell slice with an account serialized using ShardAccount TLB-scheme. + * @param force_create A flag indicating whether to force the creation of a new account if `account` is null. + * + * @returns A unique pointer to the created Account object, or nullptr if the creation failed. + */ std::unique_ptr Collator::make_account_from(td::ConstBitPtr addr, Ref account, - Ref extra, bool force_create) { + bool force_create) { if (account.is_null() && !force_create) { return nullptr; } @@ -1894,19 +2253,35 @@ std::unique_ptr Collator::make_account_from(td::ConstBitPtr addr if (!ptr->init_new(now_)) { return nullptr; } - } else if (!ptr->unpack(std::move(account), std::move(extra), now_, - is_masterchain() && config_->is_special_smartcontract(addr))) { + } else if (!ptr->unpack(std::move(account), now_, is_masterchain() && config_->is_special_smartcontract(addr))) { return nullptr; } ptr->block_lt = start_lt; return ptr; } +/** + * Looks up an account in the Collator's account map. + * + * @param addr A pointer to the 256-bit address of the account to be looked up. + * + * @returns A pointer to the Account object if found, otherwise returns nullptr. + */ block::Account* Collator::lookup_account(td::ConstBitPtr addr) const { auto found = accounts.find(addr); return found != accounts.end() ? found->second.get() : nullptr; } +/** + * Retreives an Account object from the data in the shard state. + * Accounts are cached in the Collator's map. + * + * @param addr The 256-bit address of the account. + * @param force_create Flag indicating whether to create a new account if it does not exist. + * + * @returns A Result object containing a pointer to the account if found or created successfully, or an error status. + * Returns nullptr if account does not exist and not force_create. + */ td::Result Collator::make_account(td::ConstBitPtr addr, bool force_create) { auto found = lookup_account(addr); if (found) { @@ -1918,7 +2293,7 @@ td::Result Collator::make_account(td::ConstBitPtr addr, bool fo return nullptr; } } - auto new_acc = make_account_from(addr, std::move(dict_entry.first), std::move(dict_entry.second), force_create); + auto new_acc = make_account_from(addr, std::move(dict_entry.first), force_create); if (!new_acc) { return td::Status::Error(PSTRING() << "cannot load account " << addr.to_hex(256) << " from previous state"); } @@ -1934,6 +2309,11 @@ td::Result Collator::make_account(td::ConstBitPtr addr, bool fo return ins.first->second.get(); } +/** + * Combines account transactions and updates the ShardAccountBlocks and ShardAccounts. + * + * @returns True if the operation is successful, false otherwise. + */ bool Collator::combine_account_transactions() { vm::AugmentedDictionary dict{256, block::tlb::aug_ShardAccountBlocks}; for (auto& z : accounts) { @@ -2046,6 +2426,15 @@ bool Collator::combine_account_transactions() { return true; } +/** + * Creates a special transaction to recover a specified amount of currency to a destination address. + * + * @param amount The amount of currency to recover. + * @param dest_addr_cell The cell containing the destination address. + * @param in_msg The reference to the input message. + * + * @returns True if the special transaction was created successfully, false otherwise. + */ bool Collator::create_special_transaction(block::CurrencyCollection amount, Ref dest_addr_cell, Ref& in_msg) { if (amount.is_zero()) { @@ -2086,12 +2475,27 @@ bool Collator::create_special_transaction(block::CurrencyCollection amount, Ref< return true; } +/** + * Creates special transactions for retreiving fees and minted currencies. + * Used in masterchain collator. + * + * @returns True if both special transactions were + */ bool Collator::create_special_transactions() { CHECK(is_masterchain()); return create_special_transaction(value_flow_.recovered, config_->get_config_param(3, 1), recover_create_msg_) && create_special_transaction(value_flow_.minted, config_->get_config_param(2, 0), mint_msg_); } +/** + * Creates a tick-tock transaction for a given smart contract. + * + * @param smc_addr The address of the smart contract. + * @param req_start_lt The requested start logical time for the transaction. + * @param mask The value indicating wheter the thansaction is tick (mask == 2) or tock (mask == 1). + * + * @returns True if the transaction was created successfully, false otherwise. + */ bool Collator::create_ticktock_transaction(const ton::StdSmcAddress& smc_addr, ton::LogicalTime req_start_lt, int mask) { auto acc_res = make_account(smc_addr.cbits(), false); @@ -2145,6 +2549,13 @@ bool Collator::create_ticktock_transaction(const ton::StdSmcAddress& smc_addr, t return true; } +/** + * Creates an ordinary transaction using a given message. + * + * @param msg_root The root of the message to be processed serialized using Message TLB-scheme. + * + * @returns The root of the serialized transaction, or an empty reference if the transaction creation fails. + */ Ref Collator::create_ordinary_transaction(Ref msg_root) { ton::StdSmcAddress addr; auto cs = vm::load_cell_slice(msg_root); @@ -2219,8 +2630,23 @@ Ref Collator::create_ordinary_transaction(Ref msg_root) { return trans_root; } -// If td::status::error_code == 669 - Fatal Error block can not be produced -// if td::status::error_code == 701 - Transaction can not be included into block, but it's ok (external or too early internal) +/** + * Creates an ordinary transaction using given parameters. + * + * @param msg_root The root of the message to be processed serialized using Message TLB-scheme. + * @param acc The account for which the transaction is being created. + * @param utime The Unix time of the transaction. + * @param lt The minimal logical time of the transaction. + * @param storage_phase_cfg The configuration for the storage phase of the transaction. + * @param compute_phase_cfg The configuration for the compute phase of the transaction. + * @param action_phase_cfg The configuration for the action phase of the transaction. + * @param external Flag indicating if the message is external. + * @param after_lt The logical time after which the transaction should occur. Used only for external messages. + * + * @returns A Result object containing the created transaction. + * Returns error_code == 669 if the error is fatal and the block can not be produced. + * Returns error_code == 701 if the transaction can not be included into block, but it's ok (external or too early internal). + */ td::Result> Collator::impl_create_ordinary_transaction(Ref msg_root, block::Account* acc, UnixTime utime, LogicalTime lt, @@ -2301,6 +2727,11 @@ td::Result> Collator::impl_crea return std::move(trans); } +/** + * Updates the maximum logical time if the given logical time is greater than the current maximum logical time. + * + * @param lt The logical time to be compared. + */ void Collator::update_max_lt(ton::LogicalTime lt) { CHECK(lt >= start_lt); if (lt > max_lt) { @@ -2308,6 +2739,13 @@ void Collator::update_max_lt(ton::LogicalTime lt) { } } +/** + * Updates information on the last processed internal message with a new logical time and hash. + * + * @param new_lt_hash The new logical time and hash pair. + * + * @returns True if the last processed internal message was successfully updated, false otherwise. + */ bool Collator::update_last_proc_int_msg(const std::pair& new_lt_hash) { if (last_proc_int_msg_ < new_lt_hash) { last_proc_int_msg_ = new_lt_hash; @@ -2322,6 +2760,14 @@ bool Collator::update_last_proc_int_msg(const std::pair addr_ref) const { return is_our_address(block::tlb::t_MsgAddressInt.get_prefix(std::move(addr_ref))); } +/** + * Checks if the given account ID prefix belongs to the current shard. + * + * @param addr_pfx The account ID prefix to check. + * + * @returns True if the account ID prefix belongs to the current shard, False otherwise. + */ bool Collator::is_our_address(ton::AccountIdPrefixFull addr_pfx) const { return ton::shard_contains(shard_, addr_pfx); } +/** + * Checks if the given address belongs to the current shard. + * + * @param addr The address to check. + * + * @returns True if the address belongs to the current shard, False otherwise. + */ bool Collator::is_our_address(const ton::StdSmcAddress& addr) const { return ton::shard_contains(get_shard(), addr); } -// 1 = processed, 0 = enqueued, 3 = processed, all future messages must be enqueued +/** + * Processes a message generated in this block. + * + * @param msg The new message to be processed. + * @param enqueue_only Flag indicating whether the message should only be enqueued. + * @param is_special New message if creating a special transaction, nullptr otherwise. + * + * @returns Returns: + * 0 - message was enqueued. + * 1 - message was processed. + * 3 - message was processed, all future messages must be enqueued. + * -1 - error occured. + */ int Collator::process_one_new_message(block::NewOutMsg msg, bool enqueue_only, Ref* is_special) { Ref src, dest; bool enqueue, external; @@ -2460,11 +2939,22 @@ int Collator::process_one_new_message(block::NewOutMsg msg, bool enqueue_only, R return 1; } -// very similar to enqueue_message(), but for transit messages +/** + * Enqueues a transit message. + * Very similar to enqueue_message(), but for transit messages. + * + * @param msg The message to be enqueued. + * @param old_msg_env The previous message envelope. + * @param prev_prefix The account ID prefix for this shard. + * @param cur_prefix The account ID prefix for the next hop. + * @param dest_prefix The prefix of the destination account ID. + * @param fwd_fee_remaining The remaining forward fee. + * + * @returns True if the transit message is successfully enqueued, false otherwise. + */ bool Collator::enqueue_transit_message(Ref msg, Ref old_msg_env, ton::AccountIdPrefixFull prev_prefix, ton::AccountIdPrefixFull cur_prefix, - ton::AccountIdPrefixFull dest_prefix, td::RefInt256 fwd_fee_remaining, - ton::LogicalTime enqueued_lt) { + ton::AccountIdPrefixFull dest_prefix, td::RefInt256 fwd_fee_remaining) { LOG(DEBUG) << "enqueueing transit message " << msg->get_hash().bits().to_hex(256); bool requeue = is_our_address(prev_prefix); // 1. perform hypercube routing @@ -2535,6 +3025,13 @@ bool Collator::enqueue_transit_message(Ref msg, Ref old_msg_ return register_out_msg_queue_op(); } +/** + * Deletes a message from the outbound message queue. + * + * @param key The key of the message to be deleted. + * + * @returns True if the message was successfully deleted, false otherwise. + */ bool Collator::delete_out_msg_queue_msg(td::ConstBitPtr key) { Ref queue_rec; try { @@ -2550,6 +3047,17 @@ bool Collator::delete_out_msg_queue_msg(td::ConstBitPtr key) { return register_out_msg_queue_op(); } +/** + * Processes an inbound message from a neighbor's outbound queue. + * The message may create a transaction or be enqueued. + * + * @param enq_msg The inbound message serialized using EnqueuedMsg TLB-scheme. + * @param lt The logical time of the message. + * @param key The 32+64+256-bit key of the message. + * @param src_nb The description of the source neighbor shard. + * + * @returns True if the message was processed successfully, false otherwise. + */ bool Collator::process_inbound_message(Ref enq_msg, ton::LogicalTime lt, td::ConstBitPtr key, const block::McShardDescr& src_nb) { ton::LogicalTime enqueued_lt = 0; @@ -2676,7 +3184,7 @@ bool Collator::process_inbound_message(Ref enq_msg, ton::LogicalT // destination is outside our shard, relay transit message // (very similar to enqueue_message()) if (!enqueue_transit_message(std::move(env.msg), std::move(msg_env), cur_prefix, next_prefix, dest_prefix, - std::move(env.fwd_fee_remaining), max_lt)) { + std::move(env.fwd_fee_remaining))) { return fatal_error("cannot enqueue transit internal message with key "s + key.to_hex(352)); } return !our || delete_out_msg_queue_msg(key); @@ -2718,6 +3226,12 @@ bool Collator::process_inbound_message(Ref enq_msg, ton::LogicalT return true; } +/** + * Processes inbound internal messages from message queues of the neighbors. + * Messages are processed until the normal limit is reached, soft timeout is reached or there are no more messages. + * + * @returns True if the processing was successful, false otherwise. + */ bool Collator::process_inbound_internal_messages() { while (!block_full_ && !nb_out_msgs_->is_eof()) { block_full_ = !block_limit_status_->fits(block::ParamLimits::cl_normal); @@ -2752,6 +3266,12 @@ bool Collator::process_inbound_internal_messages() { return true; } +/** + * Processes inbound external messages. + * Messages are processed until the soft limit is reached, medium timeout is reached or there are no more messages. + * + * @returns True if the processing was successful, false otherwise. + */ bool Collator::process_inbound_external_messages() { if (skip_extmsg_) { LOG(INFO) << "skipping processing of inbound external messages"; @@ -2790,7 +3310,17 @@ bool Collator::process_inbound_external_messages() { return true; } -// 1 = processed, 0 = skipped, 3 = processed, all future messages must be skipped (block overflown) +/** + * Processes an external message. + * + * @param msg The message to be processed serialized as Message TLB-scheme. + * + * @returns The result of processing the message: + * -1 if a fatal error occurred. + * 0 if the message is rejected. + * 1 if the message was processed. + * 3 if the message was processed and all future messages must be skipped (block overflown). + */ int Collator::process_external_message(Ref msg) { auto cs = load_cell_slice(msg); td::RefInt256 fwd_fees; @@ -2827,7 +3357,13 @@ int Collator::process_external_message(Ref msg) { return 1; } -// inserts an InMsg into InMsgDescr +/** + * Inserts an InMsg into the block's InMsgDescr. + * + * @param in_msg The input message to be inserted. + * + * @returns True if the insertion is successful, false otherwise. + */ bool Collator::insert_in_msg(Ref in_msg) { if (verbosity > 2) { std::cerr << "InMsg being inserted into InMsgDescr: "; @@ -2862,7 +3398,13 @@ bool Collator::insert_in_msg(Ref in_msg) { ((in_descr_cnt_ & 63) || block_limit_status_->add_cell(in_msg_dict->get_root_cell())); } -// inserts an OutMsg into OutMsgDescr +/** + * Inserts an OutMsg into the block's OutMsgDescr. + * + * @param out_msg The outgoing message to be inserted. + * + * @returns True if the insertion was successful, false otherwise. + */ bool Collator::insert_out_msg(Ref out_msg) { if (verbosity > 2) { std::cerr << "OutMsg being inserted into OutMsgDescr: "; @@ -2885,6 +3427,14 @@ bool Collator::insert_out_msg(Ref out_msg) { return insert_out_msg(std::move(out_msg), msg->get_hash().bits()); } +/** + * Inserts an outgoing message into the block's OutMsgDescr dictionary. + * + * @param out_msg The outgoing message to be inserted. + * @param msg_hash The 256-bit hash of the outgoing message. + * + * @returns True if the insertion was successful, false otherwise. + */ bool Collator::insert_out_msg(Ref out_msg, td::ConstBitPtr msg_hash) { bool ok; try { @@ -2901,7 +3451,15 @@ bool Collator::insert_out_msg(Ref out_msg, td::ConstBitPtr msg_hash) { ((out_descr_cnt_ & 63) || block_limit_status_->add_cell(out_msg_dict->get_root_cell())); } -// enqueues a new Message into OutMsgDescr and OutMsgQueue +/** + * Enqueues a new message into the block's outbound message queue and OutMsgDescr. + * + * @param msg The new outbound message to enqueue. + * @param fwd_fees_remaining The remaining forward fees for the message. + * @param enqueued_lt The logical time at which the message is enqueued. + * + * @returns True if the message was successfully enqueued, false otherwise. + */ bool Collator::enqueue_message(block::NewOutMsg msg, td::RefInt256 fwd_fees_remaining, ton::LogicalTime enqueued_lt) { // 0. unpack src_addr and dest_addr block::gen::CommonMsgInfo::Record_int_msg_info info; @@ -2966,6 +3524,13 @@ bool Collator::enqueue_message(block::NewOutMsg msg, td::RefInt256 fwd_fees_rema return register_out_msg_queue_op(); } +/** + * Processes new messages that were generated in this block. + * + * @param enqueue_only If true, only enqueue the new messages without creating transactions. + * + * @returns True if all new messages were processed successfully, false otherwise. + */ bool Collator::process_new_messages(bool enqueue_only) { while (!new_msgs.empty()) { block::NewOutMsg msg = new_msgs.top(); @@ -2987,6 +3552,11 @@ bool Collator::process_new_messages(bool enqueue_only) { return true; } +/** + * Registers a new output message. + * + * @param new_msg The new output message to be registered. + */ void Collator::register_new_msg(block::NewOutMsg new_msg) { if (new_msg.lt < min_new_msg_lt) { min_new_msg_lt = new_msg.lt; @@ -2995,6 +3565,11 @@ void Collator::register_new_msg(block::NewOutMsg new_msg) { block_limit_status_->extra_out_msgs++; } +/** + * Registers new messages that were created in the transaction. + * + * @param trans The transaction containing the messages. + */ void Collator::register_new_msgs(block::transaction::Transaction& trans) { CHECK(trans.root.not_null()); for (unsigned i = 0; i < trans.out_msgs.size(); i++) { @@ -3008,6 +3583,15 @@ void Collator::register_new_msgs(block::transaction::Transaction& trans) { * */ +/** + * Stores an external block reference to a CellBuilder object. + * + * @param cb The CellBuilder object to store the reference in. + * @param id_ext The block ID. + * @param end_lt The end logical time of the block. + * + * @returns True if the reference was successfully stored, false otherwise. + */ bool store_ext_blk_ref_to(vm::CellBuilder& cb, const ton::BlockIdExt& id_ext, ton::LogicalTime end_lt) { return cb.store_long_bool(end_lt, 64) // end_lt:uint64 && cb.store_long_bool(id_ext.seqno(), 32) // seq_no:uint32 @@ -3015,6 +3599,15 @@ bool store_ext_blk_ref_to(vm::CellBuilder& cb, const ton::BlockIdExt& id_ext, to && cb.store_bits_bool(id_ext.file_hash); // file_hash:bits256 } +/** + * Stores an external block reference to a CellBuilder. + * + * @param cb The CellBuilder to store the reference in. + * @param id_ext The block ID. + * @param blk_root The root of the block. + * + * @returns True if the reference was successfully stored, false otherwise. + */ bool store_ext_blk_ref_to(vm::CellBuilder& cb, const ton::BlockIdExt& id_ext, Ref blk_root) { block::gen::Block::Record rec; block::gen::BlockInfo::Record info; @@ -3029,6 +3622,19 @@ bool store_ext_blk_ref_to(vm::CellBuilder& cb, const ton::BlockIdExt& id_ext, Re && store_ext_blk_ref_to(cb, id_ext, info.end_lt); // store } +/** + * Updates one shard description in the masterchain shard configuration. + * Used in masterchain collator. + * + * @param info The shard information to be updated. + * @param sibling The sibling shard information. + * @param wc_info The workchain information. + * @param now The current Unix time. + * @param ccvc The Catchain validators configuration. + * @param update_cc Flag indicating whether to update the Catchain seqno. + * + * @returns A boolean value indicating whether the shard description has changed. + */ static int update_one_shard(block::McShardHash& info, const block::McShardHash* sibling, const block::WorkchainInfo* wc_info, ton::UnixTime now, const block::CatchainValidatorsConfig& ccvc, bool update_cc) { @@ -3081,6 +3687,16 @@ static int update_one_shard(block::McShardHash& info, const block::McShardHash* return changed; } +/** + * Updates the shard configuration in the masterchain. + * Used in masterchain collator. + * + * @param wc_set The set of workchains. + * @param ccvc The Catchain validators configuration. + * @param update_cc A boolean indicating whether to update the Catchain seqno. + * + * @returns True if the shard configuration was successfully updated, false otherwise. + */ bool Collator::update_shard_config(const block::WorkchainSet& wc_set, const block::CatchainValidatorsConfig& ccvc, bool update_cc) { LOG(DEBUG) << "updating shard configuration (update_cc=" << update_cc << ")"; @@ -3107,6 +3723,12 @@ bool Collator::update_shard_config(const block::WorkchainSet& wc_set, const bloc }); } +/** + * Creates McStateExtra. + * Used in masterchain collator. + * + * @returns True if the creation is successful, false otherwise. + */ bool Collator::create_mc_state_extra() { if (!is_masterchain()) { CHECK(mc_state_extra_.is_null()); @@ -3325,6 +3947,16 @@ bool Collator::create_mc_state_extra() { return true; } +/** + * Updates the `block_creator_stats_` for a given key. + * Used in masterchain collator. + * + * @param key The 256-bit key of the creator. + * @param shard_incr The increment value for the shardchain block counter. + * @param mc_incr The increment value for the masterchain block counter. + * + * @returns True if the block creator count was successfully updated, false otherwise. + */ bool Collator::update_block_creator_count(td::ConstBitPtr key, unsigned shard_incr, unsigned mc_incr) { LOG(DEBUG) << "increasing CreatorStats for " << key.to_hex(256) << " by (" << mc_incr << ", " << shard_incr << ")"; block::DiscountedCounter mc_cnt, shard_cnt; @@ -3351,6 +3983,17 @@ bool Collator::update_block_creator_count(td::ConstBitPtr key, unsigned shard_in return true; } +/** + * Determines if the creator count is outdated for a given key. + * Used in masterchain collator. + * + * @param key The key of the creator. + * @param cs The CellSlice containing the CreatorStats. + * + * @returns -1 if there was a fatal error. + * 0 if the CreatorStats should be removed as they are stale, + * 1 if the CreatorStats are still valid. + */ int Collator::creator_count_outdated(td::ConstBitPtr key, vm::CellSlice& cs) { block::DiscountedCounter mc_cnt, shard_cnt; if (!(block::fetch_CreatorStats(cs, mc_cnt, shard_cnt) && cs.empty_ext())) { @@ -3369,6 +4012,11 @@ int Collator::creator_count_outdated(td::ConstBitPtr key, vm::CellSlice& cs) { } } +/** + * Updates `block_create_stats_` using information about creators of all new blocks. + * + * @returns True if the update was successful, false otherwise. + */ bool Collator::update_block_creator_stats() { if (!create_stats_enabled_) { return true; @@ -3419,10 +4067,25 @@ bool Collator::update_block_creator_stats() { return cnt >= 0; } +/** + * Retrieves the global masterchain config from the config contract. + * + * @param cfg_addr The address of the configuration smart contract. + * + * @returns A Result object containing a reference to the configuration data. + */ td::Result> Collator::get_config_data_from_smc(const ton::StdSmcAddress& cfg_addr) { return block::get_config_data_from_smc(account_dict->lookup_ref(cfg_addr)); } +/** + * Fetches and validates a new configuration from the configuration smart contract. + * + * @param cfg_addr The address of the configuration smart contract. + * @param new_config A reference to a vm::Cell object to store the new configuration. + * + * @returns True if the new configuration was successfully fetched, false otherwise. + */ bool Collator::try_fetch_new_config(const ton::StdSmcAddress& cfg_addr, Ref& new_config) { auto cfg_res = get_config_data_from_smc(cfg_addr); if (cfg_res.is_error()) { @@ -3440,11 +4103,24 @@ bool Collator::try_fetch_new_config(const ton::StdSmcAddress& cfg_addr, Reflookup(key, 256); @@ -3527,6 +4213,17 @@ bool Collator::remove_public_library(td::ConstBitPtr key, td::ConstBitPtr addr) return true; } +/** + * Processes adding a library to the collection of public libraries of an account. + * Updates the global collection of public libraries. + * Used in masterchain collator. + * + * @param key The key of the public library. + * @param addr The address of the account where the library is added. + * @param library The root cell of the library. + * + * @returns True if the public library was successfully added, false otherwise. + */ bool Collator::add_public_library(td::ConstBitPtr key, td::ConstBitPtr addr, Ref library) { LOG(INFO) << "Adding public library " << key.to_hex(256) << " of account " << addr.to_hex(256); CHECK(library.not_null() && !library->get_hash().bits().compare(key, 256)); @@ -3565,6 +4262,17 @@ bool Collator::add_public_library(td::ConstBitPtr key, td::ConstBitPtr addr, Ref return true; } +/** + * Processes changes in libraries of an account. + * Updates the global collection of public libraries. + * Used in masterchain collator. + * + * @param orig_libs The original libraries of the account. + * @param final_libs The final libraries of the account. + * @param addr The address associated with the account. + * + * @returns True if the update was successful, false otherwise. + */ bool Collator::update_account_public_libraries(Ref orig_libs, Ref final_libs, const td::Bits256& addr) { vm::Dictionary dict1{std::move(orig_libs), 256}, dict2{std::move(final_libs), 256}; @@ -3582,6 +4290,13 @@ bool Collator::update_account_public_libraries(Ref orig_libs, Ref msg_q_info; vm::CellBuilder cb, cb2; @@ -3676,11 +4411,20 @@ bool Collator::create_shard_state() { return true; } -// stores BlkMasterInfo (for non-masterchain blocks) +/** + * Stores BlkMasterInfo (for non-masterchain blocks) in the provided CellBuilder. + * + * @param cb The CellBuilder to store the reference in. + * + * @returns True if the reference is successfully stored, false otherwise. + */ bool Collator::store_master_ref(vm::CellBuilder& cb) { return mc_block_root.not_null() && store_ext_blk_ref_to(cb, mc_block_id_, mc_block_root); } +/** + * Updates the processed_upto information for the new block based on the information on the last processed inbound message. + */ bool Collator::update_processed_upto() { auto ref_mc_seqno = is_masterchain() ? new_block_seqno : prev_mc_block_seqno; update_min_mc_seqno(ref_mc_seqno); @@ -3695,6 +4439,13 @@ bool Collator::update_processed_upto() { return processed_upto_->compactify(); } +/** + * Computes the outbound message queue. + * + * @param out_msg_queue_info A reference to a vm::Cell object to store the computed queue. + * + * @returns True if the computation is successful, False otherwise. + */ bool Collator::compute_out_msg_queue_info(Ref& out_msg_queue_info) { if (verbosity >= 2) { auto rt = out_msg_queue_->get_root(); @@ -3709,6 +4460,11 @@ bool Collator::compute_out_msg_queue_info(Ref& out_msg_queue_info) { && cb.finalize_to(out_msg_queue_info); } +/** + * Computes the total balance of the shard state. + * + * @returns True if the total balance computation is successful, false otherwise. + */ bool Collator::compute_total_balance() { // 1. compute total_balance_ from the augmentation value of ShardAccounts auto accounts_extra = account_dict->get_root_extra(); @@ -3759,6 +4515,13 @@ bool Collator::compute_total_balance() { return true; } +/** + * Creates BlockInfo of the new block. + * + * @param block_info A reference to the cell to put the serialized info to. + * + * @returns True if the block info cell was successfully created, false otherwise. + */ bool Collator::create_block_info(Ref& block_info) { vm::CellBuilder cb, cb2; bool mc = is_masterchain(); @@ -3796,10 +4559,24 @@ bool Collator::create_block_info(Ref& block_info) { && cb.finalize_to(block_info); } +/** + * Stores the version information in a CellBuilder. + * + * @param cb The CellBuilder object to store the version information. + * + * @returns True if the version information was successfully stored, false otherwise. + */ bool Collator::store_version(vm::CellBuilder& cb) const { return block::gen::t_GlobalVersion.pack_capabilities(cb, supported_version(), supported_capabilities()); } +/** + * Stores the zero state reference in the given CellBuilder. + * + * @param cb The CellBuilder to store the zero state reference in. + * + * @returns True if the zero state reference is successfully stored, false otherwise. + */ bool Collator::store_zero_state_ref(vm::CellBuilder& cb) { CHECK(prev_state_root_.not_null()); RootHash root_hash = prev_state_root_->get_hash().bits(); @@ -3812,6 +4589,14 @@ bool Collator::store_zero_state_ref(vm::CellBuilder& cb) { && cb.store_bits_bool(prev_blocks[0].file_hash); // file_hash:bits256 } +/** + * Stores the previous block references to the given CellBuilder. + * + * @param cb The CellBuilder object to store the references. + * @param is_after_merge A boolean indicating whether the new block after a merge. + * + * @returns True if the references are successfully stored, false otherwise. + */ bool Collator::store_prev_blk_ref(vm::CellBuilder& cb, bool is_after_merge) { if (is_after_merge) { auto root2 = prev_block_data.at(1)->root_cell(); @@ -3829,6 +4614,11 @@ bool Collator::store_prev_blk_ref(vm::CellBuilder& cb, bool is_after_merge) { } } +/** + * Validates the value flow of the block. + * + * @returns True if the value flow is correct, false otherwise. + */ bool Collator::check_value_flow() { if (!value_flow_.validate()) { LOG(ERROR) << "incorrect value flow in new block : " << value_flow_.to_str(); @@ -3838,6 +4628,13 @@ bool Collator::check_value_flow() { return true; } +/** + * Creates the BlockExtra of the new block. + * + * @param block_extra A reference to the cell to put the serialized info to. + * + * @returns True if the block extra data was successfully created, false otherwise. + */ bool Collator::create_block_extra(Ref& block_extra) { bool mc = is_masterchain(); Ref mc_block_extra; @@ -3853,6 +4650,14 @@ bool Collator::create_block_extra(Ref& block_extra) { && cb.finalize_to(block_extra); // = BlockExtra; } +/** + * Creates the McBlockExtra of the new masterchain block. + * Used in masterchain collator. + * + * @param mc_block_extra A reference to the cell to put the serialized info to. + * + * @returns True if the extra data was successfully created, false otherwise. + */ bool Collator::create_mc_block_extra(Ref& mc_block_extra) { if (!is_masterchain()) { return false; @@ -3870,6 +4675,18 @@ bool Collator::create_mc_block_extra(Ref& mc_block_extra) { && cb.finalize_to(mc_block_extra); // = McBlockExtra } +/** + * Serialized the new block. + * + * This function performs the following steps: + * 1. Creates a BlockInfo for the new block. + * 2. Checks the value flow for the new block. + * 3. Creates a BlockExtra for the new block. + * 4. Builds a new block using the created BlockInfo, value flow, state update, and BlockExtra. + * 5. Verifies the new block if the verification is enabled. + * + * @returns True if the new block is successfully created, false otherwise. + */ bool Collator::create_block() { Ref block_info, extra; if (!create_block_info(block_info)) { @@ -3908,6 +4725,15 @@ bool Collator::create_block() { return true; } +/** + * Collates the shard block description set. + * Used in masterchain collator. + * + * This function creates a dictionary and populates it with the shard block descriptions. + * + * @returns A `Ref` containing the serialized `TopBlockDescrSet` record. + * If serialization fails, an empty `Ref` is returned. + */ Ref Collator::collate_shard_block_descr_set() { vm::Dictionary dict{96}; for (const auto& descr : used_shard_block_descr_) { @@ -3932,6 +4758,11 @@ Ref Collator::collate_shard_block_descr_set() { return cell; } +/** + * Creates collated data for the block. + * + * @returns True if the collated data was successfully created, false otherwise. + */ bool Collator::create_collated_data() { // TODO: store something into collated_roots_ // 1. store the set of used shard block descriptions @@ -3947,6 +4778,18 @@ bool Collator::create_collated_data() { return true; } +/** + * Creates a block candidate for the Collator. + * + * This function serializes the new block and collated data, and creates a BlockCandidate object + * with the necessary information. It then checks if the size of the block candidate exceeds the + * limits specified in the consensus configuration. + * + * Finally, the block candidate is saved to the disk. + * If there are any bad external messages or delayed external messages, the ValidatorManager is called to handle them. + * + * @returns True if the block candidate was created successfully, false otherwise. + */ bool Collator::create_block_candidate() { // 1. serialize block LOG(INFO) << "serializing new Block"; @@ -4021,6 +4864,11 @@ bool Collator::create_block_candidate() { return true; } +/** + * Returns a block candidate to the Promise. + * + * @param saved The result of saving the block candidate to the disk. + */ void Collator::return_block_candidate(td::Result saved) { // 6. return data to the original "caller" if (saved.is_error()) { @@ -4042,6 +4890,18 @@ void Collator::return_block_candidate(td::Result saved) { * */ +/** + * Registers an external message to the list of external messages in the Collator. + * + * @param ext_msg The reference to the external message cell. + * @param ext_hash The hash of the external message. + * + * @returns Result indicating the success or failure of the registration. + * - If the external message is invalid, returns an error. + * - If the external message has been previously rejected, returns an error + * - If the external message has been previuosly registered and accepted, returns false. + * - Otherwise returns true. + */ td::Result Collator::register_external_message_cell(Ref ext_msg, const ExtMessage::Hash& ext_hash) { if (ext_msg->get_level() != 0) { return td::Status::Error("external message must have zero level"); @@ -4090,23 +4950,11 @@ td::Result Collator::register_external_message_cell(Ref ext_msg, return true; } -/* -td::Result Collator::register_external_message(td::Slice ext_msg_boc) { - if (ext_msg_boc.size() > max_ext_msg_size) { - return td::Status::Error("external message too large, rejecting"); - } - vm::BagOfCells boc; - auto res = boc.deserialize(ext_msg_boc); - if (res.is_error()) { - return res.move_as_error(); - } - if (boc.get_root_count() != 1) { - return td::Status::Error("external message is not a valid bag of cells"); // not a valid bag-of-Cells - } - return register_external_message_cell(boc.get_root_cell(0)); -} -*/ - +/** + * Callback function called after retrieving external messages. + * + * @param res The result of the external message retrieval operation. + */ void Collator::after_get_external_messages(td::Result>> res) { --pending; if (res.is_error()) { @@ -4130,44 +4978,6 @@ void Collator::after_get_external_messages(td::Result Collator::register_ihr_message_cell(Ref ihr_msg) { - return false; -} - -td::Result Collator::register_ihr_message(td::Slice ihr_msg_boc) { - if (ihr_msg_boc.size() > max_ihr_msg_size) { - return td::Status::Error("IHR message too large, rejecting"); - } - vm::BagOfCells boc; - auto res = boc.deserialize(ihr_msg_boc); - if (res.is_error()) { - return res.move_as_error(); - } - if (boc.get_root_count() != 1) { - return td::Status::Error("IHR message is not a valid bag of cells"); // not a valid bag-of-Cells - } - return register_ihr_message_cell(boc.get_root_cell(0)); -} - -td::Result Collator::register_shard_signatures_cell(Ref signatures) { - return false; -} - -td::Result Collator::register_shard_signatures(td::Slice signatures_boc) { - if (signatures_boc.size() > max_blk_sign_size) { - return td::Status::Error("Shardchain signatures block too large, rejecting"); - } - vm::BagOfCells boc; - auto res = boc.deserialize(signatures_boc); - if (res.is_error()) { - return res.move_as_error(); - } - if (boc.get_root_count() != 1) { - return td::Status::Error("Shardchain signatures block is not a valid bag of cells"); // not a valid bag-of-Cells - } - return register_shard_signatures_cell(boc.get_root_cell(0)); -} - } // namespace validator } // namespace ton diff --git a/validator/impl/external-message.cpp b/validator/impl/external-message.cpp index 9383e7342..5c1848aab 100644 --- a/validator/impl/external-message.cpp +++ b/validator/impl/external-message.cpp @@ -114,7 +114,7 @@ void ExtMessageQ::run_message(td::BufferSlice data, block::SizeLimitsConfig::Ext auto utime = std::get<1>(tuple); auto lt = std::get<2>(tuple); auto config = std::move(std::get<3>(tuple)); - if (!acc.unpack(shard_acc, {}, utime, false)) { + if (!acc.unpack(shard_acc, utime, false)) { promise.set_error(td::Status::Error(PSLICE() << "Failed to unpack account state")); } else { auto status = run_message_on_account(wc, &acc, utime, lt + 1, msg_root, std::move(config)); diff --git a/validator/impl/validate-query.cpp b/validator/impl/validate-query.cpp index 4e4100f51..b134e1b34 100644 --- a/validator/impl/validate-query.cpp +++ b/validator/impl/validate-query.cpp @@ -39,6 +39,11 @@ namespace validator { using td::Ref; using namespace std::literals::string_literals; +/** + * Converts the error context to a string representation to show it in case of validation error. + * + * @returns The error context as a string. + */ std::string ErrorCtx::as_string() const { std::string a; for (const auto& s : entries_) { @@ -48,6 +53,20 @@ std::string ErrorCtx::as_string() const { return a; } +/** + * Constructs a ValidateQuery object. + * + * @param shard The shard of the block being validated. + * @param min_ts The minimum allowed UnixTime for the block. + * @param min_masterchain_block_id The minimum allowed masterchain block reference for the block. + * @param prev A vector of BlockIdExt representing the previous blocks. + * @param candidate The BlockCandidate to be validated. + * @param validator_set A reference to the ValidatorSet. + * @param manager The ActorId of the ValidatorManager. + * @param timeout The timeout for the validation. + * @param promise The Promise to return the ValidateCandidateResult to. + * @param is_fake A boolean indicating if the validation is fake (performed when creating a hardfork). + */ ValidateQuery::ValidateQuery(ShardIdFull shard, UnixTime min_ts, BlockIdExt min_masterchain_block_id, std::vector prev, BlockCandidate candidate, Ref validator_set, td::actor::ActorId manager, td::Timestamp timeout, @@ -71,14 +90,30 @@ ValidateQuery::ValidateQuery(ShardIdFull shard, UnixTime min_ts, BlockIdExt min_ proc_hash_.zero(); } +/** + * Raises an error when timeout is reached. + */ void ValidateQuery::alarm() { abort_query(td::Status::Error(ErrorCode::timeout, "timeout")); } +/** + * Aborts the validation with the given error. + * + * @param error The error encountered. + */ void ValidateQuery::abort_query(td::Status error) { (void)fatal_error(std::move(error)); } +/** + * Rejects the validation and logs an error message. + * + * @param error The error message to be logged. + * @param reason The reason for rejecting the validation. + * + * @returns False indicating that the validation failed. + */ bool ValidateQuery::reject_query(std::string error, td::BufferSlice reason) { error = error_ctx() + error; LOG(ERROR) << "REJECT: aborting validation of block candidate for " << shard_.to_str() << " : " << error; @@ -94,11 +129,28 @@ bool ValidateQuery::reject_query(std::string error, td::BufferSlice reason) { return false; } +/** + * Rejects the validation and logs an error message. + * + * @param err_msg The error message to be displayed. + * @param error The error status. + * @param reason The reason for rejecting the query. + * + * @returns False indicating that the validation failed. + */ bool ValidateQuery::reject_query(std::string err_msg, td::Status error, td::BufferSlice reason) { error.ensure_error(); return reject_query(err_msg + " : " + error.to_string(), std::move(reason)); } +/** + * Rejects the validation and logs an error message. + * + * @param error The error message to be logged. + * @param reason The reason for rejecting the validation. + * + * @returns False indicating that the validation failed. + */ bool ValidateQuery::soft_reject_query(std::string error, td::BufferSlice reason) { error = error_ctx() + error; LOG(ERROR) << "SOFT REJECT: aborting validation of block candidate for " << shard_.to_str() << " : " << error; @@ -114,6 +166,13 @@ bool ValidateQuery::soft_reject_query(std::string error, td::BufferSlice reason) return false; } +/** + * Handles a fatal error during validation. + * + * @param error The error status. + * + * @returns False indicating that the validation failed. + */ bool ValidateQuery::fatal_error(td::Status error) { error.ensure_error(); LOG(ERROR) << "aborting validation of block candidate for " << shard_.to_str() << " : " << error.to_string(); @@ -132,19 +191,47 @@ bool ValidateQuery::fatal_error(td::Status error) { return false; } +/** + * Handles a fatal error during validation. + * + * @param err_code Error code. + * @param error Error message. + * + * @returns False indicating that the validation failed. + */ bool ValidateQuery::fatal_error(int err_code, std::string err_msg) { return fatal_error(td::Status::Error(err_code, error_ctx() + err_msg)); } +/** + * Handles a fatal error during validation. + * + * @param err_code Error code. + * @param err_msg Error message. + * @param error Error status. + * + * @returns False indicating that the validation failed. + */ bool ValidateQuery::fatal_error(int err_code, std::string err_msg, td::Status error) { error.ensure_error(); return fatal_error(err_code, err_msg + " : " + error.to_string()); } +/** + * Handles a fatal error during validation. + * + * @param error Error message. + * @param err_code Error code. + * + * @returns False indicating that the validation failed. + */ bool ValidateQuery::fatal_error(std::string err_msg, int err_code) { return fatal_error(td::Status::Error(err_code, error_ctx() + err_msg)); } +/** + * Finishes the query and sends the result to the promise. + */ void ValidateQuery::finish_query() { if (main_promise) { main_promise.set_result(now_); @@ -158,6 +245,12 @@ void ValidateQuery::finish_query() { * */ +/** + * Starts the validation process. + * + * This function performs various checks on the validation parameters and the block candidate. + * Then the function also sends requests to the ValidatorManager to fetch blocks and shard stated. + */ void ValidateQuery::start_up() { LOG(INFO) << "validate query for " << block_candidate.id.to_str() << " started"; alarm_timestamp() = timeout; @@ -307,7 +400,16 @@ void ValidateQuery::start_up() { CHECK(pending); } -// unpack block candidate, and check root hash and file hash +/** + * Unpacks and validates a block candidate. + * + * This function unpacks the block candidate data and performs various validation checks to ensure its integrity. + * It checks the file hash and root hash of the block candidate against the expected values. + * It then parses the block header and checks its validity. + * Finally, it deserializes the collated data and extracts the collated roots. + * + * @returns True if the block candidate was successfully unpacked, false otherwise. + */ bool ValidateQuery::unpack_block_candidate() { vm::BagOfCells boc1, boc2; // 1. deserialize block itself @@ -359,6 +461,11 @@ bool ValidateQuery::unpack_block_candidate() { return extract_collated_data(); } +/** + * Initializes the validation by parsing and checking the block header. + * + * @returns True if the initialization is successful, false otherwise. + */ bool ValidateQuery::init_parse() { CHECK(block_root_.not_null()); std::vector prev_blks; @@ -486,6 +593,14 @@ bool ValidateQuery::init_parse() { return true; } +/** + * Extracts collated data from a cell. + * + * @param croot The root cell containing the collated data. + * @param idx The index of the root. + * + * @returns True if the extraction is successful, false otherwise. + */ bool ValidateQuery::extract_collated_data_from(Ref croot, int idx) { bool is_special = false; auto cs = vm::load_cell_slice_special(croot, is_special); @@ -523,7 +638,11 @@ bool ValidateQuery::extract_collated_data_from(Ref croot, int idx) { return true; } -// processes further and sorts data in collated_roots_ +/** + * Extracts collated data from a list of collated roots. + * + * @returns True if the extraction is successful, False otherwise. + */ bool ValidateQuery::extract_collated_data() { int i = -1; for (auto croot : collated_roots_) { @@ -542,6 +661,11 @@ bool ValidateQuery::extract_collated_data() { return true; } +/** + * Callback function called after retrieving the latest masterchain state. + * + * @param res The result of the retrieval of the latest masterchain state. + */ void ValidateQuery::after_get_latest_mc_state(td::Result, BlockIdExt>> res) { LOG(DEBUG) << "in ValidateQuery::after_get_latest_mc_state()"; --pending; @@ -578,6 +702,11 @@ void ValidateQuery::after_get_latest_mc_state(td::Result> res) { LOG(DEBUG) << "in ValidateQuery::after_get_mc_state() for " << mc_blkid_.to_str(); --pending; @@ -596,6 +725,11 @@ void ValidateQuery::after_get_mc_state(td::Result> res) { } } +/** + * Callback function for handling the result of retrieving a masterchain block handle referenced in the block. + * + * @param res The result of retrieving the masterchain block handle. + */ void ValidateQuery::got_mc_handle(td::Result res) { LOG(DEBUG) << "in ValidateQuery::got_mc_handle() for " << mc_blkid_.to_str(); --pending; @@ -611,6 +745,12 @@ void ValidateQuery::got_mc_handle(td::Result res) { } } +/** + * Callback function called after retrieving the shard state for a previous block. + * + * @param idx The index of the previous block (0 or 1). + * @param res The result of the shard state retrieval. + */ void ValidateQuery::after_get_shard_state(int idx, td::Result> res) { LOG(DEBUG) << "in ValidateQuery::after_get_shard_state(" << idx << ")"; --pending; @@ -643,6 +783,13 @@ void ValidateQuery::after_get_shard_state(int idx, td::Result> r } } +/** + * Processes the retreived masterchain state. + * + * @param mc_state The reference to the masterchain state. + * + * @returns True if the masterchain state is successfully processed, false otherwise. + */ bool ValidateQuery::process_mc_state(Ref mc_state) { if (mc_state.is_null()) { return fatal_error("could not obtain reference masterchain state "s + mc_blkid_.to_str()); @@ -664,6 +811,11 @@ bool ValidateQuery::process_mc_state(Ref mc_state) { return register_mc_state(mc_state_); } +/** + * Tries to unpack the masterchain state and perform necessary checks. + * + * @returns True if the unpacking and checks are successful, false otherwise. + */ bool ValidateQuery::try_unpack_mc_state() { LOG(DEBUG) << "unpacking reference masterchain state"; auto guard = error_ctx_add_guard("unpack last mc state"); @@ -750,7 +902,12 @@ bool ValidateQuery::try_unpack_mc_state() { return true; } -// almost the same as in Collator +/** + * Fetches and validates configuration parameters from the masterchain configuration. + * Almost the same as in Collator. + * + * @returns True if all configuration parameters were successfully fetched and validated, false otherwise. + */ bool ValidateQuery::fetch_config_params() { old_mparams_ = config_->get_config_param(9); { @@ -839,7 +996,16 @@ bool ValidateQuery::fetch_config_params() { return true; } -// almost the same as in Collator +/** + * Checks the previous block against the block registered in the masterchain. + * Almost the same as in Collator. + * + * @param listed The BlockIdExt of the top block of this shard registered in the masterchain. + * @param prev The BlockIdExt of the previous block. + * @param chk_chain_len Flag indicating whether to check the chain length. + * + * @returns True if the previous block is valid, false otherwise. + */ bool ValidateQuery::check_prev_block(const BlockIdExt& listed, const BlockIdExt& prev, bool chk_chain_len) { if (listed.seqno() > prev.seqno()) { return reject_query(PSTRING() << "cannot generate a shardchain block after previous block " << prev.to_str() @@ -859,7 +1025,15 @@ bool ValidateQuery::check_prev_block(const BlockIdExt& listed, const BlockIdExt& return true; } -// almost the same as in Collator +/** + * Checks the previous block against the block registered in the masterchain. + * Almost the same as in Collator + * + * @param listed The BlockIdExt of the top block of this shard registered in the masterchain. + * @param prev The BlockIdExt of the previous block. + * + * @returns True if the previous block is equal to the one registered in the masterchain, false otherwise. + */ bool ValidateQuery::check_prev_block_exact(const BlockIdExt& listed, const BlockIdExt& prev) { if (listed != prev) { return reject_query(PSTRING() << "cannot generate shardchain block for shard " << shard_.to_str() @@ -870,8 +1044,12 @@ bool ValidateQuery::check_prev_block_exact(const BlockIdExt& listed, const Block return true; } -// almost the same as in Collator -// (main change: fatal_error -> reject_query) +/** + * Checks the validity of the shard configuration of the current shard. + * Almost the same as in Collator (main change: fatal_error -> reject_query). + * + * @returns True if the shard's configuration is valid, False otherwise. + */ bool ValidateQuery::check_this_shard_mc_info() { wc_info_ = config_->get_workchain_info(workchain()); if (wc_info_.is_null()) { @@ -1016,6 +1194,11 @@ bool ValidateQuery::check_this_shard_mc_info() { * */ +/** + * Computes the previous shard state. + * + * @returns True if the previous state is computed successfully, false otherwise. + */ bool ValidateQuery::compute_prev_state() { CHECK(prev_states.size() == 1u + after_merge_); // Extend validator timeout if previous block is too old @@ -1045,6 +1228,9 @@ bool ValidateQuery::compute_prev_state() { return true; } +/** + * Computes the next shard state using the previous state and the block's Merkle update. + */ bool ValidateQuery::compute_next_state() { LOG(DEBUG) << "computing next state"; auto res = vm::MerkleUpdate::validate(state_update_); @@ -1120,7 +1306,13 @@ bool ValidateQuery::compute_next_state() { return true; } -// similar to Collator::unpack_merge_last_state() +/** + * Unpacks and merges the states of two previous blocks. + * Used if the block is after_merge. + * Similar to Collator::unpack_merge_last_state() + * + * @returns True if the unpacking and merging was successful, false otherwise. + */ bool ValidateQuery::unpack_merge_prev_state() { LOG(DEBUG) << "unpack/merge previous states"; CHECK(prev_states.size() == 2); @@ -1148,7 +1340,13 @@ bool ValidateQuery::unpack_merge_prev_state() { return true; } -// similar to Collator::unpack_last_state() +/** + * Unpacks the state of the previous block. + * Used if the block is not after_merge. + * Similar to Collator::unpack_last_state() + * + * @returns True if the unpacking is successful, false otherwise. + */ bool ValidateQuery::unpack_prev_state() { LOG(DEBUG) << "unpacking previous state(s)"; CHECK(prev_state_root_.not_null()); @@ -1163,7 +1361,16 @@ bool ValidateQuery::unpack_prev_state() { return unpack_one_prev_state(ps_, prev_blocks.at(0), prev_state_root_) && (!after_split_ || split_prev_state(ps_)); } -// similar to Collator::unpack_one_last_state() +/** + * Unpacks the state of a previous block and performs necessary checks. + * Similar to Collator::unpack_one_last_state() + * + * @param ss The ShardState object to unpack the state into. + * @param blkid The BlockIdExt of the previous block. + * @param prev_state_root The root of the state. + * + * @returns True if the unpacking and checks are successful, false otherwise. + */ bool ValidateQuery::unpack_one_prev_state(block::ShardState& ss, BlockIdExt blkid, Ref prev_state_root) { auto res = ss.unpack_state_ext(blkid, std::move(prev_state_root), global_id_, mc_seqno_, after_split_, after_split_ | after_merge_, [this](ton::BlockSeqno mc_seqno) { @@ -1180,7 +1387,15 @@ bool ValidateQuery::unpack_one_prev_state(block::ShardState& ss, BlockIdExt blki return true; } -// similar to Collator::split_last_state() +/** + * Splits the state of previous block. + * Used if the block is after_split. + * Similar to Collator::split_last_state() + * + * @param ss The ShardState object representing the previous state. The result is stored here. + * + * @returns True if the split operation is successful, false otherwise. + */ bool ValidateQuery::split_prev_state(block::ShardState& ss) { LOG(INFO) << "Splitting previous state " << ss.id_.to_str() << " to subshard " << shard_.to_str(); CHECK(after_split_); @@ -1202,6 +1417,11 @@ bool ValidateQuery::split_prev_state(block::ShardState& ss) { return true; } +/** + * Unpacks the next state (obtained by applying the Merkle update) and performs checks. + * + * @returns True if the next state is successfully unpacked and passes all checks, false otherwise. + */ bool ValidateQuery::unpack_next_state() { LOG(DEBUG) << "unpacking new state"; CHECK(state_root_.not_null()); @@ -1231,7 +1451,12 @@ bool ValidateQuery::unpack_next_state() { return true; } -// almost the same as in Collator +/** + * Requests the message queues of neighboring shards. + * Almost the same as in Collator. + * + * @returns True if the request for neighbor message queues was successful, false otherwise. + */ bool ValidateQuery::request_neighbor_queues() { CHECK(new_shard_conf_); auto neighbor_list = new_shard_conf_->get_neighbor_shard_hash_ids(shard_); @@ -1261,7 +1486,13 @@ bool ValidateQuery::request_neighbor_queues() { return true; } -// almost the same as in Collator +/** + * Handles the result of obtaining the outbound queue for a neighbor. + * Almost the same as in Collator. + * + * @param i The index of the neighbor. + * @param res The obtained outbound queue. + */ void ValidateQuery::got_neighbor_out_queue(int i, td::Result> res) { LOG(DEBUG) << "obtained outbound queue for neighbor #" << i; --pending; @@ -1323,7 +1554,14 @@ void ValidateQuery::got_neighbor_out_queue(int i, td::Result> } } -// almost the same as in Collator +/** + * Registers a masterchain state. + * Almost the same as in Collator. + * + * @param other_mc_state The masterchain state to register. + * + * @returns True if the registration is successful, false otherwise. + */ bool ValidateQuery::register_mc_state(Ref other_mc_state) { if (other_mc_state.is_null() || mc_state_.is_null()) { return false; @@ -1349,7 +1587,15 @@ bool ValidateQuery::register_mc_state(Ref other_mc_state) { return true; } -// almost the same as in Collator +/** + * Requests the auxiliary masterchain state. + * Almost the same as in Collator + * + * @param seqno The seqno of the block. + * @param state A reference to the auxiliary masterchain state. + * + * @returns True if the auxiliary masterchain state is successfully requested, false otherwise. + */ bool ValidateQuery::request_aux_mc_state(BlockSeqno seqno, Ref& state) { if (mc_state_.is_null()) { return fatal_error(PSTRING() << "cannot find masterchain block with seqno " << seqno @@ -1383,7 +1629,14 @@ bool ValidateQuery::request_aux_mc_state(BlockSeqno seqno, Ref ValidateQuery::get_aux_mc_state(BlockSeqno seqno) const { auto it = aux_mc_states_.find(seqno); if (it != aux_mc_states_.end()) { @@ -1393,7 +1646,14 @@ Ref ValidateQuery::get_aux_mc_state(BlockSeqno seqno) const { } } -// almost the same as in Collator +/** + * Callback function called after retrieving the auxiliary shard state. + * Handles the retrieved shard state and performs necessary checks and registrations. + * Almost the same as in Collator. + * + * @param blkid The BlockIdExt of the shard state. + * @param res The result of retrieving the shard state. + */ void ValidateQuery::after_get_aux_shard_state(ton::BlockIdExt blkid, td::Result> res) { LOG(DEBUG) << "in ValidateQuery::after_get_aux_shard_state(" << blkid.to_str() << ")"; --pending; @@ -1420,6 +1680,17 @@ void ValidateQuery::after_get_aux_shard_state(ton::BlockIdExt blkid, td::Result< } // similar to Collator::update_one_shard() +/** + * Checks one shard description in the masterchain shard configuration. + * Used in masterchain validation. + * + * @param info The shard information to be updated. + * @param sibling The sibling shard information. + * @param wc_info The workchain information. + * @param ccvc The Catchain validators configuration. + * + * @returns True if the validation wasa successful, false othewise. + */ bool ValidateQuery::check_one_shard(const block::McShardHash& info, const block::McShardHash* sibling, const block::WorkchainInfo* wc_info, const block::CatchainValidatorsConfig& ccvc) { auto shard = info.shard(); @@ -1706,8 +1977,14 @@ bool ValidateQuery::check_one_shard(const block::McShardHash& info, const block: return true; } -// checks old_shard_conf_ -> new_shard_conf_ transition using top_shard_descr_dict_ from collated data -// similar to Collator::update_shard_config() +/** + * Checks the shard configuration in the masterchain. + * Used in masterchain collator. + * Checks old_shard_conf_ -> new_shard_conf_ transition using top_shard_descr_dict_ from collated data. + * Similar to Collator::update_shard_config() + * + * @returns True if the shard layout is valid, false otherwise. + */ bool ValidateQuery::check_shard_layout() { prev_now_ = config_->utime; if (prev_now_ > now_) { @@ -1761,7 +2038,14 @@ bool ValidateQuery::check_shard_layout() { return check_mc_validator_info(is_key_block_ || (now_ / ccvc.mc_cc_lifetime > prev_now_ / ccvc.mc_cc_lifetime)); } -// similar to Collator::register_shard_block_creators +/** + * Registers the shard block creators to block_create_count_ + * Similar to Collator::register_shard_block_creators + * + * @param creator_list A vector of Bits256 representing the shard block creators. + * + * @returns True if the registration was successful, False otherwise. + */ bool ValidateQuery::register_shard_block_creators(std::vector creator_list) { for (const auto& x : creator_list) { LOG(DEBUG) << "registering block creator " << x.to_hex(); @@ -1776,7 +2060,12 @@ bool ValidateQuery::register_shard_block_creators(std::vector creat return true; } -// similar to Collator::check_cur_validator_set() +/** + * Checks that the current validator set is entitled to create blocks in this shard and has a correct catchain seqno. + * Similar to Collator::check_cur_validator_set() + * + * @returns True if the current validator set is valid, false otherwise. + */ bool ValidateQuery::check_cur_validator_set() { CatchainSeqno cc_seqno = 0; auto nodes = config_->compute_validator_set_cc(shard_, now_, &cc_seqno); @@ -1799,8 +2088,14 @@ bool ValidateQuery::check_cur_validator_set() { return true; } -// parallel to 4. of Collator::create_mc_state_extra() -// checks validator_info in mc_state_extra +/** + * Checks validator_info in mc_state_extra. + * NB: could be run in parallel to 4. of Collator::create_mc_state_extra() + * + * @param update_mc_cc Flag indicating whether the masterchain catchain seqno should be updated. + * + * @returns True if the validator information is valid, false otherwise. + */ bool ValidateQuery::check_mc_validator_info(bool update_mc_cc) { block::gen::McStateExtra::Record old_state_extra; block::gen::ValidatorInfo::Record old_val_info; @@ -1842,6 +2137,11 @@ bool ValidateQuery::check_mc_validator_info(bool update_mc_cc) { return true; } +/** + * Checks if the Unix time and logical time of the block are valid. + * + * @returns True if the utime and logical time pass checks, False otherwise. + */ bool ValidateQuery::check_utime_lt() { if (start_lt_ <= ps_.lt_) { return reject_query(PSTRING() << "block has start_lt " << start_lt_ << " less than or equal to lt " << ps_.lt_ @@ -1888,8 +2188,16 @@ bool ValidateQuery::check_utime_lt() { * */ -// almost the same as in Collator -// (but it can take into account the new state of the masterchain) +/** + * Adjusts one entry from the processed up to information using the masterchain state that is referenced in the entry. + * Almost the same as in Collator (but it can take into account the new state of the masterchain). + * + * @param proc The MsgProcessedUpto object. + * @param owner The shard that the MsgProcessesUpto information is taken from. + * @param allow_cur Allow using the new state of the msaterchain. + * + * @returns True if the processed up to information was successfully adjusted, false otherwise. + */ bool ValidateQuery::fix_one_processed_upto(block::MsgProcessedUpto& proc, ton::ShardIdFull owner, bool allow_cur) { if (proc.compute_shard_end_lt) { return true; @@ -1912,7 +2220,15 @@ bool ValidateQuery::fix_one_processed_upto(block::MsgProcessedUpto& proc, ton::S return (bool)proc.compute_shard_end_lt; } -// almost the same as in Collator +/** + * Adjusts the processed up to collection using the using the auxilliary masterchain states. + * Almost the same as in Collator. + * + * @param upto The MsgProcessedUptoCollection to be adjusted. + * @param allow_cur Allow using the new state of the msaterchain. + * + * @returns True if all entries were successfully adjusted, False otherwise. + */ bool ValidateQuery::fix_processed_upto(block::MsgProcessedUptoCollection& upto, bool allow_cur) { for (auto& entry : upto.list) { if (!fix_one_processed_upto(entry, upto.owner, allow_cur)) { @@ -1922,6 +2238,11 @@ bool ValidateQuery::fix_processed_upto(block::MsgProcessedUptoCollection& upto, return true; } +/** + * Adjusts the processed_upto values for all shard states, including neighbors. + * + * @returns True if all processed_upto values were successfully adjusted, false otherwise. + */ bool ValidateQuery::fix_all_processed_upto() { CHECK(ps_.processed_upto_); if (!fix_processed_upto(*ps_.processed_upto_)) { @@ -1942,7 +2263,13 @@ bool ValidateQuery::fix_all_processed_upto() { return true; } -// almost the same as in Collator +/** + * Adds trivials neighbor after merging two shards. + * Trivial neighbors are the two previous blocks. + * Almost the same as in Collator. + * + * @returns True if the operation is successful, false otherwise. + */ bool ValidateQuery::add_trivial_neighbor_after_merge() { LOG(DEBUG) << "in add_trivial_neighbor_after_merge()"; CHECK(prev_blocks.size() == 2); @@ -1977,7 +2304,13 @@ bool ValidateQuery::add_trivial_neighbor_after_merge() { return true; } -// almost the same as in Collator +/** + * Adds a trivial neighbor. + * A trivial neighbor is the previous block. + * Almost the same as in Collator. + * + * @returns True if the operation is successful, false otherwise. + */ bool ValidateQuery::add_trivial_neighbor() { LOG(DEBUG) << "in add_trivial_neighbor()"; if (after_merge_) { @@ -2113,6 +2446,11 @@ bool ValidateQuery::add_trivial_neighbor() { return true; } +/** + * Unpacks block data and performs validation checks. + * + * @returns True if the block data is successfully unpacked and passes all validation checks, false otherwise. + */ bool ValidateQuery::unpack_block_data() { LOG(DEBUG) << "unpacking block structures"; block::gen::Block::Record blk; @@ -2152,6 +2490,13 @@ bool ValidateQuery::unpack_block_data() { return unpack_precheck_value_flow(std::move(blk.value_flow)); } +/** + * Validates and unpacks the value flow of a new block. + * + * @param value_flow_root The root of the value flow to be unpacked and validated. + * + * @returns True if the value flow is valid and unpacked successfully, false otherwise. + */ bool ValidateQuery::unpack_precheck_value_flow(Ref value_flow_root) { vm::CellSlice cs{vm::NoVmOrd(), value_flow_root}; if (!(cs.is_valid() && value_flow_.fetch(cs) && cs.empty_ext())) { @@ -2269,7 +2614,14 @@ bool ValidateQuery::unpack_precheck_value_flow(Ref value_flow_root) { return true; } -// similar to Collator::compute_minted_amount() +/** + * Computes the amount of extra currencies to be minted. + * Similar to Collator::compute_minted_amount() + * + * @param to_mint A reference to the CurrencyCollection object to store the minted amount. + * + * @returns True if the computation is successful, false otherwise. + */ bool ValidateQuery::compute_minted_amount(block::CurrencyCollection& to_mint) { if (!is_masterchain()) { return to_mint.set_zero(); @@ -2321,6 +2673,15 @@ bool ValidateQuery::compute_minted_amount(block::CurrencyCollection& to_mint) { return true; } +/** + * Pre-validates the update of an account in a query. + * + * @param acc_id The 256-bit account address. + * @param old_value The old value of the account serialized as ShardAccount. Can be null. + * @param new_value The new value of the account serialized as ShardAccount. Can be null. + * + * @returns True if the accounts passes preliminary checks, false otherwise. + */ bool ValidateQuery::precheck_one_account_update(td::ConstBitPtr acc_id, Ref old_value, Ref new_value) { LOG(DEBUG) << "checking update of account " << acc_id.to_hex(256); @@ -2380,6 +2741,11 @@ bool ValidateQuery::precheck_one_account_update(td::ConstBitPtr acc_id, Ref trans_csr, ton::Bits256& prev_trans_hash, ton::LogicalTime& prev_trans_lt, unsigned& prev_trans_lt_len, @@ -2467,6 +2846,14 @@ bool ValidateQuery::precheck_one_transaction(td::ConstBitPtr acc_id, ton::Logica } // NB: could be run in parallel for different accounts +/** + * Pre-validates an AccountBlock and all transactions in it. + * + * @param acc_id The 256-bit account address. + * @param acc_blk_root The root of the AccountBlock. + * + * @returns True if the AccountBlock passes pre-checks, false otherwise. + */ bool ValidateQuery::precheck_one_account_block(td::ConstBitPtr acc_id, Ref acc_blk_root) { LOG(DEBUG) << "checking AccountBlock for " << acc_id.to_hex(256); if (!acc_id.equals(shard_pfx_.bits(), shard_pfx_len_)) { @@ -2548,6 +2935,11 @@ bool ValidateQuery::precheck_one_account_block(td::ConstBitPtr acc_id, Ref ValidateQuery::lookup_transaction(const ton::StdSmcAddress& addr, ton::LogicalTime lt) const { CHECK(account_blocks_dict_); block::gen::AccountBlock::Record ab_rec; @@ -2578,7 +2978,13 @@ Ref ValidateQuery::lookup_transaction(const ton::StdSmcAddress& addr, return trans_dict.lookup_ref(td::BitArray<64>{(long long)lt}); } -// checks that a ^Transaction refers to a transaction present in the ShardAccountBlocks +/** + * Checks that a Transaction cell refers to a transaction present in the ShardAccountBlocks. + * + * @param trans_ref The reference to the serialized transaction root. + * + * @returns True if the transaction reference is valid, False otherwise. + */ bool ValidateQuery::is_valid_transaction_ref(Ref trans_ref) const { ton::StdSmcAddress addr; ton::LogicalTime lt; @@ -2598,8 +3004,16 @@ bool ValidateQuery::is_valid_transaction_ref(Ref trans_ref) const { return true; } -// checks that any change in OutMsgQueue in the state is accompanied by an OutMsgDescr record in the block -// also checks that the keys are correct +/** + * Checks that any change in OutMsgQueue in the state is accompanied by an OutMsgDescr record in the block. + * Also checks that the keys are correct. + * + * @param out_msg_id The 32+64+256-bit ID of the outbound message. + * @param old_value The old value of the message queue entry. + * @param new_value The new value of the message queue entry. + * + * @returns True if the update is valid, false otherwise. + */ bool ValidateQuery::precheck_one_message_queue_update(td::ConstBitPtr out_msg_id, Ref old_value, Ref new_value) { LOG(DEBUG) << "checking update of enqueued outbound message " << out_msg_id.get_int(32) << ":" @@ -2765,6 +3179,11 @@ bool ValidateQuery::precheck_one_message_queue_update(td::ConstBitPtr out_msg_id return true; } +/** + * Performs a pre-check on the difference between the old and new outbound message queues. + * + * @returns True if the pre-check is successful, false otherwise. + */ bool ValidateQuery::precheck_message_queue_update() { LOG(INFO) << "pre-checking the difference between the old and the new outbound message queues"; try { @@ -2787,6 +3206,14 @@ bool ValidateQuery::precheck_message_queue_update() { return true; } +/** + * Updates the maximum processed logical time and hash value. + * + * @param lt The logical time to compare against the current maximum processed logical time. + * @param hash The hash value to compare against the current maximum processed hash value. + * + * @returns True if the update was successful, false otherwise. + */ bool ValidateQuery::update_max_processed_lt_hash(ton::LogicalTime lt, const ton::Bits256& hash) { if (proc_lt_ < lt || (proc_lt_ == lt && proc_hash_ < hash)) { proc_lt_ = lt; @@ -2795,6 +3222,14 @@ bool ValidateQuery::update_max_processed_lt_hash(ton::LogicalTime lt, const ton: return true; } +/** + * Updates the minimum enqueued logical time and hash values. + * + * @param lt The logical time to compare. + * @param hash The hash value to compare. + * + * @returns True if the update was successful, false otherwise. + */ bool ValidateQuery::update_min_enqueued_lt_hash(ton::LogicalTime lt, const ton::Bits256& hash) { if (lt < min_enq_lt_ || (lt == min_enq_lt_ && hash < min_enq_hash_)) { min_enq_lt_ = lt; @@ -2803,7 +3238,13 @@ bool ValidateQuery::update_min_enqueued_lt_hash(ton::LogicalTime lt, const ton:: return true; } -// check that the enveloped message (MsgEnvelope) was present in the output queue of a neighbor, and that it has not been processed before +/** + * Checks that the MsgEnvelope was present in the output queue of a neighbor, and that it has not been processed before. + * + * @param msg_env The message envelope of the imported message. + * + * @returns True if the imported internal message passes checks, false otherwise. + */ bool ValidateQuery::check_imported_message(Ref msg_env) { block::tlb::MsgEnvelope::Record_std env; block::gen::CommonMsgInfo::Record_int_msg_info info; @@ -2863,11 +3304,27 @@ bool ValidateQuery::check_imported_message(Ref msg_env) { " has previous address not belonging to any neighbor"); } +/** + * Checks if the given input message is a special message. + * A message is considered special if it recovers fees or mints extra currencies. + * + * @param in_msg The input message to be checked. + * + * @returns True if the input message is special, False otherwise. + */ bool ValidateQuery::is_special_in_msg(const vm::CellSlice& in_msg) const { return (recover_create_msg_.not_null() && vm::load_cell_slice(recover_create_msg_).contents_equal(in_msg)) || (mint_msg_.not_null() && vm::load_cell_slice(mint_msg_).contents_equal(in_msg)); } +/** + * Checks the validity of an inbound message listed in InMsgDescr. + * + * @param key The 256-bit key of the inbound message. + * @param in_msg The inbound message to be checked serialized using InMsg TLB-scheme. + * + * @returns True if the inbound message is valid, false otherwise. + */ bool ValidateQuery::check_in_msg(td::ConstBitPtr key, Ref in_msg) { LOG(DEBUG) << "checking InMsg with key " << key.to_hex(256); CHECK(in_msg.not_null()); @@ -3274,6 +3731,11 @@ bool ValidateQuery::check_in_msg(td::ConstBitPtr key, Ref in_msg) return true; } +/** + * Checks the validity of the inbound messages listed in the InMsgDescr dictionary. + * + * @returns True if the inbound messages dictionary is valid, false otherwise. + */ bool ValidateQuery::check_in_msg_descr() { LOG(INFO) << "checking inbound messages listed in InMsgDescr"; try { @@ -3293,6 +3755,14 @@ bool ValidateQuery::check_in_msg_descr() { return true; } +/** + * Checks the validity of an outbound message listed in OutMsgDescr. + * + * @param key The 256-bit key of the outbound message. + * @param in_msg The outbound message to be checked serialized using OutMsg TLB-scheme. + * + * @returns True if the outbound message is valid, false otherwise. + */ bool ValidateQuery::check_out_msg(td::ConstBitPtr key, Ref out_msg) { LOG(DEBUG) << "checking OutMsg with key " << key.to_hex(256); CHECK(out_msg.not_null()); @@ -3810,6 +4280,11 @@ bool ValidateQuery::check_out_msg(td::ConstBitPtr key, Ref out_ms return true; } +/** + * Checks the validity of the outbound messages listed in the OutMsgDescr dictionary. + * + * @returns True if the outbound messages dictionary is valid, false otherwise. + */ bool ValidateQuery::check_out_msg_descr() { LOG(INFO) << "checking outbound messages listed in OutMsgDescr"; try { @@ -3828,7 +4303,12 @@ bool ValidateQuery::check_out_msg_descr() { return true; } -// compare to Collator::update_processed_upto() +/** + * Checks if the processed up to information is valid and consistent. + * Compare to Collator::update_processed_upto() + * + * @returns True if the processed up to information is valid and consistent, false otherwise. + */ bool ValidateQuery::check_processed_upto() { LOG(INFO) << "checking ProcessedInfo"; CHECK(ps_.processed_upto_); @@ -3884,7 +4364,18 @@ bool ValidateQuery::check_processed_upto() { return true; } -// similar to Collator::process_inbound_message +/** + * Checks the validity of an outbound message in the neighbor's queue. + * Similar to Collator::process_inbound_message. + * + * @param enq_msg The enqueued message to validate. + * @param lt The logical time of the message. + * @param key The 32+64+256-bit key of the message. + * @param nb The neighbor's description. + * @param unprocessed A boolean flag that will be set to true if the message is unprocessed, false otherwise. + * + * @returns True if the message is valid, false otherwise. + */ bool ValidateQuery::check_neighbor_outbound_message(Ref enq_msg, ton::LogicalTime lt, td::ConstBitPtr key, const block::McShardDescr& nb, bool& unprocessed) { @@ -4023,6 +4514,11 @@ bool ValidateQuery::check_neighbor_outbound_message(Ref enq_msg, return true; } +/** + * Checks messages from the outbound queues of the neighbors. + * + * @returns True if the messages are valid, false otherwise. + */ bool ValidateQuery::check_in_queue() { block::OutputQueueMerger nb_out_msgs(shard_, neighbors_); while (!nb_out_msgs.is_eof()) { @@ -4054,9 +4550,12 @@ bool ValidateQuery::check_in_queue() { return true; } -// checks that all messages imported from our outbound queue into neighbor shards have been dequeued -// similar to Collator::out_msg_queue_cleanup() -// (but scans new outbound queue instead of the old) +/** + * Checks that all messages imported from our outbound queue into neighbor shards have been dequeued + * Similar to Collator::out_msg_queue_cleanup() (but scans the new outbound queue instead of the old). + * + * @returns True if the delivery status of all messages has been checked successfully, false otherwise. + */ bool ValidateQuery::check_delivered_dequeued() { LOG(INFO) << "scanning new outbound queue and checking delivery status of all messages"; bool ok = false; @@ -4103,26 +4602,42 @@ bool ValidateQuery::check_delivered_dequeued() { }) || ok; } -// similar to Collator::make_account_from() -std::unique_ptr ValidateQuery::make_account_from(td::ConstBitPtr addr, Ref account, - Ref extra) { +/** + * Creates a new Account object from the given address and serialized account data. + * Creates a new Account if not found. + * Similar to Collator::make_account_from() + * + * @param addr A pointer to the 256-bit address of the account. + * @param account A cell slice with an account serialized using ShardAccount TLB-scheme. + * + * @returns A unique pointer to the created Account object, or nullptr if the creation failed. + */ +std::unique_ptr ValidateQuery::make_account_from(td::ConstBitPtr addr, Ref account) { auto ptr = std::make_unique(workchain(), addr); if (account.is_null()) { if (!ptr->init_new(now_)) { return nullptr; } - } else if (!ptr->unpack(std::move(account), std::move(extra), now_, - is_masterchain() && config_->is_special_smartcontract(addr))) { + } else if (!ptr->unpack(std::move(account), now_, is_masterchain() && config_->is_special_smartcontract(addr))) { return nullptr; } ptr->block_lt = start_lt_; return ptr; } -// similar to Collator::make_account() +/** + * Retreives an Account object from the data in the shard state. + * Accounts are cached in the ValidatorQuery's map. + * Similar to Collator::make_account() + * + * @param addr The 256-bit address of the account. + * + * @returns Pointer to the account if found or created successfully. + * Returns nullptr if an error occured. + */ std::unique_ptr ValidateQuery::unpack_account(td::ConstBitPtr addr) { auto dict_entry = ps_.account_dict_->lookup_extra(addr, 256); - auto new_acc = make_account_from(addr, std::move(dict_entry.first), std::move(dict_entry.second)); + auto new_acc = make_account_from(addr, std::move(dict_entry.first)); if (!new_acc) { reject_query("cannot load state of account "s + addr.to_hex(256) + " from previous shardchain state"); return {}; @@ -4135,6 +4650,18 @@ std::unique_ptr ValidateQuery::unpack_account(td::ConstBitPtr ad return new_acc; } +/** + * Checks the validity of a single transaction for a given account. + * Performs transaction execution. + * + * @param account The account of the transaction. + * @param lt The logical time of the transaction. + * @param trans_root The root of the transaction. + * @param is_first Flag indicating if this is the first transaction of the account. + * @param is_last Flag indicating if this is the last transaction of the account. + * + * @returns True if the transaction is valid, false otherwise. + */ bool ValidateQuery::check_one_transaction(block::Account& account, ton::LogicalTime lt, Ref trans_root, bool is_first, bool is_last) { if (!check_timeout()) { @@ -4598,7 +5125,15 @@ bool ValidateQuery::check_one_transaction(block::Account& account, ton::LogicalT return true; } -// NB: may be run in parallel for different accounts +/** + * Checks the validity of transactions for a given account block. + * NB: may be run in parallel for different accounts + * + * @param acc_addr The address of the account. + * @param acc_blk_root The root of the AccountBlock. + * + * @returns True if the account transactions are valid, false otherwise. + */ bool ValidateQuery::check_account_transactions(const StdSmcAddress& acc_addr, Ref acc_blk_root) { block::gen::AccountBlock::Record acc_blk; CHECK(tlb::csr_unpack(std::move(acc_blk_root), acc_blk) && acc_blk.account_addr == acc_addr); @@ -4630,6 +5165,11 @@ bool ValidateQuery::check_account_transactions(const StdSmcAddress& acc_addr, Re } } +/** + * Checks all transactions in the account blocks. + * + * @returns True if all transactions pass the check, False otherwise. + */ bool ValidateQuery::check_transactions() { LOG(INFO) << "checking all transactions"; return account_blocks_dict_->check_for_each_extra( @@ -4639,7 +5179,17 @@ bool ValidateQuery::check_transactions() { }); } -// similar to Collator::update_account_public_libraries() +/** + * Processes changes in libraries of an account. + * Used in masterchain validation. + * Similar to Collator::update_account_public_libraries() + * + * @param orig_libs The original libraries of the account. + * @param final_libs The final libraries of the account. + * @param addr The address of the account. + * + * @returns True if the update was successful, false otherwise. + */ bool ValidateQuery::scan_account_libraries(Ref orig_libs, Ref final_libs, const td::Bits256& addr) { vm::Dictionary dict1{std::move(orig_libs), 256}, dict2{std::move(final_libs), 256}; return dict1.scan_diff( @@ -4657,6 +5207,12 @@ bool ValidateQuery::scan_account_libraries(Ref orig_libs, Ref in_msg_root, const block::CurrencyCollection& amount, Ref addr_cell) { if (in_msg_root.is_null()) { @@ -4786,11 +5357,28 @@ bool ValidateQuery::check_special_message(Ref in_msg_root, const block return true; } +/** + * Checks if all necessary special messages are valid and exist in the incoming messages dictionary. + * Used in masterchain validation. + * + * @returns True if special messages are valid, false otherwise. + */ bool ValidateQuery::check_special_messages() { return check_special_message(recover_create_msg_, value_flow_.recovered, config_->get_config_param(3, 1)) && check_special_message(mint_msg_, value_flow_.minted, config_->get_config_param(2, 0)); } +/** + * Checks if an update of LibDescr of as single library update is valid. + * Compares updates in LibDescr against updates of account states. + * Used in masterchain validation. + * + * @param key The 256-bit key of the library. + * @param old_value The old value of the LibDescr + * @param new_value The new value of the LibDescr. + * + * @returns True if the library update is valid, false otherwise. + */ bool ValidateQuery::check_one_library_update(td::ConstBitPtr key, Ref old_value, Ref new_value) { // shared_lib_descr$00 lib:^Cell publishers:(Hashmap 256 True) = LibDescr; @@ -4841,6 +5429,12 @@ bool ValidateQuery::check_one_library_update(td::ConstBitPtr key, Refscan_diff( @@ -4861,6 +5455,11 @@ bool ValidateQuery::check_shard_libraries() { return true; } +/** + * Checks the validity of the new shard state. + * + * @returns True if the new state is valid, false otherwise. + */ bool ValidateQuery::check_new_state() { LOG(INFO) << "checking header of the new shardchain state"; block::gen::ShardStateUnsplit::Record info; @@ -4955,6 +5554,15 @@ bool ValidateQuery::check_new_state() { return true; } +/** + * Checks if a masterchain configuration update is valid. + * Used in masterchain validation. + * + * @param old_conf_params The old configuration parameters. + * @param new_conf_params The new configuration parameters. + * + * @returns True if the update is valid, false otherwise. + */ bool ValidateQuery::check_config_update(Ref old_conf_params, Ref new_conf_params) { if (!block::gen::t_ConfigParams.validate_csr(10000, new_conf_params)) { return reject_query("new configuration failed to pass automated validity checks"); @@ -5059,6 +5667,16 @@ bool ValidateQuery::check_config_update(Ref old_conf_params, Ref< "reason (the suggested configuration appears to be valid)"); } +/** + * Checks if a single entry in the dictionary of previous masterchain blocks is valid and consistent. + * Used in masterchain validation. + * + * @param seqno The sequence number of the entry. + * @param old_val_extra The old value of the entry. + * @param new_val_extra The new value of the entry. + * + * @returns True if the update is valid and consistent, false otherwise. + */ bool ValidateQuery::check_one_prev_dict_update(ton::BlockSeqno seqno, Ref old_val_extra, Ref new_val_extra) { if (old_val_extra.not_null() && new_val_extra.is_null()) { @@ -5113,7 +5731,13 @@ bool ValidateQuery::check_one_prev_dict_update(ton::BlockSeqno seqno, Ref old_val, Ref new_val) { LOG(DEBUG) << "checking update of CreatorStats for "s + key.to_hex(256); @@ -5365,7 +6009,13 @@ bool ValidateQuery::check_one_block_creator_update(td::ConstBitPtr key, Refget_shard_hash(shard); @@ -5433,6 +6093,12 @@ bool ValidateQuery::check_one_shard_fee(ShardIdFull shard, const block::Currency return true; } +/** + * Checks the validity of the McBlockExtra in a masterchain block. + * Used in masterchain validation. + * + * @returns True if the data is valid, false otherwise. + */ bool ValidateQuery::check_mc_block_extra() { if (!is_masterchain()) { return true; @@ -5484,6 +6150,11 @@ bool ValidateQuery::check_mc_block_extra() { return true; } +/** + * Validates the value flow of a block. + * + * @returns True if the value flow is valid, False otherwise. + */ bool ValidateQuery::postcheck_value_flow() { auto expected_fees = value_flow_.fees_imported + value_flow_.created + transaction_fees_ + import_fees_ - fees_burned_; @@ -5504,13 +6175,11 @@ bool ValidateQuery::postcheck_value_flow() { return true; } -/* - * - * MAIN VALIDATOR FUNCTION - * (invokes other methods in a suitable order) +/** + * MAIN VALIDATOR FUNCTION (invokes other methods in a suitable order). * + * @returns True if the validation is successful, False otherwise. */ - bool ValidateQuery::try_validate() { if (pending) { return true; @@ -5616,6 +6285,11 @@ bool ValidateQuery::try_validate() { return save_candidate(); } +/** + * Saves the candidate to disk. + * + * @returns True. + */ bool ValidateQuery::save_candidate() { auto P = td::PromiseCreator::lambda([SelfId = actor_id(this)](td::Result R) { if (R.is_error()) { @@ -5629,6 +6303,10 @@ bool ValidateQuery::save_candidate() { return true; } +/** + * Callback function called after saving block candidate. + * Finishes validation. + */ void ValidateQuery::written_candidate() { finish_query(); } diff --git a/validator/impl/validate-query.hpp b/validator/impl/validate-query.hpp index 7d15dcfe8..ff8cc83c8 100644 --- a/validator/impl/validate-query.hpp +++ b/validator/impl/validate-query.hpp @@ -342,8 +342,7 @@ class ValidateQuery : public td::actor::Actor { const block::McShardDescr& src_nb, bool& unprocessed); bool check_in_queue(); bool check_delivered_dequeued(); - std::unique_ptr make_account_from(td::ConstBitPtr addr, Ref account, - Ref extra); + std::unique_ptr make_account_from(td::ConstBitPtr addr, Ref account); std::unique_ptr unpack_account(td::ConstBitPtr addr); bool check_one_transaction(block::Account& account, LogicalTime lt, Ref trans_root, bool is_first, bool is_last); From 030ebaf772bf95807ccc07520018f9477c241414 Mon Sep 17 00:00:00 2001 From: SpyCheese Date: Fri, 3 Nov 2023 15:25:58 +0300 Subject: [PATCH 39/50] Change GASCONSUMED opcode to f807 --- crypto/fift/lib/Asm.fif | 2 +- crypto/vm/tonops.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/crypto/fift/lib/Asm.fif b/crypto/fift/lib/Asm.fif index a0bfe6429..0a4c7074f 100644 --- a/crypto/fift/lib/Asm.fif +++ b/crypto/fift/lib/Asm.fif @@ -1275,7 +1275,7 @@ x{F4BF} @Defop DICTUGETEXECZ x{F800} @Defop ACCEPT x{F801} @Defop SETGASLIMIT -x{F806} @Defop GASCONSUMED +x{F807} @Defop GASCONSUMED x{F80F} @Defop COMMIT x{F810} @Defop RANDU256 diff --git a/crypto/vm/tonops.cpp b/crypto/vm/tonops.cpp index f491d252c..d150f30b3 100644 --- a/crypto/vm/tonops.cpp +++ b/crypto/vm/tonops.cpp @@ -101,7 +101,7 @@ void register_basic_gas_ops(OpcodeTable& cp0) { using namespace std::placeholders; cp0.insert(OpcodeInstr::mksimple(0xf800, 16, "ACCEPT", exec_accept)) .insert(OpcodeInstr::mksimple(0xf801, 16, "SETGASLIMIT", exec_set_gas_limit)) - .insert(OpcodeInstr::mksimple(0xf806, 16, "GASCONSUMED", exec_gas_consumed)->require_version(4)) + .insert(OpcodeInstr::mksimple(0xf807, 16, "GASCONSUMED", exec_gas_consumed)->require_version(4)) .insert(OpcodeInstr::mksimple(0xf80f, 16, "COMMIT", exec_commit)); } From 79ed14cba950f267aa37d532c80e674a36a739a8 Mon Sep 17 00:00:00 2001 From: EmelyanenkoK Date: Fri, 3 Nov 2023 15:53:11 +0300 Subject: [PATCH 40/50] Add information on running tests (#796) Co-authored-by: SpyCheese --- README.md | 2 +- doc/Tests.md | 24 ++++++++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 doc/Tests.md diff --git a/README.md b/README.md index 88e02711b..7e78bb04a 100644 --- a/README.md +++ b/README.md @@ -70,4 +70,4 @@ If a CI workflow fails not because of your changes but workflow issues, try to f ## Running tests -Tests are executed by running `ctest` in the build directory. \ No newline at end of file +Tests are executed by running `ctest` in the build directory. See `doc/Tests.md` for more information. \ No newline at end of file diff --git a/doc/Tests.md b/doc/Tests.md new file mode 100644 index 000000000..c883731a9 --- /dev/null +++ b/doc/Tests.md @@ -0,0 +1,24 @@ +# Tests execution +TON contains multiple unit-tests, that facilitate detection of erroneous blockchain behaviour on each commit. +## Build tests +Go inside the build directory and, if you use ninja, build the tests using the following command: + +```ninja test-ed25519 test-ed25519-crypto test-bigint test-vm test-fift test-cells test-smartcont test-net test-tdactor test-tdutils test-tonlib-offline test-adnl test-dht test-rldp test-rldp2 test-catchain test-fec test-tddb test-db test-validator-session-state``` + +For more details on how to build TON artifacts, please refer to any of Github actions. + +For cmake use: + +```cmake --build . --target test-ed25519 test-ed25519-crypto test-bigint test-vm test-fift test-cells test-smartcont test-net test-tdactor test-tdutils test-tonlib-offline test-adnl test-dht test-rldp test-rldp2 test-catchain test-fec test-tddb test-db test-validator-session-state``` + +## Run tests +Go inside the build directory and with ninja execute: + +```ninja test``` + +with ctest: + +```ctest``` + +## Integration of tests into CI +Most relevant GitHub actions include the step ```Run tests``` that executes the tests. If any of tests fails, the action will be interrupted and no artifacts will be provided. \ No newline at end of file From ba03657617a015166dc1e74d15549db8846a53fe Mon Sep 17 00:00:00 2001 From: EmelyanenkoK Date: Fri, 3 Nov 2023 17:05:43 +0300 Subject: [PATCH 41/50] Fix transaction credit phase (#797) Co-authored-by: SpyCheese --- crypto/block/transaction.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/crypto/block/transaction.cpp b/crypto/block/transaction.cpp index 9df5be132..dba3ce907 100644 --- a/crypto/block/transaction.cpp +++ b/crypto/block/transaction.cpp @@ -955,10 +955,14 @@ bool Transaction::prepare_storage_phase(const StoragePhaseConfig& cfg, bool forc */ bool Transaction::prepare_credit_phase() { credit_phase = std::make_unique(); + // Due payment is only collected in storage phase. + // For messages with bounce flag, contract always receives the amount specified in message // auto collected = std::min(msg_balance_remaining.grams, due_payment); // credit_phase->due_fees_collected = collected; // due_payment -= collected; // credit_phase->credit = msg_balance_remaining -= collected; + credit_phase->due_fees_collected = td::zero_refint(); + credit_phase->credit = msg_balance_remaining; if (!msg_balance_remaining.is_valid()) { LOG(ERROR) << "cannot compute the amount to be credited in the credit phase of transaction"; return false; From 909e7dbdfc48a3c3e0774b422b99ff4b3d375504 Mon Sep 17 00:00:00 2001 From: SpyCheese Date: Wed, 22 Nov 2023 10:25:53 +0300 Subject: [PATCH 42/50] Allow anycast destination address in masterchain (#807) --- crypto/block/transaction.cpp | 5 ----- 1 file changed, 5 deletions(-) diff --git a/crypto/block/transaction.cpp b/crypto/block/transaction.cpp index dba3ce907..49c853a9b 100644 --- a/crypto/block/transaction.cpp +++ b/crypto/block/transaction.cpp @@ -1976,11 +1976,6 @@ bool Transaction::check_rewrite_dest_addr(Ref& dest_addr, const A } if (rec.anycast->size() > 1) { // destination address is an anycast - if (rec.workchain_id == ton::masterchainId) { - // anycast addresses disabled in masterchain - LOG(DEBUG) << "masterchain destination address has an anycast field"; - return false; - } vm::CellSlice cs{*rec.anycast}; int d = (int)cs.fetch_ulong(6) - 32; if (d <= 0 || d > 30) { From 31263fb4754025c3c5db1504c825e96ecf010653 Mon Sep 17 00:00:00 2001 From: SpyCheese Date: Wed, 22 Nov 2023 10:27:39 +0300 Subject: [PATCH 43/50] Limit max number of public libraries on contracts (#808) --- crypto/block/block.cpp | 2 +- crypto/block/block.h | 2 ++ crypto/block/block.tlb | 3 ++- crypto/block/mc-config.cpp | 1 + crypto/block/mc-config.h | 1 + crypto/block/transaction.cpp | 42 ++++++++++++++++++++++++++++++------ validator/impl/collator.cpp | 2 +- 7 files changed, 44 insertions(+), 9 deletions(-) diff --git a/crypto/block/block.cpp b/crypto/block/block.cpp index 1131213c6..9a3dba601 100644 --- a/crypto/block/block.cpp +++ b/crypto/block/block.cpp @@ -715,7 +715,7 @@ td::uint64 BlockLimitStatus::estimate_block_size(const vm::NewCellStorageStat::S sum += *extra; } return 2000 + (sum.bits >> 3) + sum.cells * 12 + sum.internal_refs * 3 + sum.external_refs * 40 + accounts * 200 + - transactions * 200 + (extra ? 200 : 0) + extra_out_msgs * 300; + transactions * 200 + (extra ? 200 : 0) + extra_out_msgs * 300 + extra_library_diff * 700; } int BlockLimitStatus::classify() const { diff --git a/crypto/block/block.h b/crypto/block/block.h index 19d99e6a0..09169429b 100644 --- a/crypto/block/block.h +++ b/crypto/block/block.h @@ -262,6 +262,7 @@ struct BlockLimitStatus { td::uint64 gas_used{}; vm::NewCellStorageStat st_stat; unsigned accounts{}, transactions{}, extra_out_msgs{}; + unsigned extra_library_diff{}; // Number of public libraries in deleted/frozen accounts BlockLimitStatus(const BlockLimits& limits_, ton::LogicalTime lt = 0) : limits(limits_), cur_lt(std::max(limits_.start_lt, lt)) { } @@ -271,6 +272,7 @@ struct BlockLimitStatus { transactions = accounts = 0; gas_used = 0; extra_out_msgs = 0; + extra_library_diff = 0; } td::uint64 estimate_block_size(const vm::NewCellStorageStat::Stat* extra = nullptr) const; int classify() const; diff --git a/crypto/block/block.tlb b/crypto/block/block.tlb index 1b6f72a30..4b36f13ba 100644 --- a/crypto/block/block.tlb +++ b/crypto/block/block.tlb @@ -780,7 +780,8 @@ _ MisbehaviourPunishmentConfig = ConfigParam 40; size_limits_config#01 max_msg_bits:uint32 max_msg_cells:uint32 max_library_cells:uint32 max_vm_data_depth:uint16 max_ext_msg_size:uint32 max_ext_msg_depth:uint16 = SizeLimitsConfig; size_limits_config_v2#02 max_msg_bits:uint32 max_msg_cells:uint32 max_library_cells:uint32 max_vm_data_depth:uint16 - max_ext_msg_size:uint32 max_ext_msg_depth:uint16 max_acc_state_cells:uint32 max_acc_state_bits:uint32 = SizeLimitsConfig; + max_ext_msg_size:uint32 max_ext_msg_depth:uint16 max_acc_state_cells:uint32 max_acc_state_bits:uint32 + max_acc_public_libraries:uint32 = SizeLimitsConfig; _ SizeLimitsConfig = ConfigParam 43; // key is [ wc:int32 addr:uint256 ] diff --git a/crypto/block/mc-config.cpp b/crypto/block/mc-config.cpp index 02c6e45bb..08be5c887 100644 --- a/crypto/block/mc-config.cpp +++ b/crypto/block/mc-config.cpp @@ -1934,6 +1934,7 @@ td::Result Config::get_size_limits_config() const { unpack_v1(rec); limits.max_acc_state_bits = rec.max_acc_state_bits; limits.max_acc_state_cells = rec.max_acc_state_cells; + limits.max_acc_public_libraries = rec.max_acc_public_libraries; }; gen::SizeLimitsConfig::Record_size_limits_config rec_v1; gen::SizeLimitsConfig::Record_size_limits_config_v2 rec_v2; diff --git a/crypto/block/mc-config.h b/crypto/block/mc-config.h index b29e37925..caab93f36 100644 --- a/crypto/block/mc-config.h +++ b/crypto/block/mc-config.h @@ -389,6 +389,7 @@ struct SizeLimitsConfig { ExtMsgLimits ext_msg_limits; td::uint32 max_acc_state_cells = 1 << 16; td::uint32 max_acc_state_bits = (1 << 16) * 1023; + td::uint32 max_acc_public_libraries = 256; }; struct CatchainValidatorsConfig { diff --git a/crypto/block/transaction.cpp b/crypto/block/transaction.cpp index 49c853a9b..05df6371e 100644 --- a/crypto/block/transaction.cpp +++ b/crypto/block/transaction.cpp @@ -2500,8 +2500,28 @@ int Transaction::try_action_reserve_currency(vm::CellSlice& cs, ActionPhase& ap, return 0; } +/** + * Calculates the number of public libraries in the dictionary. + * + * @param libraries The dictionary of account libraries. + * + * @returns The number of public libraries in the dictionary. + */ +static td::uint32 get_public_libraries_count(const td::Ref& libraries) { + td::uint32 count = 0; + vm::Dictionary dict{libraries, 256}; + dict.check_for_each([&](td::Ref value, td::ConstBitPtr key, int) { + if (block::is_public_library(key, std::move(value))) { + ++count; + } + return true; + }); + return count; +} + /** * Checks that the new account state fits in the limits. + * This function is not called for special accounts. * * @param cfg The configuration for the action phase. * @@ -2547,10 +2567,15 @@ td::Status Transaction::check_state_limits(const ActionPhaseConfig& cfg) { } else { new_storage_stat.clear(); } - return new_storage_stat.cells <= cfg.size_limits.max_acc_state_cells && - new_storage_stat.bits <= cfg.size_limits.max_acc_state_bits - ? td::Status::OK() - : td::Status::Error("state too big"); + if (new_storage_stat.cells > cfg.size_limits.max_acc_state_cells || + new_storage_stat.bits > cfg.size_limits.max_acc_state_bits) { + return td::Status::Error("account state is too big"); + } + if (account.is_masterchain() && !cell_equal(account.library, new_library) && + get_public_libraries_count(new_library) > cfg.size_limits.max_acc_public_libraries) { + return td::Status::Error("too many public libraries"); + } + return td::Status::OK(); } /** @@ -3135,8 +3160,13 @@ bool Transaction::update_limits(block::BlockLimitStatus& blimst, bool with_size) return false; } if (with_size) { - return blimst.add_proof(new_total_state) && blimst.add_cell(root) && blimst.add_transaction() && - blimst.add_account(is_first); + if (!(blimst.add_proof(new_total_state) && blimst.add_cell(root) && blimst.add_transaction() && + blimst.add_account(is_first))) { + return false; + } + if (account.is_masterchain() && (was_frozen || was_deleted)) { + blimst.extra_library_diff += get_public_libraries_count(account.orig_library); + } } return true; } diff --git a/validator/impl/collator.cpp b/validator/impl/collator.cpp index d133278f3..b72292bb4 100644 --- a/validator/impl/collator.cpp +++ b/validator/impl/collator.cpp @@ -4310,7 +4310,7 @@ bool Collator::update_public_libraries() { } } } - if (libraries_changed_ && verbosity >= 2 * 0) { + if (libraries_changed_ && verbosity >= 2) { std::cerr << "New public libraries: "; block::gen::t_HashmapE_256_LibDescr.print(std::cerr, shard_libraries_->get_root()); shard_libraries_->get_root()->print_rec(std::cerr); From 1cffca0b407dfd0e47a2f95e8e1f757f6c4f177c Mon Sep 17 00:00:00 2001 From: SpyCheese Date: Wed, 22 Nov 2023 10:27:58 +0300 Subject: [PATCH 44/50] Fix due payment reimbursement (#809) --- crypto/block/transaction.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/crypto/block/transaction.cpp b/crypto/block/transaction.cpp index 05df6371e..23de6e29b 100644 --- a/crypto/block/transaction.cpp +++ b/crypto/block/transaction.cpp @@ -885,7 +885,7 @@ bool Transaction::prepare_storage_phase(const StoragePhaseConfig& cfg, bool forc if (now < account.last_paid) { return false; } - auto to_pay = account.compute_storage_fees(now, *(cfg.pricing)); + auto to_pay = account.compute_storage_fees(now, *(cfg.pricing)) + due_payment; if (to_pay.not_null() && sgn(to_pay) < 0) { return false; } @@ -898,7 +898,7 @@ bool Transaction::prepare_storage_phase(const StoragePhaseConfig& cfg, bool forc res->fees_collected = to_pay; res->fees_due = td::zero_refint(); balance -= std::move(to_pay); - } else if (acc_status == Account::acc_frozen && !force_collect && to_pay + due_payment < cfg.delete_due_limit) { + } else if (acc_status == Account::acc_frozen && !force_collect && to_pay < cfg.delete_due_limit) { // do not collect fee res->last_paid_updated = (res->is_special ? 0 : account.last_paid); res->fees_collected = res->fees_due = td::zero_refint(); @@ -907,7 +907,7 @@ bool Transaction::prepare_storage_phase(const StoragePhaseConfig& cfg, bool forc res->fees_due = std::move(to_pay) - std::move(balance.grams); balance.grams = td::zero_refint(); if (!res->is_special) { - auto total_due = res->fees_due + due_payment; + auto total_due = res->fees_due; switch (acc_status) { case Account::acc_uninit: case Account::acc_frozen: From 6b8994e45645b073139e2bf49fec49ae9fb67c5d Mon Sep 17 00:00:00 2001 From: EmelyanenkoK Date: Wed, 22 Nov 2023 15:41:02 +0300 Subject: [PATCH 45/50] Return zero instead of null in compute_storage_fees (#810) Co-authored-by: SpyCheese --- crypto/block/transaction.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crypto/block/transaction.cpp b/crypto/block/transaction.cpp index 23de6e29b..33f1c778e 100644 --- a/crypto/block/transaction.cpp +++ b/crypto/block/transaction.cpp @@ -652,7 +652,7 @@ td::RefInt256 StoragePrices::compute_storage_fees(ton::UnixTime now, const std:: const vm::CellStorageStat& storage_stat, ton::UnixTime last_paid, bool is_special, bool is_masterchain) { if (now <= last_paid || !last_paid || is_special || pricing.empty() || now <= pricing[0].valid_since) { - return {}; + return td::zero_refint(); } std::size_t n = pricing.size(), i = n; while (i && pricing[i - 1].valid_since > last_paid) { From d9580eab1bd1499ce90d801b19f164b4e85653bc Mon Sep 17 00:00:00 2001 From: "aleksej.paschenko" Date: Thu, 23 Nov 2023 14:01:45 +0300 Subject: [PATCH 46/50] Increase emulator capability to (de)serialize data (#811) --- emulator/emulator-extern.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/emulator/emulator-extern.cpp b/emulator/emulator-extern.cpp index 4b65dd066..9f06964e1 100644 --- a/emulator/emulator-extern.cpp +++ b/emulator/emulator-extern.cpp @@ -503,7 +503,7 @@ const char *tvm_emulator_run_get_method(void *tvm_emulator, int method_id, const auto emulator = static_cast(tvm_emulator); auto result = emulator->run_get_method(method_id, stack); - vm::FakeVmStateLimits fstate(1000); // limit recursive (de)serialization calls + vm::FakeVmStateLimits fstate(3500); // limit recursive (de)serialization calls vm::VmStateInterface::Guard guard(&fstate); vm::CellBuilder stack_cb; From 7262a66d210b843502353d6aa79406faa5eb9ccf Mon Sep 17 00:00:00 2001 From: EmelyanenkoK Date: Thu, 23 Nov 2023 18:17:44 +0300 Subject: [PATCH 47/50] Don't allow deploying a contract with public libs (#812) * Check account size limits in unpack_msg_state * Don't allow deploying a contract with public libs --------- Co-authored-by: SpyCheese --- crypto/block/transaction.cpp | 64 +++++++++++++++++++++---------- crypto/block/transaction.h | 5 ++- validator/impl/validate-query.cpp | 1 + 3 files changed, 48 insertions(+), 22 deletions(-) diff --git a/crypto/block/transaction.cpp b/crypto/block/transaction.cpp index 33f1c778e..62a48cab3 100644 --- a/crypto/block/transaction.cpp +++ b/crypto/block/transaction.cpp @@ -1290,11 +1290,13 @@ int output_actions_count(Ref list) { /** * Unpacks the message StateInit. * + * @param cfg The configuration for the compute phase. * @param lib_only If true, only unpack libraries from the state. + * @param forbid_public_libs Don't allow public libraries in initstate. * * @returns True if the unpacking is successful, false otherwise. */ -bool Transaction::unpack_msg_state(bool lib_only) { +bool Transaction::unpack_msg_state(const ComputePhaseConfig& cfg, bool lib_only, bool forbid_public_libs) { block::gen::StateInit::Record state; if (in_msg_state.is_null() || !tlb::unpack_cell(in_msg_state, state)) { LOG(ERROR) << "cannot unpack StateInit from an inbound message"; @@ -1318,9 +1320,22 @@ bool Transaction::unpack_msg_state(bool lib_only) { new_tock = z & 1; LOG(DEBUG) << "tick=" << new_tick << ", tock=" << new_tock; } + td::Ref old_code = new_code, old_data = new_data, old_library = new_library; new_code = state.code->prefetch_ref(); new_data = state.data->prefetch_ref(); new_library = state.library->prefetch_ref(); + auto size_limits = cfg.size_limits; + if (forbid_public_libs) { + size_limits.max_acc_public_libraries = 0; + } + auto S = check_state_limits(size_limits, false); + if (S.is_error()) { + LOG(DEBUG) << "Cannot unpack msg state: " << S.move_as_error(); + new_code = old_code; + new_data = old_data; + new_library = old_library; + return false; + } return true; } @@ -1408,7 +1423,9 @@ bool Transaction::prepare_compute_phase(const ComputePhaseConfig& cfg) { return true; } use_msg_state = true; - if (!(unpack_msg_state() && account.check_split_depth(new_split_depth))) { + bool forbid_public_libs = + acc_status == Account::acc_uninit && account.is_masterchain(); // Forbid for deploying, allow for unfreezing + if (!(unpack_msg_state(cfg, false, forbid_public_libs) && account.check_split_depth(new_split_depth))) { LOG(DEBUG) << "cannot unpack in_msg_state, or it has bad split_depth; cannot init account state"; cp.skip_reason = ComputePhase::sk_bad_state; return true; @@ -1423,7 +1440,7 @@ bool Transaction::prepare_compute_phase(const ComputePhaseConfig& cfg) { cp.skip_reason = in_msg_state.not_null() ? ComputePhase::sk_bad_state : ComputePhase::sk_no_state; return true; } else if (in_msg_state.not_null()) { - unpack_msg_state(true); // use only libraries + unpack_msg_state(cfg, true); // use only libraries } if (in_msg_extern && in_msg_state.not_null() && account.addr != in_msg_state->get_hash().bits()) { LOG(DEBUG) << "in_msg_state hash mismatch in external message"; @@ -1560,7 +1577,7 @@ bool Transaction::prepare_action_phase(const ActionPhaseConfig& cfg) { if (account.is_special) { return true; } - auto S = check_state_limits(cfg); + auto S = check_state_limits(cfg.size_limits); if (S.is_error()) { // Rollback changes to state, fail action phase LOG(INFO) << "Account state size exceeded limits: " << S.move_as_error(); @@ -2523,13 +2540,14 @@ static td::uint32 get_public_libraries_count(const td::Ref& libraries) * Checks that the new account state fits in the limits. * This function is not called for special accounts. * - * @param cfg The configuration for the action phase. + * @param size_limits The size limits configuration. + * @param update_storage_stat Store storage stat in the Transaction's CellStorageStat. * * @returns A `td::Status` indicating the result of the check. * - If the state limits are within the allowed range, returns OK. * - If the state limits exceed the maximum allowed range, returns an error. */ -td::Status Transaction::check_state_limits(const ActionPhaseConfig& cfg) { +td::Status Transaction::check_state_limits(const SizeLimitsConfig& size_limits, bool update_storage_stat) { auto cell_equal = [](const td::Ref& a, const td::Ref& b) -> bool { if (a.is_null()) { return b.is_null(); @@ -2543,13 +2561,13 @@ td::Status Transaction::check_state_limits(const ActionPhaseConfig& cfg) { cell_equal(account.library, new_library)) { return td::Status::OK(); } - // new_storage_stat is used here beause these stats will be reused in compute_state() - new_storage_stat.limit_cells = cfg.size_limits.max_acc_state_cells; - new_storage_stat.limit_bits = cfg.size_limits.max_acc_state_bits; + vm::CellStorageStat storage_stat; + storage_stat.limit_cells = size_limits.max_acc_state_cells; + storage_stat.limit_bits = size_limits.max_acc_state_bits; td::Timer timer; auto add_used_storage = [&](const td::Ref& cell) -> td::Status { if (cell.not_null()) { - TRY_RESULT(res, new_storage_stat.add_used_storage(cell)); + TRY_RESULT(res, storage_stat.add_used_storage(cell)); if (res.max_merkle_depth > max_allowed_merkle_depth) { return td::Status::Error("too big merkle depth"); } @@ -2563,19 +2581,24 @@ td::Status Transaction::check_state_limits(const ActionPhaseConfig& cfg) { LOG(INFO) << "Compute used storage took " << timer.elapsed() << "s"; } if (acc_status == Account::acc_active) { - new_storage_stat.clear_limit(); + storage_stat.clear_limit(); } else { - new_storage_stat.clear(); - } - if (new_storage_stat.cells > cfg.size_limits.max_acc_state_cells || - new_storage_stat.bits > cfg.size_limits.max_acc_state_bits) { - return td::Status::Error("account state is too big"); + storage_stat.clear(); + } + td::Status res; + if (storage_stat.cells > size_limits.max_acc_state_cells || storage_stat.bits > size_limits.max_acc_state_bits) { + res = td::Status::Error(PSTRING() << "account state is too big"); + } else if (account.is_masterchain() && !cell_equal(account.library, new_library) && + get_public_libraries_count(new_library) > size_limits.max_acc_public_libraries) { + res = td::Status::Error("too many public libraries"); + } else { + res = td::Status::OK(); } - if (account.is_masterchain() && !cell_equal(account.library, new_library) && - get_public_libraries_count(new_library) > cfg.size_limits.max_acc_public_libraries) { - return td::Status::Error("too many public libraries"); + if (update_storage_stat) { + // storage_stat will be reused in compute_state() + new_storage_stat = std::move(storage_stat); } - return td::Status::OK(); + return res; } /** @@ -3407,6 +3430,7 @@ td::Status FetchConfigParams::fetch_config_params( compute_phase_cfg->prev_blocks_info = std::move(prev_blocks_info); } compute_phase_cfg->suspended_addresses = config.get_suspended_addresses(now); + compute_phase_cfg->size_limits = size_limits; } { // compute action_phase_cfg diff --git a/crypto/block/transaction.h b/crypto/block/transaction.h index 6bb47fd99..d7cb95d1b 100644 --- a/crypto/block/transaction.h +++ b/crypto/block/transaction.h @@ -116,6 +116,7 @@ struct ComputePhaseConfig { int global_version = 0; Ref prev_blocks_info; std::unique_ptr suspended_addresses; + SizeLimitsConfig size_limits; int vm_log_verbosity = 0; ComputePhaseConfig(td::uint64 _gas_price = 0, td::uint64 _gas_limit = 0, td::uint64 _gas_credit = 0) @@ -372,7 +373,7 @@ struct Transaction { std::vector> compute_vm_libraries(const ComputePhaseConfig& cfg); bool prepare_compute_phase(const ComputePhaseConfig& cfg); bool prepare_action_phase(const ActionPhaseConfig& cfg); - td::Status check_state_limits(const ActionPhaseConfig& cfg); + td::Status check_state_limits(const SizeLimitsConfig& size_limits, bool update_storage_stat = true); bool prepare_bounce_phase(const ActionPhaseConfig& cfg); bool compute_state(); bool serialize(); @@ -404,7 +405,7 @@ struct Transaction { bool serialize_compute_phase(vm::CellBuilder& cb); bool serialize_action_phase(vm::CellBuilder& cb); bool serialize_bounce_phase(vm::CellBuilder& cb); - bool unpack_msg_state(bool lib_only = false); + bool unpack_msg_state(const ComputePhaseConfig& cfg, bool lib_only = false, bool forbid_public_libs = false); }; } // namespace transaction diff --git a/validator/impl/validate-query.cpp b/validator/impl/validate-query.cpp index b134e1b34..d9d032078 100644 --- a/validator/impl/validate-query.cpp +++ b/validator/impl/validate-query.cpp @@ -954,6 +954,7 @@ bool ValidateQuery::fetch_config_params() { compute_phase_cfg_.prev_blocks_info = prev_blocks_info.move_as_ok(); } compute_phase_cfg_.suspended_addresses = config_->get_suspended_addresses(now_); + compute_phase_cfg_.size_limits = size_limits; } { // compute action_phase_cfg From 51d5113395fe0f765592c844ced5ef1ac4d99f4c Mon Sep 17 00:00:00 2001 From: EmelyanenkoK Date: Mon, 27 Nov 2023 11:30:46 +0300 Subject: [PATCH 48/50] Add 2023.11 Update changelogs --- Changelog.md | 11 +++++++++++ recent_changelog.md | 13 +++++++++---- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/Changelog.md b/Changelog.md index fba3c5c5f..440866c26 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,3 +1,14 @@ +##2023.11 Update + +1. New TVM Functionality. (Disabled by default) +2. A series of emulator improvements: libraries support, higher max stack size, etc +3. A series of tonlib and tonlib-cli improvements: wallet-v4 support, getconfig, showtransactions, etc +4. Changes to public libraries: now contract can not publish more than 256 libraries (config parameter) and contracts can not be deployed with public libraries in initstate (instead contracts need explicitly publish all libraries) +5. Changes to storage due payment: now due payment is collected in Storage Phase, however for bouncable messages fee amount can not exceed balance of account prior to message. + + +Besides the work of the core team, this update is based on the efforts of @aleksej-paschenko (emulator improvements), @akifoq (security improvements), Trail of Bits auditor as well as all participants of [TEP-88 discussion](https://github.com/ton-blockchain/TEPs/pull/88). + ## 2023.10 Update 1. A series of additional security checks in node: special cells in action list, init state in external messages, peers data prior to saving to disk. 2. Human-readable timestamps in explorer diff --git a/recent_changelog.md b/recent_changelog.md index fe2c34b2d..5de7aed7e 100644 --- a/recent_changelog.md +++ b/recent_changelog.md @@ -1,5 +1,10 @@ -## 2023.06 Update -1. (disabled by default) New deflation mechanisms: partial fee burning and blackhole address -2. Storage-contract improvement +##2023.11 Update -Besides the work of the core team, this update is based on the efforts of @DearJohnDoe from Tonbyte (Storage-contract improvement). +1. New TVM Functionality. (Disabled by default) +2. A series of emulator improvements: libraries support, higher max stack size, etc +3. A series of tonlib and tonlib-cli improvements: wallet-v4 support, getconfig, showtransactions, etc +4. Changes to public libraries: now contract can not publish more than 256 libraries (config parameter) and contracts can not be deployed with public libraries in initstate (instead contracts need explicitly publish all libraries) +5. Changes to storage due payment: now due payment is collected in Storage Phase, however for bouncable messages fee amount can not exceed balance of account prior to message. + + +Besides the work of the core team, this update is based on the efforts of @aleksej-paschenko (emulator improvements), @akifoq (security improvements), Trail of Bits auditor as well as all participants of [TEP-88 discussion](https://github.com/ton-blockchain/TEPs/pull/88). From 7fcf26771748338038aec4e9ec543dc69afeb1fa Mon Sep 17 00:00:00 2001 From: EmelyanenkoK Date: Wed, 6 Dec 2023 19:34:01 +0300 Subject: [PATCH 49/50] Improve large OutMsgQueue clearance (#822) * Improve Collator::opt_msg_queue_cleanup, increase collator timeout * Disable importing ext msgs if queue is too big * Extend timeout in collator if previous block is too old --------- Co-authored-by: SpyCheese --- crypto/vm/dict.cpp | 20 +++++++----- crypto/vm/dict.h | 4 +-- tdutils/td/utils/Time.h | 6 ++++ validator/impl/collator.cpp | 58 +++++++++++++++++++++++++++++------ validator/validator-group.cpp | 33 ++++++++++++++++---- validator/validator-group.hpp | 9 ++++++ 6 files changed, 105 insertions(+), 25 deletions(-) diff --git a/crypto/vm/dict.cpp b/crypto/vm/dict.cpp index ac32b38f0..c79924d0e 100644 --- a/crypto/vm/dict.cpp +++ b/crypto/vm/dict.cpp @@ -21,6 +21,7 @@ #include "vm/cellslice.h" #include "vm/stack.hpp" #include "common/bitstring.h" +#include "td/utils/Random.h" #include "td/utils/bits.h" @@ -2007,7 +2008,7 @@ bool DictionaryFixed::combine_with(DictionaryFixed& dict2) { bool DictionaryFixed::dict_check_for_each(Ref dict, td::BitPtr key_buffer, int n, int total_key_len, const DictionaryFixed::foreach_func_t& foreach_func, - bool invert_first) const { + bool invert_first, bool shuffle) const { if (dict.is_null()) { return true; } @@ -2026,26 +2027,29 @@ bool DictionaryFixed::dict_check_for_each(Ref dict, td::BitPtr key_buffer, key_buffer += l + 1; if (l) { invert_first = false; - } else if (invert_first) { + } + bool invert = shuffle ? td::Random::fast(0, 1) == 1: invert_first; + if (invert) { std::swap(c1, c2); } - key_buffer[-1] = invert_first; + key_buffer[-1] = invert; // recursive check_foreach applied to both children - if (!dict_check_for_each(std::move(c1), key_buffer, n - l - 1, total_key_len, foreach_func)) { + if (!dict_check_for_each(std::move(c1), key_buffer, n - l - 1, total_key_len, foreach_func, false, shuffle)) { return false; } - key_buffer[-1] = !invert_first; - return dict_check_for_each(std::move(c2), key_buffer, n - l - 1, total_key_len, foreach_func); + key_buffer[-1] = !invert; + return dict_check_for_each(std::move(c2), key_buffer, n - l - 1, total_key_len, foreach_func, false, shuffle); } -bool DictionaryFixed::check_for_each(const foreach_func_t& foreach_func, bool invert_first) { +bool DictionaryFixed::check_for_each(const foreach_func_t& foreach_func, bool invert_first, bool shuffle) { force_validate(); if (is_empty()) { return true; } int key_len = get_key_bits(); unsigned char key_buffer[max_key_bytes]; - return dict_check_for_each(get_root_cell(), td::BitPtr{key_buffer}, key_len, key_len, foreach_func, invert_first); + return dict_check_for_each(get_root_cell(), td::BitPtr{key_buffer}, key_len, key_len, foreach_func, invert_first, + shuffle); } static inline bool set_bit(td::BitPtr ptr, bool value = true) { diff --git a/crypto/vm/dict.h b/crypto/vm/dict.h index 978f4d530..c4044963f 100644 --- a/crypto/vm/dict.h +++ b/crypto/vm/dict.h @@ -223,7 +223,7 @@ class DictionaryFixed : public DictionaryBase { int get_common_prefix(td::BitPtr buffer, unsigned buffer_len); bool cut_prefix_subdict(td::ConstBitPtr prefix, int prefix_len, bool remove_prefix = false); Ref extract_prefix_subdict_root(td::ConstBitPtr prefix, int prefix_len, bool remove_prefix = false); - bool check_for_each(const foreach_func_t& foreach_func, bool invert_first = false); + bool check_for_each(const foreach_func_t& foreach_func, bool invert_first = false, bool shuffle = false); int filter(filter_func_t check); bool combine_with(DictionaryFixed& dict2, const combine_func_t& combine_func, int mode = 0); bool combine_with(DictionaryFixed& dict2, const simple_combine_func_t& simple_combine_func, int mode = 0); @@ -292,7 +292,7 @@ class DictionaryFixed : public DictionaryBase { std::pair, bool> extract_prefix_subdict_internal(Ref dict, td::ConstBitPtr prefix, int prefix_len, bool remove_prefix = false) const; bool dict_check_for_each(Ref dict, td::BitPtr key_buffer, int n, int total_key_len, - const foreach_func_t& foreach_func, bool invert_first = false) const; + const foreach_func_t& foreach_func, bool invert_first = false, bool shuffle = false) const; std::pair, int> dict_filter(Ref dict, td::BitPtr key, int n, const filter_func_t& check_leaf, int& skip_rest) const; Ref dict_combine_with(Ref dict1, Ref dict2, td::BitPtr key_buffer, int n, int total_key_len, diff --git a/tdutils/td/utils/Time.h b/tdutils/td/utils/Time.h index 5151b818e..ece822d41 100644 --- a/tdutils/td/utils/Time.h +++ b/tdutils/td/utils/Time.h @@ -110,6 +110,7 @@ class Timestamp { } friend bool operator==(Timestamp a, Timestamp b); + friend Timestamp &operator+=(Timestamp &a, double b); private: double at_{0}; @@ -122,6 +123,11 @@ inline bool operator<(const Timestamp &a, const Timestamp &b) { return a.at() < b.at(); } +inline Timestamp &operator+=(Timestamp &a, double b) { + a.at_ += b; + return a; +} + template void store(const Timestamp ×tamp, StorerT &storer) { storer.store_binary(timestamp.at() - Time::now() + Clocks::system()); diff --git a/validator/impl/collator.cpp b/validator/impl/collator.cpp index b72292bb4..2030b345e 100644 --- a/validator/impl/collator.cpp +++ b/validator/impl/collator.cpp @@ -703,6 +703,11 @@ bool Collator::unpack_last_mc_state() { return fatal_error(limits.move_as_error()); } block_limits_ = limits.move_as_ok(); + if (!is_masterchain()) { + // block_limits_->bytes = {131072 / 3, 524288 / 3, 1048576 / 3}; + // block_limits_->gas = {2000000 / 3, 10000000 / 3, 20000000 / 3}; + block_limits_->lt_delta = {20, 180, 200}; + } LOG(DEBUG) << "block limits: bytes [" << block_limits_->bytes.underload() << ", " << block_limits_->bytes.soft() << ", " << block_limits_->bytes.hard() << "]"; LOG(DEBUG) << "block limits: gas [" << block_limits_->gas.underload() << ", " << block_limits_->gas.soft() << ", " @@ -1818,6 +1823,17 @@ bool Collator::init_utime() { CHECK(config_); // consider unixtime and lt from previous block(s) of the same shardchain prev_now_ = prev_state_utime_; + // Extend collator timeout if previous block is too old + td::Timestamp new_timeout = td::Timestamp::in(std::min(30.0, (td::Clocks::system() - (double)prev_now_) / 2)); + if (timeout < new_timeout) { + double add = new_timeout.at() - timeout.at(); + timeout = new_timeout; + queue_cleanup_timeout_ += add; + soft_timeout_ += add; + medium_timeout_ += add; + alarm_timestamp() = timeout; + } + auto prev = std::max(config_->utime, prev_now_); now_ = std::max(prev + 1, (unsigned)std::time(nullptr)); if (now_ > now_upper_limit_) { @@ -2170,18 +2186,30 @@ bool Collator::out_msg_queue_cleanup() { } } - auto res = out_msg_queue_->filter([&](vm::CellSlice& cs, td::ConstBitPtr key, int n) -> int { + auto queue_root = out_msg_queue_->get_root_cell(); + if (queue_root.is_null()) { + LOG(DEBUG) << "out_msg_queue is empty"; + return true; + } + auto old_out_msg_queue = std::make_unique(queue_root, 352, block::tlb::aug_OutMsgQueue); + + int deleted = 0; + int total = 0; + bool fail = false; + old_out_msg_queue->check_for_each([&](Ref value, td::ConstBitPtr key, int n) -> bool { + ++total; assert(n == 352); + vm::CellSlice& cs = value.write(); // LOG(DEBUG) << "key is " << key.to_hex(n); if (queue_cleanup_timeout_.is_in_past(td::Timestamp::now())) { LOG(WARNING) << "cleaning up outbound queue takes too long, ending"; outq_cleanup_partial_ = true; - return (1 << 30) + 1; // retain all remaining outbound queue entries including this one without processing + return false; // retain all remaining outbound queue entries including this one without processing } if (block_full_) { LOG(WARNING) << "BLOCK FULL while cleaning up outbound queue, cleanup completed only partially"; outq_cleanup_partial_ = true; - return (1 << 30) + 1; // retain all remaining outbound queue entries including this one without processing + return false; // retain all remaining outbound queue entries including this one without processing } block::EnqueuedMsgDescr enq_msg_descr; unsigned long long created_lt; @@ -2190,7 +2218,8 @@ bool Collator::out_msg_queue_cleanup() { && enq_msg_descr.check_key(key) // check key && enq_msg_descr.lt_ == created_lt)) { LOG(ERROR) << "cannot unpack EnqueuedMsg with key " << key.to_hex(n); - return -1; + fail = true; + return false; } LOG(DEBUG) << "scanning outbound message with (lt,hash)=(" << enq_msg_descr.lt_ << "," << enq_msg_descr.hash_.to_hex() << ") enqueued_lt=" << enq_msg_descr.enqueued_lt_; @@ -2208,22 +2237,29 @@ bool Collator::out_msg_queue_cleanup() { if (delivered) { LOG(DEBUG) << "outbound message with (lt,hash)=(" << enq_msg_descr.lt_ << "," << enq_msg_descr.hash_.to_hex() << ") enqueued_lt=" << enq_msg_descr.enqueued_lt_ << " has been already delivered, dequeueing"; + ++deleted; + out_msg_queue_->lookup_delete_with_extra(key, n); if (!dequeue_message(std::move(enq_msg_descr.msg_env_), deliver_lt)) { fatal_error(PSTRING() << "cannot dequeue outbound message with (lt,hash)=(" << enq_msg_descr.lt_ << "," << enq_msg_descr.hash_.to_hex() << ") by inserting a msg_export_deq record"); - return -1; + fail = true; + return false; } register_out_msg_queue_op(); if (!block_limit_status_->fits(block::ParamLimits::cl_normal)) { block_full_ = true; } } - return !delivered; - }); - LOG(DEBUG) << "deleted " << res << " messages from out_msg_queue"; - if (res < 0) { + return true; + }, false, true /* random order */); + LOG(INFO) << "deleted " << deleted << " messages from out_msg_queue, processed " << total << " messages in total"; + if (fail) { return fatal_error("error scanning/updating OutMsgQueue"); } + if (outq_cleanup_partial_ || total > 8000) { + LOG(INFO) << "out_msg_queue too big, skipping importing external messages"; + skip_extmsg_ = true; + } auto rt = out_msg_queue_->get_root(); if (verbosity >= 2) { std::cerr << "new out_msg_queue is "; @@ -3277,6 +3313,10 @@ bool Collator::process_inbound_external_messages() { LOG(INFO) << "skipping processing of inbound external messages"; return true; } + if (out_msg_queue_->get_root_cell().not_null() && out_msg_queue_->get_root_cell()->get_depth() > 12) { + LOG(INFO) << "skipping processing of inbound external messages: out msg queue is too big"; + return true; + } bool full = !block_limit_status_->fits(block::ParamLimits::cl_soft); for (auto& ext_msg_pair : ext_msg_list_) { if (full) { diff --git a/validator/validator-group.cpp b/validator/validator-group.cpp index b4c38e514..c1f4f38a9 100644 --- a/validator/validator-group.cpp +++ b/validator/validator-group.cpp @@ -78,6 +78,17 @@ void ValidatorGroup::validate_block_candidate(td::uint32 round_id, BlockCandidat promise.set_error(td::Status::Error(ErrorCode::notready, "too old")); return; } + + auto next_block_id = create_next_block_id(block.id.root_hash, block.id.file_hash); + block.id = next_block_id; + + CacheKey cache_key = block_to_cache_key(block); + auto it = approved_candidates_cache_.find(cache_key); + if (it != approved_candidates_cache_.end()) { + promise.set_result(it->second); + return; + } + auto P = td::PromiseCreator::lambda([SelfId = actor_id(this), round_id, block = block.clone(), promise = std::move(promise)](td::Result R) mutable { if (R.is_error()) { @@ -93,24 +104,32 @@ void ValidatorGroup::validate_block_candidate(td::uint32 round_id, BlockCandidat td::Timestamp::in(0.1)); } else { auto v = R.move_as_ok(); - v.visit(td::overloaded([&](UnixTime ts) { promise.set_result(ts); }, - [&](CandidateReject reject) { - promise.set_error(td::Status::Error(ErrorCode::protoviolation, - PSTRING() << "bad candidate: " << reject.reason)); - })); + v.visit(td::overloaded( + [&](UnixTime ts) { + td::actor::send_closure(SelfId, &ValidatorGroup::update_approve_cache, block_to_cache_key(block), + ts); + promise.set_result(ts); + }, + [&](CandidateReject reject) { + promise.set_error( + td::Status::Error(ErrorCode::protoviolation, PSTRING() << "bad candidate: " << reject.reason)); + })); } }); if (!started_) { P.set_error(td::Status::Error(ErrorCode::notready, "validator group not started")); return; } - auto next_block_id = create_next_block_id(block.id.root_hash, block.id.file_hash); VLOG(VALIDATOR_DEBUG) << "validating block candidate " << next_block_id; block.id = next_block_id; run_validate_query(shard_, min_ts_, min_masterchain_block_id_, prev_block_ids_, std::move(block), validator_set_, manager_, td::Timestamp::in(15.0), std::move(P)); } +void ValidatorGroup::update_approve_cache(CacheKey key, UnixTime value) { + approved_candidates_cache_[key] = value; +} + void ValidatorGroup::accept_block_candidate(td::uint32 round_id, PublicKeyHash src, td::BufferSlice block_data, RootHash root_hash, FileHash file_hash, std::vector signatures, @@ -155,6 +174,7 @@ void ValidatorGroup::accept_block_candidate(td::uint32 round_id, PublicKeyHash s std::move(approve_sig_set), src == local_id_, manager_, std::move(P)); prev_block_ids_ = std::vector{next_block_id}; cached_collated_block_ = nullptr; + approved_candidates_cache_.clear(); } void ValidatorGroup::retry_accept_block_query(BlockIdExt block_id, td::Ref block, @@ -310,6 +330,7 @@ void ValidatorGroup::start(std::vector prev, BlockIdExt min_masterch min_masterchain_block_id_ = min_masterchain_block_id; min_ts_ = min_ts; cached_collated_block_ = nullptr; + approved_candidates_cache_.clear(); started_ = true; if (init_) { diff --git a/validator/validator-group.hpp b/validator/validator-group.hpp index da9193ba0..a158bc43d 100644 --- a/validator/validator-group.hpp +++ b/validator/validator-group.hpp @@ -126,6 +126,15 @@ class ValidatorGroup : public td::actor::Actor { std::shared_ptr cached_collated_block_; void generated_block_candidate(std::shared_ptr cache, td::Result R); + + typedef std::tuple CacheKey; + std::map approved_candidates_cache_; + + void update_approve_cache(CacheKey key, UnixTime value); + + static CacheKey block_to_cache_key(const BlockCandidate& block) { + return std::make_tuple(block.pubkey.as_bits256(), block.id, sha256_bits256(block.data), block.collated_file_hash); + } }; } // namespace validator From 9b6d699c21a190be0cea7a38effe97f831035723 Mon Sep 17 00:00:00 2001 From: EmelyanenkoK Date: Fri, 8 Dec 2023 14:20:17 +0300 Subject: [PATCH 50/50] Cache recent block states and adjust timeouts (#823) * Add parameter --celldb-compress-depth to speed up celldb * Fix collator timeout * Add block_state_cache * Adjust state cache ttl * Don't merge shards when queue is too big * Decrease lt limit if previous block is too old --------- Co-authored-by: SpyCheese --- crypto/vm/db/CellStorage.cpp | 43 +++++++++++--- crypto/vm/db/CellStorage.h | 6 +- crypto/vm/db/DynamicBagOfCellsDb.cpp | 12 +++- crypto/vm/db/DynamicBagOfCellsDb.h | 3 + validator-engine/validator-engine.cpp | 6 ++ validator-engine/validator-engine.hpp | 4 ++ validator/db/celldb.cpp | 82 +++++++++++++++++++++++++-- validator/db/celldb.hpp | 21 ++++++- validator/db/rootdb.cpp | 2 +- validator/db/rootdb.hpp | 7 ++- validator/fabric.h | 4 +- validator/impl/collator-impl.h | 1 + validator/impl/collator.cpp | 16 +++--- validator/impl/fabric.cpp | 5 +- validator/manager-disk.cpp | 2 +- validator/manager-hardfork.cpp | 2 +- validator/manager.cpp | 36 +++++++++++- validator/manager.hpp | 6 ++ validator/validator-options.hpp | 7 +++ validator/validator.h | 2 + 20 files changed, 230 insertions(+), 37 deletions(-) diff --git a/crypto/vm/db/CellStorage.cpp b/crypto/vm/db/CellStorage.cpp index a1b7365b5..acc55898a 100644 --- a/crypto/vm/db/CellStorage.cpp +++ b/crypto/vm/db/CellStorage.cpp @@ -27,16 +27,25 @@ namespace vm { namespace { class RefcntCellStorer { public: - RefcntCellStorer(td::int32 refcnt, const DataCell &cell) : refcnt_(refcnt), cell_(cell) { + RefcntCellStorer(td::int32 refcnt, const td::Ref &cell, bool as_boc) + : refcnt_(refcnt), cell_(cell), as_boc_(as_boc) { } template void store(StorerT &storer) const { using td::store; + if (as_boc_) { + td::int32 tag = -1; + store(tag, storer); + store(refcnt_, storer); + td::BufferSlice data = vm::std_boc_serialize(cell_).move_as_ok(); + storer.store_slice(data); + return; + } store(refcnt_, storer); - store(cell_, storer); - for (unsigned i = 0; i < cell_.size_refs(); i++) { - auto cell = cell_.get_ref(i); + store(*cell_, storer); + for (unsigned i = 0; i < cell_->size_refs(); i++) { + auto cell = cell_->get_ref(i); auto level_mask = cell->get_level_mask(); auto level = level_mask.get_level(); td::uint8 x = static_cast(level_mask.get_mask()); @@ -60,7 +69,8 @@ class RefcntCellStorer { private: td::int32 refcnt_; - const DataCell &cell_; + td::Ref cell_; + bool as_boc_; }; class RefcntCellParser { @@ -69,11 +79,17 @@ class RefcntCellParser { } td::int32 refcnt; Ref cell; + bool stored_boc_; template void parse(ParserT &parser, ExtCellCreator &ext_cell_creator) { using ::td::parse; parse(refcnt, parser); + stored_boc_ = false; + if (refcnt == -1) { + stored_boc_ = true; + parse(refcnt, parser); + } if (!need_data_) { return; } @@ -81,6 +97,12 @@ class RefcntCellParser { TRY_STATUS(parser.get_status()); auto size = parser.get_left_len(); td::Slice data = parser.template fetch_string_raw(size); + if (stored_boc_) { + TRY_RESULT(boc, vm::std_boc_deserialize(data)); + TRY_RESULT(loaded_cell, boc->load_cell()); + cell = std::move(loaded_cell.data_cell); + return td::Status::OK(); + } CellSerializationInfo info; auto cell_data = data; TRY_STATUS(info.init(cell_data, 0 /*ref_byte_size*/)); @@ -122,7 +144,8 @@ class RefcntCellParser { }; } // namespace -CellLoader::CellLoader(std::shared_ptr reader) : reader_(std::move(reader)) { +CellLoader::CellLoader(std::shared_ptr reader, std::function on_load_callback) + : reader_(std::move(reader)), on_load_callback_(std::move(on_load_callback)) { CHECK(reader_); } @@ -145,7 +168,11 @@ td::Result CellLoader::load(td::Slice hash, bool need_da res.refcnt_ = refcnt_cell.refcnt; res.cell_ = std::move(refcnt_cell.cell); + res.stored_boc_ = refcnt_cell.stored_boc_; //CHECK(res.cell_->get_hash() == hash); + if (on_load_callback_) { + on_load_callback_(res); + } return res; } @@ -157,7 +184,7 @@ td::Status CellStorer::erase(td::Slice hash) { return kv_.erase(hash); } -td::Status CellStorer::set(td::int32 refcnt, const DataCell &cell) { - return kv_.set(cell.get_hash().as_slice(), td::serialize(RefcntCellStorer(refcnt, cell))); +td::Status CellStorer::set(td::int32 refcnt, const td::Ref &cell, bool as_boc) { + return kv_.set(cell->get_hash().as_slice(), td::serialize(RefcntCellStorer(refcnt, cell, as_boc))); } } // namespace vm diff --git a/crypto/vm/db/CellStorage.h b/crypto/vm/db/CellStorage.h index b705b5311..3106ee16d 100644 --- a/crypto/vm/db/CellStorage.h +++ b/crypto/vm/db/CellStorage.h @@ -45,19 +45,21 @@ class CellLoader { Ref cell_; td::int32 refcnt_{0}; + bool stored_boc_{false}; }; - CellLoader(std::shared_ptr reader); + CellLoader(std::shared_ptr reader, std::function on_load_callback = {}); td::Result load(td::Slice hash, bool need_data, ExtCellCreator &ext_cell_creator); private: std::shared_ptr reader_; + std::function on_load_callback_; }; class CellStorer { public: CellStorer(KeyValue &kv); td::Status erase(td::Slice hash); - td::Status set(td::int32 refcnt, const DataCell &cell); + td::Status set(td::int32 refcnt, const td::Ref &cell, bool as_boc); private: KeyValue &kv_; diff --git a/crypto/vm/db/DynamicBagOfCellsDb.cpp b/crypto/vm/db/DynamicBagOfCellsDb.cpp index 0d1d099fb..1aa4e0f56 100644 --- a/crypto/vm/db/DynamicBagOfCellsDb.cpp +++ b/crypto/vm/db/DynamicBagOfCellsDb.cpp @@ -210,6 +210,14 @@ class DynamicBagOfCellsDbImpl : public DynamicBagOfCellsDb, private ExtCellCreat return td::Status::OK(); } + void set_celldb_compress_depth(td::uint32 value) override { + celldb_compress_depth_ = value; + } + + vm::ExtCellCreator& as_ext_cell_creator() override { + return *this; + } + private: std::unique_ptr loader_; std::vector> to_inc_; @@ -217,6 +225,7 @@ class DynamicBagOfCellsDbImpl : public DynamicBagOfCellsDb, private ExtCellCreat CellHashTable hash_table_; std::vector visited_; Stats stats_diff_; + td::uint32 celldb_compress_depth_{0}; static td::NamedThreadSafeCounter::CounterRef get_thread_safe_counter() { static auto res = td::NamedThreadSafeCounter::get_default().get_counter("DynamicBagOfCellsDb"); @@ -443,7 +452,8 @@ class DynamicBagOfCellsDbImpl : public DynamicBagOfCellsDb, private ExtCellCreat guard.dismiss(); } else { auto loaded_cell = info.cell->load_cell().move_as_ok(); - storer.set(info.db_refcnt, *loaded_cell.data_cell); + storer.set(info.db_refcnt, loaded_cell.data_cell, + loaded_cell.data_cell->get_depth() == celldb_compress_depth_ && celldb_compress_depth_ != 0); info.in_db = true; } } diff --git a/crypto/vm/db/DynamicBagOfCellsDb.h b/crypto/vm/db/DynamicBagOfCellsDb.h index 3569208c0..fa2b44d21 100644 --- a/crypto/vm/db/DynamicBagOfCellsDb.h +++ b/crypto/vm/db/DynamicBagOfCellsDb.h @@ -64,6 +64,9 @@ class DynamicBagOfCellsDb { // restart with new loader will also reset stats_diff virtual td::Status set_loader(std::unique_ptr loader) = 0; + virtual void set_celldb_compress_depth(td::uint32 value) = 0; + virtual vm::ExtCellCreator& as_ext_cell_creator() = 0; + static std::unique_ptr create(); class AsyncExecutor { diff --git a/validator-engine/validator-engine.cpp b/validator-engine/validator-engine.cpp index 23cc93473..273274930 100644 --- a/validator-engine/validator-engine.cpp +++ b/validator-engine/validator-engine.cpp @@ -1363,6 +1363,7 @@ td::Status ValidatorEngine::load_global_config() { if (!session_logs_file_.empty()) { validator_options_.write().set_session_logs_file(session_logs_file_); } + validator_options_.write().set_celldb_compress_depth(celldb_compress_depth_); std::vector h; for (auto &x : conf.validator_->hardforks_) { @@ -3761,6 +3762,11 @@ int main(int argc, char *argv[]) { acts.push_back([&x, at]() { td::actor::send_closure(x, &ValidatorEngine::schedule_shutdown, (double)at); }); return td::Status::OK(); }); + p.add_checked_option('\0', "celldb-compress-depth", "(default: 0)", [&](td::Slice arg) { + TRY_RESULT(value, td::to_integer_safe(arg)); + acts.push_back([&x, value]() { td::actor::send_closure(x, &ValidatorEngine::set_celldb_compress_depth, value); }); + return td::Status::OK(); + }); auto S = p.run(argc, argv); if (S.is_error()) { LOG(ERROR) << "failed to parse options: " << S.move_as_error(); diff --git a/validator-engine/validator-engine.hpp b/validator-engine/validator-engine.hpp index 2d9663513..ebcd60c66 100644 --- a/validator-engine/validator-engine.hpp +++ b/validator-engine/validator-engine.hpp @@ -200,6 +200,7 @@ class ValidatorEngine : public td::actor::Actor { double sync_ttl_ = 0; double archive_ttl_ = 0; double key_proof_ttl_ = 0; + td::uint32 celldb_compress_depth_ = 0; bool read_config_ = false; bool started_keyring_ = false; bool started_ = false; @@ -257,6 +258,9 @@ class ValidatorEngine : public td::actor::Actor { keys_[key.compute_short_id()] = key; } void schedule_shutdown(double at); + void set_celldb_compress_depth(td::uint32 value) { + celldb_compress_depth_ = value; + } void start_up() override; ValidatorEngine() { } diff --git a/validator/db/celldb.cpp b/validator/db/celldb.cpp index 3b2a34f30..6a2b46992 100644 --- a/validator/db/celldb.cpp +++ b/validator/db/celldb.cpp @@ -62,16 +62,29 @@ void CellDbBase::execute_sync(std::function f) { f(); } -CellDbIn::CellDbIn(td::actor::ActorId root_db, td::actor::ActorId parent, std::string path) - : root_db_(root_db), parent_(parent), path_(std::move(path)) { +CellDbIn::CellDbIn(td::actor::ActorId root_db, td::actor::ActorId parent, std::string path, + td::Ref opts) + : root_db_(root_db), parent_(parent), path_(std::move(path)), opts_(opts) { } void CellDbIn::start_up() { + on_load_callback_ = [db = actor_id(this), + compress_depth = opts_->get_celldb_compress_depth()](const vm::CellLoader::LoadResult& res) { + if (res.cell_.is_null()) { + return; + } + bool expected_stored_boc = res.cell_->get_depth() == compress_depth && compress_depth != 0; + if (expected_stored_boc != res.stored_boc_) { + td::actor::send_closure(db, &CellDbIn::migrate_cell, td::Bits256{res.cell_->get_hash().bits()}); + } + }; + CellDbBase::start_up(); cell_db_ = std::make_shared(td::RocksDb::open(path_).move_as_ok()); boc_ = vm::DynamicBagOfCellsDb::create(); - boc_->set_loader(std::make_unique(cell_db_->snapshot())).ensure(); + boc_->set_celldb_compress_depth(opts_->get_celldb_compress_depth()); + boc_->set_loader(std::make_unique(cell_db_->snapshot(), on_load_callback_)).ensure(); td::actor::send_closure(parent_, &CellDb::update_snapshot, cell_db_->snapshot()); alarm_timestamp() = td::Timestamp::in(10.0); @@ -129,7 +142,7 @@ void CellDbIn::store_cell(BlockIdExt block_id, td::Ref cell, td::Promi set_block(key_hash, std::move(D)); cell_db_->commit_write_batch().ensure(); - boc_->set_loader(std::make_unique(cell_db_->snapshot())).ensure(); + boc_->set_loader(std::make_unique(cell_db_->snapshot(), on_load_callback_)).ensure(); td::actor::send_closure(parent_, &CellDb::update_snapshot, cell_db_->snapshot()); promise.set_result(boc_->load_cell(cell->get_hash().as_slice())); @@ -140,6 +153,9 @@ void CellDbIn::get_cell_db_reader(td::Promise> } void CellDbIn::alarm() { + if (migrate_after_ && migrate_after_.is_in_past()) { + migrate_cells(); + } auto E = get_block(get_empty_key_hash()).move_as_ok(); auto N = get_block(E.next).move_as_ok(); if (N.is_empty()) { @@ -220,7 +236,7 @@ void CellDbIn::gc_cont2(BlockHandle handle) { cell_db_->commit_write_batch().ensure(); alarm_timestamp() = td::Timestamp::now(); - boc_->set_loader(std::make_unique(cell_db_->snapshot())).ensure(); + boc_->set_loader(std::make_unique(cell_db_->snapshot(), on_load_callback_)).ensure(); td::actor::send_closure(parent_, &CellDb::update_snapshot, cell_db_->snapshot()); DCHECK(get_block(key_hash).is_error()); @@ -273,6 +289,49 @@ void CellDbIn::set_block(KeyHash key_hash, DbEntry e) { cell_db_->set(td::as_slice(key), e.release()).ensure(); } +void CellDbIn::migrate_cell(td::Bits256 hash) { + cells_to_migrate_.insert(hash); + if (cells_to_migrate_.size() >= 32) { + migrate_cells(); + } else if (!migrate_after_) { + migrate_after_ = td::Timestamp::in(1.0); + } +} + +void CellDbIn::migrate_cells() { + if (cells_to_migrate_.empty()) { + return; + } + vm::CellStorer stor{*cell_db_}; + auto loader = std::make_unique(cell_db_->snapshot()); + boc_->set_loader(std::make_unique(*loader)).ensure(); + cell_db_->begin_write_batch().ensure(); + td::uint32 cnt = 0; + for (const auto& hash : cells_to_migrate_) { + auto R = loader->load(hash.as_slice(), true, boc_->as_ext_cell_creator()); + if (R.is_error()) { + continue; + } + if (R.ok().status == vm::CellLoader::LoadResult::NotFound) { + continue; + } + bool expected_stored_boc = + R.ok().cell_->get_depth() == opts_->get_celldb_compress_depth() && opts_->get_celldb_compress_depth() != 0; + if (expected_stored_boc != R.ok().stored_boc_) { + ++cnt; + stor.set(R.ok().refcnt(), R.ok().cell_, expected_stored_boc).ensure(); + } + } + cells_to_migrate_.clear(); + if (cnt > 0) { + LOG(DEBUG) << "Migrated " << cnt << " cells"; + } + cell_db_->commit_write_batch().ensure(); + boc_->set_loader(std::make_unique(cell_db_->snapshot(), on_load_callback_)).ensure(); + td::actor::send_closure(parent_, &CellDb::update_snapshot, cell_db_->snapshot()); + migrate_after_ = td::Timestamp::never(); +} + void CellDb::load_cell(RootHash hash, td::Promise> promise) { if (!started_) { td::actor::send_closure(cell_db_, &CellDbIn::load_cell, hash, std::move(promise)); @@ -300,7 +359,18 @@ void CellDb::get_cell_db_reader(td::Promise> p void CellDb::start_up() { CellDbBase::start_up(); boc_ = vm::DynamicBagOfCellsDb::create(); - cell_db_ = td::actor::create_actor("celldbin", root_db_, actor_id(this), path_); + boc_->set_celldb_compress_depth(opts_->get_celldb_compress_depth()); + cell_db_ = td::actor::create_actor("celldbin", root_db_, actor_id(this), path_, opts_); + on_load_callback_ = [db = cell_db_.get(), + compress_depth = opts_->get_celldb_compress_depth()](const vm::CellLoader::LoadResult& res) { + if (res.cell_.is_null()) { + return; + } + bool expected_stored_boc = res.cell_->get_depth() == compress_depth && compress_depth != 0; + if (expected_stored_boc != res.stored_boc_) { + td::actor::send_closure(db, &CellDbIn::migrate_cell, td::Bits256{res.cell_->get_hash().bits()}); + } + }; } CellDbIn::DbEntry::DbEntry(tl_object_ptr entry) diff --git a/validator/db/celldb.hpp b/validator/db/celldb.hpp index a05e9ddba..6545d5970 100644 --- a/validator/db/celldb.hpp +++ b/validator/db/celldb.hpp @@ -25,6 +25,7 @@ #include "ton/ton-types.h" #include "interfaces/block-handle.h" #include "auto/tl/ton_api.h" +#include "validator.h" namespace ton { @@ -53,7 +54,10 @@ class CellDbIn : public CellDbBase { void store_cell(BlockIdExt block_id, td::Ref cell, td::Promise> promise); void get_cell_db_reader(td::Promise> promise); - CellDbIn(td::actor::ActorId root_db, td::actor::ActorId parent, std::string path); + void migrate_cell(td::Bits256 hash); + + CellDbIn(td::actor::ActorId root_db, td::actor::ActorId parent, std::string path, + td::Ref opts); void start_up() override; void alarm() override; @@ -89,13 +93,20 @@ class CellDbIn : public CellDbBase { void gc_cont2(BlockHandle handle); void skip_gc(); + void migrate_cells(); + td::actor::ActorId root_db_; td::actor::ActorId parent_; std::string path_; + td::Ref opts_; std::unique_ptr boc_; std::shared_ptr cell_db_; + + std::function on_load_callback_; + std::set cells_to_migrate_; + td::Timestamp migrate_after_ = td::Timestamp::never(); }; class CellDb : public CellDbBase { @@ -104,11 +115,12 @@ class CellDb : public CellDbBase { void store_cell(BlockIdExt block_id, td::Ref cell, td::Promise> promise); void update_snapshot(std::unique_ptr snapshot) { started_ = true; - boc_->set_loader(std::make_unique(std::move(snapshot))).ensure(); + boc_->set_loader(std::make_unique(std::move(snapshot), on_load_callback_)).ensure(); } void get_cell_db_reader(td::Promise> promise); - CellDb(td::actor::ActorId root_db, std::string path) : root_db_(root_db), path_(path) { + CellDb(td::actor::ActorId root_db, std::string path, td::Ref opts) + : root_db_(root_db), path_(path), opts_(opts) { } void start_up() override; @@ -116,11 +128,14 @@ class CellDb : public CellDbBase { private: td::actor::ActorId root_db_; std::string path_; + td::Ref opts_; td::actor::ActorOwn cell_db_; std::unique_ptr boc_; bool started_ = false; + + std::function on_load_callback_; }; } // namespace validator diff --git a/validator/db/rootdb.cpp b/validator/db/rootdb.cpp index a7a1becf3..601b07c1e 100644 --- a/validator/db/rootdb.cpp +++ b/validator/db/rootdb.cpp @@ -397,7 +397,7 @@ void RootDb::get_hardforks(td::Promise> promise) { } void RootDb::start_up() { - cell_db_ = td::actor::create_actor("celldb", actor_id(this), root_path_ + "/celldb/"); + cell_db_ = td::actor::create_actor("celldb", actor_id(this), root_path_ + "/celldb/", opts_); state_db_ = td::actor::create_actor("statedb", actor_id(this), root_path_ + "/state/"); static_files_db_ = td::actor::create_actor("staticfilesdb", actor_id(this), root_path_ + "/static/"); archive_db_ = td::actor::create_actor("archive", actor_id(this), root_path_); diff --git a/validator/db/rootdb.hpp b/validator/db/rootdb.hpp index 9b0d52a6b..598defcb4 100644 --- a/validator/db/rootdb.hpp +++ b/validator/db/rootdb.hpp @@ -26,6 +26,7 @@ #include "statedb.hpp" #include "staticfilesdb.hpp" #include "archive-manager.hpp" +#include "validator.h" namespace ton { @@ -34,8 +35,9 @@ namespace validator { class RootDb : public Db { public: enum class Flags : td::uint32 { f_started = 1, f_ready = 2, f_switched = 4, f_archived = 8 }; - RootDb(td::actor::ActorId validator_manager, std::string root_path) - : validator_manager_(validator_manager), root_path_(std::move(root_path)) { + RootDb(td::actor::ActorId validator_manager, std::string root_path, + td::Ref opts) + : validator_manager_(validator_manager), root_path_(std::move(root_path)), opts_(opts) { } void start_up() override; @@ -138,6 +140,7 @@ class RootDb : public Db { td::actor::ActorId validator_manager_; std::string root_path_; + td::Ref opts_; td::actor::ActorOwn cell_db_; td::actor::ActorOwn state_db_; diff --git a/validator/fabric.h b/validator/fabric.h index 58f0647b7..326b17aec 100644 --- a/validator/fabric.h +++ b/validator/fabric.h @@ -20,12 +20,14 @@ #include "interfaces/validator-manager.h" #include "interfaces/db.h" +#include "validator.h" namespace ton { namespace validator { -td::actor::ActorOwn create_db_actor(td::actor::ActorId manager, std::string db_root_); +td::actor::ActorOwn create_db_actor(td::actor::ActorId manager, std::string db_root_, + td::Ref opts); td::actor::ActorOwn create_liteserver_cache_actor(td::actor::ActorId manager, std::string db_root); diff --git a/validator/impl/collator-impl.h b/validator/impl/collator-impl.h index c2088f47b..b30639930 100644 --- a/validator/impl/collator-impl.h +++ b/validator/impl/collator-impl.h @@ -159,6 +159,7 @@ class Collator final : public td::actor::Actor { bool report_version_{false}; bool skip_topmsgdescr_{false}; bool skip_extmsg_{false}; + bool queue_too_big_{false}; bool short_dequeue_records_{false}; td::uint64 overload_history_{0}, underload_history_{0}; td::uint64 block_size_estimate_{}; diff --git a/validator/impl/collator.cpp b/validator/impl/collator.cpp index 2030b345e..2e4dfa1d2 100644 --- a/validator/impl/collator.cpp +++ b/validator/impl/collator.cpp @@ -703,9 +703,7 @@ bool Collator::unpack_last_mc_state() { return fatal_error(limits.move_as_error()); } block_limits_ = limits.move_as_ok(); - if (!is_masterchain()) { - // block_limits_->bytes = {131072 / 3, 524288 / 3, 1048576 / 3}; - // block_limits_->gas = {2000000 / 3, 10000000 / 3, 20000000 / 3}; + if (now_ > prev_now_ + 15 && block_limits_->lt_delta.hard() > 200) { block_limits_->lt_delta = {20, 180, 200}; } LOG(DEBUG) << "block limits: bytes [" << block_limits_->bytes.underload() << ", " << block_limits_->bytes.soft() @@ -1828,9 +1826,6 @@ bool Collator::init_utime() { if (timeout < new_timeout) { double add = new_timeout.at() - timeout.at(); timeout = new_timeout; - queue_cleanup_timeout_ += add; - soft_timeout_ += add; - medium_timeout_ += add; alarm_timestamp() = timeout; } @@ -2259,6 +2254,7 @@ bool Collator::out_msg_queue_cleanup() { if (outq_cleanup_partial_ || total > 8000) { LOG(INFO) << "out_msg_queue too big, skipping importing external messages"; skip_extmsg_ = true; + queue_too_big_ = true; } auto rt = out_msg_queue_->get_root(); if (verbosity >= 2) { @@ -4170,8 +4166,12 @@ bool Collator::check_block_overload() { << " size_estimate=" << block_size_estimate_; auto cl = block_limit_status_->classify(); if (cl <= block::ParamLimits::cl_underload) { - underload_history_ |= 1; - LOG(INFO) << "block is underloaded"; + if (queue_too_big_) { + LOG(INFO) << "block is underloaded, but don't set underload history because out msg queue is big"; + } else { + underload_history_ |= 1; + LOG(INFO) << "block is underloaded"; + } } else if (cl >= block::ParamLimits::cl_soft) { overload_history_ |= 1; LOG(INFO) << "block is overloaded (category " << cl << ")"; diff --git a/validator/impl/fabric.cpp b/validator/impl/fabric.cpp index 0131fff7d..23a03482c 100644 --- a/validator/impl/fabric.cpp +++ b/validator/impl/fabric.cpp @@ -39,8 +39,9 @@ namespace ton { namespace validator { -td::actor::ActorOwn create_db_actor(td::actor::ActorId manager, std::string db_root_) { - return td::actor::create_actor("db", manager, db_root_); +td::actor::ActorOwn create_db_actor(td::actor::ActorId manager, std::string db_root_, + td::Ref opts) { + return td::actor::create_actor("db", manager, db_root_, opts); } td::actor::ActorOwn create_liteserver_cache_actor(td::actor::ActorId manager, diff --git a/validator/manager-disk.cpp b/validator/manager-disk.cpp index 8818c86a2..3717d7b09 100644 --- a/validator/manager-disk.cpp +++ b/validator/manager-disk.cpp @@ -901,7 +901,7 @@ void ValidatorManagerImpl::send_top_shard_block_description(td::Ref R) { R.ensure(); diff --git a/validator/manager-hardfork.cpp b/validator/manager-hardfork.cpp index 80a64d25f..e290f6359 100644 --- a/validator/manager-hardfork.cpp +++ b/validator/manager-hardfork.cpp @@ -549,7 +549,7 @@ void ValidatorManagerImpl::register_block_handle(BlockHandle handle, td::Promise } void ValidatorManagerImpl::start_up() { - db_ = create_db_actor(actor_id(this), db_root_); + db_ = create_db_actor(actor_id(this), db_root_, opts_); } void ValidatorManagerImpl::try_get_static_file(FileHash file_hash, td::Promise promise) { diff --git a/validator/manager.cpp b/validator/manager.cpp index e22616eac..8caed0f69 100644 --- a/validator/manager.cpp +++ b/validator/manager.cpp @@ -585,6 +585,12 @@ void ValidatorManagerImpl::run_ext_query(td::BufferSlice data, td::Promise> promise) { + auto it0 = block_state_cache_.find(handle->id()); + if (it0 != block_state_cache_.end()) { + it0->second.ttl_ = td::Timestamp::in(30.0); + promise.set_result(it0->second.state_); + return; + } auto it = wait_state_.find(handle->id()); if (it == wait_state_.end()) { auto P = td::PromiseCreator::lambda([SelfId = actor_id(this), handle](td::Result> R) { @@ -988,6 +994,9 @@ void ValidatorManagerImpl::get_block_by_seqno_from_db(AccountIdPrefixFull accoun } void ValidatorManagerImpl::finished_wait_state(BlockHandle handle, td::Result> R) { + if (R.is_ok()) { + block_state_cache_[handle->id()] = {R.ok(), td::Timestamp::in(30.0)}; + } auto it = wait_state_.find(handle->id()); if (it != wait_state_.end()) { if (R.is_error()) { @@ -1441,7 +1450,7 @@ void ValidatorManagerImpl::send_block_broadcast(BlockBroadcast broadcast) { } void ValidatorManagerImpl::start_up() { - db_ = create_db_actor(actor_id(this), db_root_); + db_ = create_db_actor(actor_id(this), db_root_, opts_); lite_server_cache_ = create_liteserver_cache_actor(actor_id(this), db_root_); token_manager_ = td::actor::create_actor("tokenmanager"); td::mkdir(db_root_ + "/tmp/").ensure(); @@ -2373,6 +2382,31 @@ void ValidatorManagerImpl::alarm() { for (auto &w : shard_client_waiters_) { w.second.check_timers(); } + for (auto it = block_state_cache_.begin(); it != block_state_cache_.end();) { + bool del = it->second.ttl_.is_in_past(); + if (del) { + auto block_id = it->first; + if (block_id.is_masterchain()) { + if (block_id.seqno() == last_masterchain_seqno_) { + it->second.ttl_ = td::Timestamp::in(30.0); + del = false; + } + } else if (last_masterchain_state_.not_null()) { + auto shard = last_masterchain_state_->get_shard_from_config(block_id.shard_full()); + if (shard.not_null()) { + if (block_id.seqno() == shard->top_block_id().seqno()) { + it->second.ttl_ = td::Timestamp::in(30.0); + del = false; + } + } + } + } + if (del) { + it = block_state_cache_.erase(it); + } else { + ++it; + } + } } alarm_timestamp().relax(check_waiters_at_); if (check_shard_clients_.is_in_past()) { diff --git a/validator/manager.hpp b/validator/manager.hpp index d133f83ba..ccd854235 100644 --- a/validator/manager.hpp +++ b/validator/manager.hpp @@ -183,6 +183,12 @@ class ValidatorManagerImpl : public ValidatorManager { std::map>> wait_state_; std::map>> wait_block_data_; + struct CachedBlockState { + td::Ref state_; + td::Timestamp ttl_; + }; + std::map block_state_cache_; + struct WaitBlockHandle { std::vector> waiting_; }; diff --git a/validator/validator-options.hpp b/validator/validator-options.hpp index d23d8cc91..3a7e5ba70 100644 --- a/validator/validator-options.hpp +++ b/validator/validator-options.hpp @@ -114,6 +114,9 @@ struct ValidatorManagerOptionsImpl : public ValidatorManagerOptions { std::string get_session_logs_file() const override { return session_logs_file_; } + td::uint32 get_celldb_compress_depth() const override { + return celldb_compress_depth_; + } void set_zero_block_id(BlockIdExt block_id) override { zero_block_id_ = block_id; @@ -167,6 +170,9 @@ struct ValidatorManagerOptionsImpl : public ValidatorManagerOptions { void set_session_logs_file(std::string f) override { session_logs_file_ = std::move(f); } + void set_celldb_compress_depth(td::uint32 value) override { + celldb_compress_depth_ = value; + } ValidatorManagerOptionsImpl *make_copy() const override { return new ValidatorManagerOptionsImpl(*this); @@ -209,6 +215,7 @@ struct ValidatorManagerOptionsImpl : public ValidatorManagerOptions { BlockSeqno truncate_{0}; BlockSeqno sync_upto_{0}; std::string session_logs_file_; + td::uint32 celldb_compress_depth_{0}; }; } // namespace validator diff --git a/validator/validator.h b/validator/validator.h index 0687b1605..7cdea805c 100644 --- a/validator/validator.h +++ b/validator/validator.h @@ -81,6 +81,7 @@ struct ValidatorManagerOptions : public td::CntObject { virtual BlockSeqno get_truncate_seqno() const = 0; virtual BlockSeqno sync_upto() const = 0; virtual std::string get_session_logs_file() const = 0; + virtual td::uint32 get_celldb_compress_depth() const = 0; virtual void set_zero_block_id(BlockIdExt block_id) = 0; virtual void set_init_block_id(BlockIdExt block_id) = 0; @@ -100,6 +101,7 @@ struct ValidatorManagerOptions : public td::CntObject { virtual void truncate_db(BlockSeqno seqno) = 0; virtual void set_sync_upto(BlockSeqno seqno) = 0; virtual void set_session_logs_file(std::string f) = 0; + virtual void set_celldb_compress_depth(td::uint32 value) = 0; static td::Ref create( BlockIdExt zero_block_id, BlockIdExt init_block_id,

    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�l$Be!B+!LA>WTLmxOvvJ2T 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 T7+T1-icz>o%k*}Q$A0}U6fX+) literal 0 HcmV?d00001 diff --git a/example/android/third_party/libsodium/libsodium-android-i686/lib/libsodium.la b/example/android/third_party/libsodium/libsodium-android-i686/lib/libsodium.la new file mode 100644 index 000000000..1a9c26bf4 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/lib/libsodium.la @@ -0,0 +1,41 @@ +# libsodium.la - a libtool library file +# Generated by libtool (GNU libtool) 2.4.6 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='libsodium.so' + +# Names of this library. +library_names='libsodium.so' + +# The name of the static archive. +old_library='libsodium.a' + +# Linker flags that cannot go in dependency_libs. +inherited_linker_flags=' -pthread' + +# Libraries that this one depends upon. +dependency_libs='' + +# Names of additional weak libraries provided by this library +weak_library_names='' + +# Version information for libsodium. +current=0 +age=0 +revision=0 + +# Is this an already installed library? +installed=yes + +# Should we warn about portability when linking against -modules? +shouldnotlink=no + +# Files to dlopen/dlpreopen +dlopen='' +dlpreopen='' + +# Directory that this library needs to be installed in: +libdir='/home/alex/magnet/example/android/third_party/libsodium/libsodium-1.0.18/libsodium-android-i686/lib' diff --git a/example/android/third_party/libsodium/libsodium-android-i686/lib/libsodium.so b/example/android/third_party/libsodium/libsodium-android-i686/lib/libsodium.so new file mode 100644 index 0000000000000000000000000000000000000000..1bb074974862187dd8b4f0f482fb82fc84023898 GIT binary patch literal 454172 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ℓ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 E2WY3?i2wiq literal 0 HcmV?d00001 diff --git a/example/android/third_party/libsodium/libsodium-android-i686/lib/pkgconfig/libsodium.pc b/example/android/third_party/libsodium/libsodium-android-i686/lib/pkgconfig/libsodium.pc new file mode 100644 index 000000000..0bed9f771 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/lib/pkgconfig/libsodium.pc @@ -0,0 +1,12 @@ +prefix=/home/alex/magnet/example/android/third_party/libsodium/libsodium-1.0.18/libsodium-android-i686 +exec_prefix=${prefix} +libdir=${exec_prefix}/lib +includedir=${prefix}/include + +Name: libsodium +Version: 1.0.18 +Description: A modern and easy-to-use crypto library + +Libs: -L${libdir} -lsodium +Libs.private: -pthread +Cflags: -I${includedir} diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium.h new file mode 100644 index 000000000..295f911cf --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium.h @@ -0,0 +1,69 @@ + +#ifndef sodium_H +#define sodium_H + +#include "sodium/version.h" + +#include "sodium/core.h" +#include "sodium/crypto_aead_aes256gcm.h" +#include "sodium/crypto_aead_chacha20poly1305.h" +#include "sodium/crypto_aead_xchacha20poly1305.h" +#include "sodium/crypto_auth.h" +#include "sodium/crypto_auth_hmacsha256.h" +#include "sodium/crypto_auth_hmacsha512.h" +#include "sodium/crypto_auth_hmacsha512256.h" +#include "sodium/crypto_box.h" +#include "sodium/crypto_box_curve25519xsalsa20poly1305.h" +#include "sodium/crypto_core_hsalsa20.h" +#include "sodium/crypto_core_hchacha20.h" +#include "sodium/crypto_core_salsa20.h" +#include "sodium/crypto_core_salsa2012.h" +#include "sodium/crypto_core_salsa208.h" +#include "sodium/crypto_generichash.h" +#include "sodium/crypto_generichash_blake2b.h" +#include "sodium/crypto_hash.h" +#include "sodium/crypto_hash_sha256.h" +#include "sodium/crypto_hash_sha512.h" +#include "sodium/crypto_kdf.h" +#include "sodium/crypto_kdf_blake2b.h" +#include "sodium/crypto_kx.h" +#include "sodium/crypto_onetimeauth.h" +#include "sodium/crypto_onetimeauth_poly1305.h" +#include "sodium/crypto_pwhash.h" +#include "sodium/crypto_pwhash_argon2i.h" +#include "sodium/crypto_scalarmult.h" +#include "sodium/crypto_scalarmult_curve25519.h" +#include "sodium/crypto_secretbox.h" +#include "sodium/crypto_secretbox_xsalsa20poly1305.h" +#include "sodium/crypto_secretstream_xchacha20poly1305.h" +#include "sodium/crypto_shorthash.h" +#include "sodium/crypto_shorthash_siphash24.h" +#include "sodium/crypto_sign.h" +#include "sodium/crypto_sign_ed25519.h" +#include "sodium/crypto_stream.h" +#include "sodium/crypto_stream_chacha20.h" +#include "sodium/crypto_stream_salsa20.h" +#include "sodium/crypto_stream_xsalsa20.h" +#include "sodium/crypto_verify_16.h" +#include "sodium/crypto_verify_32.h" +#include "sodium/crypto_verify_64.h" +#include "sodium/randombytes.h" +#include "sodium/randombytes_internal_random.h" +#include "sodium/randombytes_sysrandom.h" +#include "sodium/runtime.h" +#include "sodium/utils.h" + +#ifndef SODIUM_LIBRARY_MINIMAL +# include "sodium/crypto_box_curve25519xchacha20poly1305.h" +# include "sodium/crypto_core_ed25519.h" +# include "sodium/crypto_core_ristretto255.h" +# include "sodium/crypto_scalarmult_ed25519.h" +# include "sodium/crypto_scalarmult_ristretto255.h" +# include "sodium/crypto_secretbox_xchacha20poly1305.h" +# include "sodium/crypto_pwhash_scryptsalsa208sha256.h" +# include "sodium/crypto_stream_salsa2012.h" +# include "sodium/crypto_stream_salsa208.h" +# include "sodium/crypto_stream_xchacha20.h" +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/core.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/core.h new file mode 100644 index 000000000..dd088d2ca --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/core.h @@ -0,0 +1,28 @@ + +#ifndef sodium_core_H +#define sodium_core_H + +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +SODIUM_EXPORT +int sodium_init(void) + __attribute__ ((warn_unused_result)); + +/* ---- */ + +SODIUM_EXPORT +int sodium_set_misuse_handler(void (*handler)(void)); + +SODIUM_EXPORT +void sodium_misuse(void) + __attribute__ ((noreturn)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_aead_aes256gcm.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_aead_aes256gcm.h new file mode 100644 index 000000000..9baeb3f19 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_aead_aes256gcm.h @@ -0,0 +1,179 @@ +#ifndef crypto_aead_aes256gcm_H +#define crypto_aead_aes256gcm_H + +/* + * WARNING: Despite being the most popular AEAD construction due to its + * use in TLS, safely using AES-GCM in a different context is tricky. + * + * No more than ~ 350 GB of input data should be encrypted with a given key. + * This is for ~ 16 KB messages -- Actual figures vary according to + * message sizes. + * + * In addition, nonces are short and repeated nonces would totally destroy + * the security of this scheme. + * + * Nonces should thus come from atomic counters, which can be difficult to + * set up in a distributed environment. + * + * Unless you absolutely need AES-GCM, use crypto_aead_xchacha20poly1305_ietf_*() + * instead. It doesn't have any of these limitations. + * Or, if you don't need to authenticate additional data, just stick to + * crypto_secretbox(). + */ + +#include +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +SODIUM_EXPORT +int crypto_aead_aes256gcm_is_available(void); + +#define crypto_aead_aes256gcm_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_aead_aes256gcm_keybytes(void); + +#define crypto_aead_aes256gcm_NSECBYTES 0U +SODIUM_EXPORT +size_t crypto_aead_aes256gcm_nsecbytes(void); + +#define crypto_aead_aes256gcm_NPUBBYTES 12U +SODIUM_EXPORT +size_t crypto_aead_aes256gcm_npubbytes(void); + +#define crypto_aead_aes256gcm_ABYTES 16U +SODIUM_EXPORT +size_t crypto_aead_aes256gcm_abytes(void); + +#define crypto_aead_aes256gcm_MESSAGEBYTES_MAX \ + SODIUM_MIN(SODIUM_SIZE_MAX - crypto_aead_aes256gcm_ABYTES, \ + (16ULL * ((1ULL << 32) - 2ULL))) +SODIUM_EXPORT +size_t crypto_aead_aes256gcm_messagebytes_max(void); + +typedef struct CRYPTO_ALIGN(16) crypto_aead_aes256gcm_state_ { + unsigned char opaque[512]; +} crypto_aead_aes256gcm_state; + +SODIUM_EXPORT +size_t crypto_aead_aes256gcm_statebytes(void); + +SODIUM_EXPORT +int crypto_aead_aes256gcm_encrypt(unsigned char *c, + unsigned long long *clen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((nonnull(1, 8, 9))); + +SODIUM_EXPORT +int crypto_aead_aes256gcm_decrypt(unsigned char *m, + unsigned long long *mlen_p, + unsigned char *nsec, + const unsigned char *c, + unsigned long long clen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(4, 8, 9))); + +SODIUM_EXPORT +int crypto_aead_aes256gcm_encrypt_detached(unsigned char *c, + unsigned char *mac, + unsigned long long *maclen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((nonnull(1, 2, 9, 10))); + +SODIUM_EXPORT +int crypto_aead_aes256gcm_decrypt_detached(unsigned char *m, + unsigned char *nsec, + const unsigned char *c, + unsigned long long clen, + const unsigned char *mac, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(3, 5, 8, 9))); + +/* -- Precomputation interface -- */ + +SODIUM_EXPORT +int crypto_aead_aes256gcm_beforenm(crypto_aead_aes256gcm_state *ctx_, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_aead_aes256gcm_encrypt_afternm(unsigned char *c, + unsigned long long *clen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const crypto_aead_aes256gcm_state *ctx_) + __attribute__ ((nonnull(1, 8, 9))); + +SODIUM_EXPORT +int crypto_aead_aes256gcm_decrypt_afternm(unsigned char *m, + unsigned long long *mlen_p, + unsigned char *nsec, + const unsigned char *c, + unsigned long long clen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *npub, + const crypto_aead_aes256gcm_state *ctx_) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(4, 8, 9))); + +SODIUM_EXPORT +int crypto_aead_aes256gcm_encrypt_detached_afternm(unsigned char *c, + unsigned char *mac, + unsigned long long *maclen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const crypto_aead_aes256gcm_state *ctx_) + __attribute__ ((nonnull(1, 2, 9, 10))); + +SODIUM_EXPORT +int crypto_aead_aes256gcm_decrypt_detached_afternm(unsigned char *m, + unsigned char *nsec, + const unsigned char *c, + unsigned long long clen, + const unsigned char *mac, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *npub, + const crypto_aead_aes256gcm_state *ctx_) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(3, 5, 8, 9))); + +SODIUM_EXPORT +void crypto_aead_aes256gcm_keygen(unsigned char k[crypto_aead_aes256gcm_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_aead_chacha20poly1305.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_aead_chacha20poly1305.h new file mode 100644 index 000000000..5d671df14 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_aead_chacha20poly1305.h @@ -0,0 +1,180 @@ +#ifndef crypto_aead_chacha20poly1305_H +#define crypto_aead_chacha20poly1305_H + +#include +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +/* -- IETF ChaCha20-Poly1305 construction with a 96-bit nonce and a 32-bit internal counter -- */ + +#define crypto_aead_chacha20poly1305_ietf_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_aead_chacha20poly1305_ietf_keybytes(void); + +#define crypto_aead_chacha20poly1305_ietf_NSECBYTES 0U +SODIUM_EXPORT +size_t crypto_aead_chacha20poly1305_ietf_nsecbytes(void); + +#define crypto_aead_chacha20poly1305_ietf_NPUBBYTES 12U + +SODIUM_EXPORT +size_t crypto_aead_chacha20poly1305_ietf_npubbytes(void); + +#define crypto_aead_chacha20poly1305_ietf_ABYTES 16U +SODIUM_EXPORT +size_t crypto_aead_chacha20poly1305_ietf_abytes(void); + +#define crypto_aead_chacha20poly1305_ietf_MESSAGEBYTES_MAX \ + SODIUM_MIN(SODIUM_SIZE_MAX - crypto_aead_chacha20poly1305_ietf_ABYTES, \ + (64ULL * ((1ULL << 32) - 1ULL))) +SODIUM_EXPORT +size_t crypto_aead_chacha20poly1305_ietf_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_aead_chacha20poly1305_ietf_encrypt(unsigned char *c, + unsigned long long *clen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((nonnull(1, 8, 9))); + +SODIUM_EXPORT +int crypto_aead_chacha20poly1305_ietf_decrypt(unsigned char *m, + unsigned long long *mlen_p, + unsigned char *nsec, + const unsigned char *c, + unsigned long long clen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(4, 8, 9))); + +SODIUM_EXPORT +int crypto_aead_chacha20poly1305_ietf_encrypt_detached(unsigned char *c, + unsigned char *mac, + unsigned long long *maclen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((nonnull(1, 2, 9, 10))); + +SODIUM_EXPORT +int crypto_aead_chacha20poly1305_ietf_decrypt_detached(unsigned char *m, + unsigned char *nsec, + const unsigned char *c, + unsigned long long clen, + const unsigned char *mac, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(3, 5, 8, 9))); + +SODIUM_EXPORT +void crypto_aead_chacha20poly1305_ietf_keygen(unsigned char k[crypto_aead_chacha20poly1305_ietf_KEYBYTES]) + __attribute__ ((nonnull)); + +/* -- Original ChaCha20-Poly1305 construction with a 64-bit nonce and a 64-bit internal counter -- */ + +#define crypto_aead_chacha20poly1305_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_aead_chacha20poly1305_keybytes(void); + +#define crypto_aead_chacha20poly1305_NSECBYTES 0U +SODIUM_EXPORT +size_t crypto_aead_chacha20poly1305_nsecbytes(void); + +#define crypto_aead_chacha20poly1305_NPUBBYTES 8U +SODIUM_EXPORT +size_t crypto_aead_chacha20poly1305_npubbytes(void); + +#define crypto_aead_chacha20poly1305_ABYTES 16U +SODIUM_EXPORT +size_t crypto_aead_chacha20poly1305_abytes(void); + +#define crypto_aead_chacha20poly1305_MESSAGEBYTES_MAX \ + (SODIUM_SIZE_MAX - crypto_aead_chacha20poly1305_ABYTES) +SODIUM_EXPORT +size_t crypto_aead_chacha20poly1305_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_aead_chacha20poly1305_encrypt(unsigned char *c, + unsigned long long *clen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((nonnull(1, 8, 9))); + +SODIUM_EXPORT +int crypto_aead_chacha20poly1305_decrypt(unsigned char *m, + unsigned long long *mlen_p, + unsigned char *nsec, + const unsigned char *c, + unsigned long long clen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(4, 8, 9))); + +SODIUM_EXPORT +int crypto_aead_chacha20poly1305_encrypt_detached(unsigned char *c, + unsigned char *mac, + unsigned long long *maclen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((nonnull(1, 2, 9, 10))); + +SODIUM_EXPORT +int crypto_aead_chacha20poly1305_decrypt_detached(unsigned char *m, + unsigned char *nsec, + const unsigned char *c, + unsigned long long clen, + const unsigned char *mac, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(3, 5, 8, 9))); + +SODIUM_EXPORT +void crypto_aead_chacha20poly1305_keygen(unsigned char k[crypto_aead_chacha20poly1305_KEYBYTES]) + __attribute__ ((nonnull)); + +/* Aliases */ + +#define crypto_aead_chacha20poly1305_IETF_KEYBYTES crypto_aead_chacha20poly1305_ietf_KEYBYTES +#define crypto_aead_chacha20poly1305_IETF_NSECBYTES crypto_aead_chacha20poly1305_ietf_NSECBYTES +#define crypto_aead_chacha20poly1305_IETF_NPUBBYTES crypto_aead_chacha20poly1305_ietf_NPUBBYTES +#define crypto_aead_chacha20poly1305_IETF_ABYTES crypto_aead_chacha20poly1305_ietf_ABYTES +#define crypto_aead_chacha20poly1305_IETF_MESSAGEBYTES_MAX crypto_aead_chacha20poly1305_ietf_MESSAGEBYTES_MAX + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_aead_xchacha20poly1305.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_aead_xchacha20poly1305.h new file mode 100644 index 000000000..6643b0cbf --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_aead_xchacha20poly1305.h @@ -0,0 +1,100 @@ +#ifndef crypto_aead_xchacha20poly1305_H +#define crypto_aead_xchacha20poly1305_H + +#include +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_aead_xchacha20poly1305_ietf_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_aead_xchacha20poly1305_ietf_keybytes(void); + +#define crypto_aead_xchacha20poly1305_ietf_NSECBYTES 0U +SODIUM_EXPORT +size_t crypto_aead_xchacha20poly1305_ietf_nsecbytes(void); + +#define crypto_aead_xchacha20poly1305_ietf_NPUBBYTES 24U +SODIUM_EXPORT +size_t crypto_aead_xchacha20poly1305_ietf_npubbytes(void); + +#define crypto_aead_xchacha20poly1305_ietf_ABYTES 16U +SODIUM_EXPORT +size_t crypto_aead_xchacha20poly1305_ietf_abytes(void); + +#define crypto_aead_xchacha20poly1305_ietf_MESSAGEBYTES_MAX \ + (SODIUM_SIZE_MAX - crypto_aead_xchacha20poly1305_ietf_ABYTES) +SODIUM_EXPORT +size_t crypto_aead_xchacha20poly1305_ietf_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_aead_xchacha20poly1305_ietf_encrypt(unsigned char *c, + unsigned long long *clen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((nonnull(1, 8, 9))); + +SODIUM_EXPORT +int crypto_aead_xchacha20poly1305_ietf_decrypt(unsigned char *m, + unsigned long long *mlen_p, + unsigned char *nsec, + const unsigned char *c, + unsigned long long clen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(4, 8, 9))); + +SODIUM_EXPORT +int crypto_aead_xchacha20poly1305_ietf_encrypt_detached(unsigned char *c, + unsigned char *mac, + unsigned long long *maclen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((nonnull(1, 2, 9, 10))); + +SODIUM_EXPORT +int crypto_aead_xchacha20poly1305_ietf_decrypt_detached(unsigned char *m, + unsigned char *nsec, + const unsigned char *c, + unsigned long long clen, + const unsigned char *mac, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(3, 5, 8, 9))); + +SODIUM_EXPORT +void crypto_aead_xchacha20poly1305_ietf_keygen(unsigned char k[crypto_aead_xchacha20poly1305_ietf_KEYBYTES]) + __attribute__ ((nonnull)); + +/* Aliases */ + +#define crypto_aead_xchacha20poly1305_IETF_KEYBYTES crypto_aead_xchacha20poly1305_ietf_KEYBYTES +#define crypto_aead_xchacha20poly1305_IETF_NSECBYTES crypto_aead_xchacha20poly1305_ietf_NSECBYTES +#define crypto_aead_xchacha20poly1305_IETF_NPUBBYTES crypto_aead_xchacha20poly1305_ietf_NPUBBYTES +#define crypto_aead_xchacha20poly1305_IETF_ABYTES crypto_aead_xchacha20poly1305_ietf_ABYTES +#define crypto_aead_xchacha20poly1305_IETF_MESSAGEBYTES_MAX crypto_aead_xchacha20poly1305_ietf_MESSAGEBYTES_MAX + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_auth.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_auth.h new file mode 100644 index 000000000..540aee0e8 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_auth.h @@ -0,0 +1,46 @@ +#ifndef crypto_auth_H +#define crypto_auth_H + +#include + +#include "crypto_auth_hmacsha512256.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_auth_BYTES crypto_auth_hmacsha512256_BYTES +SODIUM_EXPORT +size_t crypto_auth_bytes(void); + +#define crypto_auth_KEYBYTES crypto_auth_hmacsha512256_KEYBYTES +SODIUM_EXPORT +size_t crypto_auth_keybytes(void); + +#define crypto_auth_PRIMITIVE "hmacsha512256" +SODIUM_EXPORT +const char *crypto_auth_primitive(void); + +SODIUM_EXPORT +int crypto_auth(unsigned char *out, const unsigned char *in, + unsigned long long inlen, const unsigned char *k) + __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_auth_verify(const unsigned char *h, const unsigned char *in, + unsigned long long inlen, const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +void crypto_auth_keygen(unsigned char k[crypto_auth_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_auth_hmacsha256.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_auth_hmacsha256.h new file mode 100644 index 000000000..3da864c7d --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_auth_hmacsha256.h @@ -0,0 +1,70 @@ +#ifndef crypto_auth_hmacsha256_H +#define crypto_auth_hmacsha256_H + +#include +#include "crypto_hash_sha256.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_auth_hmacsha256_BYTES 32U +SODIUM_EXPORT +size_t crypto_auth_hmacsha256_bytes(void); + +#define crypto_auth_hmacsha256_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_auth_hmacsha256_keybytes(void); + +SODIUM_EXPORT +int crypto_auth_hmacsha256(unsigned char *out, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *k) __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_auth_hmacsha256_verify(const unsigned char *h, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4))); + +/* ------------------------------------------------------------------------- */ + +typedef struct crypto_auth_hmacsha256_state { + crypto_hash_sha256_state ictx; + crypto_hash_sha256_state octx; +} crypto_auth_hmacsha256_state; + +SODIUM_EXPORT +size_t crypto_auth_hmacsha256_statebytes(void); + +SODIUM_EXPORT +int crypto_auth_hmacsha256_init(crypto_auth_hmacsha256_state *state, + const unsigned char *key, + size_t keylen) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_auth_hmacsha256_update(crypto_auth_hmacsha256_state *state, + const unsigned char *in, + unsigned long long inlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_auth_hmacsha256_final(crypto_auth_hmacsha256_state *state, + unsigned char *out) __attribute__ ((nonnull)); + + +SODIUM_EXPORT +void crypto_auth_hmacsha256_keygen(unsigned char k[crypto_auth_hmacsha256_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_auth_hmacsha512.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_auth_hmacsha512.h new file mode 100644 index 000000000..d992cb816 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_auth_hmacsha512.h @@ -0,0 +1,68 @@ +#ifndef crypto_auth_hmacsha512_H +#define crypto_auth_hmacsha512_H + +#include +#include "crypto_hash_sha512.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_auth_hmacsha512_BYTES 64U +SODIUM_EXPORT +size_t crypto_auth_hmacsha512_bytes(void); + +#define crypto_auth_hmacsha512_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_auth_hmacsha512_keybytes(void); + +SODIUM_EXPORT +int crypto_auth_hmacsha512(unsigned char *out, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *k) __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_auth_hmacsha512_verify(const unsigned char *h, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4))); + +/* ------------------------------------------------------------------------- */ + +typedef struct crypto_auth_hmacsha512_state { + crypto_hash_sha512_state ictx; + crypto_hash_sha512_state octx; +} crypto_auth_hmacsha512_state; + +SODIUM_EXPORT +size_t crypto_auth_hmacsha512_statebytes(void); + +SODIUM_EXPORT +int crypto_auth_hmacsha512_init(crypto_auth_hmacsha512_state *state, + const unsigned char *key, + size_t keylen) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_auth_hmacsha512_update(crypto_auth_hmacsha512_state *state, + const unsigned char *in, + unsigned long long inlen) __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_auth_hmacsha512_final(crypto_auth_hmacsha512_state *state, + unsigned char *out) __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_auth_hmacsha512_keygen(unsigned char k[crypto_auth_hmacsha512_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_auth_hmacsha512256.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_auth_hmacsha512256.h new file mode 100644 index 000000000..3fb526389 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_auth_hmacsha512256.h @@ -0,0 +1,65 @@ +#ifndef crypto_auth_hmacsha512256_H +#define crypto_auth_hmacsha512256_H + +#include +#include "crypto_auth_hmacsha512.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_auth_hmacsha512256_BYTES 32U +SODIUM_EXPORT +size_t crypto_auth_hmacsha512256_bytes(void); + +#define crypto_auth_hmacsha512256_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_auth_hmacsha512256_keybytes(void); + +SODIUM_EXPORT +int crypto_auth_hmacsha512256(unsigned char *out, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *k) __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_auth_hmacsha512256_verify(const unsigned char *h, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4))); + +/* ------------------------------------------------------------------------- */ + +typedef crypto_auth_hmacsha512_state crypto_auth_hmacsha512256_state; + +SODIUM_EXPORT +size_t crypto_auth_hmacsha512256_statebytes(void); + +SODIUM_EXPORT +int crypto_auth_hmacsha512256_init(crypto_auth_hmacsha512256_state *state, + const unsigned char *key, + size_t keylen) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_auth_hmacsha512256_update(crypto_auth_hmacsha512256_state *state, + const unsigned char *in, + unsigned long long inlen) __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_auth_hmacsha512256_final(crypto_auth_hmacsha512256_state *state, + unsigned char *out) __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_auth_hmacsha512256_keygen(unsigned char k[crypto_auth_hmacsha512256_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_box.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_box.h new file mode 100644 index 000000000..e060dd29f --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_box.h @@ -0,0 +1,177 @@ +#ifndef crypto_box_H +#define crypto_box_H + +/* + * THREAD SAFETY: crypto_box_keypair() is thread-safe, + * provided that sodium_init() was called before. + * + * Other functions are always thread-safe. + */ + +#include + +#include "crypto_box_curve25519xsalsa20poly1305.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_box_SEEDBYTES crypto_box_curve25519xsalsa20poly1305_SEEDBYTES +SODIUM_EXPORT +size_t crypto_box_seedbytes(void); + +#define crypto_box_PUBLICKEYBYTES crypto_box_curve25519xsalsa20poly1305_PUBLICKEYBYTES +SODIUM_EXPORT +size_t crypto_box_publickeybytes(void); + +#define crypto_box_SECRETKEYBYTES crypto_box_curve25519xsalsa20poly1305_SECRETKEYBYTES +SODIUM_EXPORT +size_t crypto_box_secretkeybytes(void); + +#define crypto_box_NONCEBYTES crypto_box_curve25519xsalsa20poly1305_NONCEBYTES +SODIUM_EXPORT +size_t crypto_box_noncebytes(void); + +#define crypto_box_MACBYTES crypto_box_curve25519xsalsa20poly1305_MACBYTES +SODIUM_EXPORT +size_t crypto_box_macbytes(void); + +#define crypto_box_MESSAGEBYTES_MAX crypto_box_curve25519xsalsa20poly1305_MESSAGEBYTES_MAX +SODIUM_EXPORT +size_t crypto_box_messagebytes_max(void); + +#define crypto_box_PRIMITIVE "curve25519xsalsa20poly1305" +SODIUM_EXPORT +const char *crypto_box_primitive(void); + +SODIUM_EXPORT +int crypto_box_seed_keypair(unsigned char *pk, unsigned char *sk, + const unsigned char *seed) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_box_keypair(unsigned char *pk, unsigned char *sk) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_box_easy(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *pk, const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4, 5, 6))); + +SODIUM_EXPORT +int crypto_box_open_easy(unsigned char *m, const unsigned char *c, + unsigned long long clen, const unsigned char *n, + const unsigned char *pk, const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5, 6))); + +SODIUM_EXPORT +int crypto_box_detached(unsigned char *c, unsigned char *mac, + const unsigned char *m, unsigned long long mlen, + const unsigned char *n, const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 2, 5, 6, 7))); + +SODIUM_EXPORT +int crypto_box_open_detached(unsigned char *m, const unsigned char *c, + const unsigned char *mac, + unsigned long long clen, + const unsigned char *n, + const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 3, 5, 6, 7))); + +/* -- Precomputation interface -- */ + +#define crypto_box_BEFORENMBYTES crypto_box_curve25519xsalsa20poly1305_BEFORENMBYTES +SODIUM_EXPORT +size_t crypto_box_beforenmbytes(void); + +SODIUM_EXPORT +int crypto_box_beforenm(unsigned char *k, const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_box_easy_afternm(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) __attribute__ ((nonnull(1, 4, 5))); + +SODIUM_EXPORT +int crypto_box_open_easy_afternm(unsigned char *m, const unsigned char *c, + unsigned long long clen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5))); + +SODIUM_EXPORT +int crypto_box_detached_afternm(unsigned char *c, unsigned char *mac, + const unsigned char *m, unsigned long long mlen, + const unsigned char *n, const unsigned char *k) + __attribute__ ((nonnull(1, 2, 5, 6))); + +SODIUM_EXPORT +int crypto_box_open_detached_afternm(unsigned char *m, const unsigned char *c, + const unsigned char *mac, + unsigned long long clen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 3, 5, 6))); + +/* -- Ephemeral SK interface -- */ + +#define crypto_box_SEALBYTES (crypto_box_PUBLICKEYBYTES + crypto_box_MACBYTES) +SODIUM_EXPORT +size_t crypto_box_sealbytes(void); + +SODIUM_EXPORT +int crypto_box_seal(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *pk) + __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_box_seal_open(unsigned char *m, const unsigned char *c, + unsigned long long clen, + const unsigned char *pk, const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5))); + +/* -- NaCl compatibility interface ; Requires padding -- */ + +#define crypto_box_ZEROBYTES crypto_box_curve25519xsalsa20poly1305_ZEROBYTES +SODIUM_EXPORT +size_t crypto_box_zerobytes(void); + +#define crypto_box_BOXZEROBYTES crypto_box_curve25519xsalsa20poly1305_BOXZEROBYTES +SODIUM_EXPORT +size_t crypto_box_boxzerobytes(void); + +SODIUM_EXPORT +int crypto_box(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *pk, const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4, 5, 6))); + +SODIUM_EXPORT +int crypto_box_open(unsigned char *m, const unsigned char *c, + unsigned long long clen, const unsigned char *n, + const unsigned char *pk, const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5, 6))); + +SODIUM_EXPORT +int crypto_box_afternm(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) __attribute__ ((nonnull(1, 4, 5))); + +SODIUM_EXPORT +int crypto_box_open_afternm(unsigned char *m, const unsigned char *c, + unsigned long long clen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5))); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_box_curve25519xchacha20poly1305.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_box_curve25519xchacha20poly1305.h new file mode 100644 index 000000000..26a3d31ef --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_box_curve25519xchacha20poly1305.h @@ -0,0 +1,164 @@ + +#ifndef crypto_box_curve25519xchacha20poly1305_H +#define crypto_box_curve25519xchacha20poly1305_H + +#include +#include "crypto_stream_xchacha20.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_box_curve25519xchacha20poly1305_SEEDBYTES 32U +SODIUM_EXPORT +size_t crypto_box_curve25519xchacha20poly1305_seedbytes(void); + +#define crypto_box_curve25519xchacha20poly1305_PUBLICKEYBYTES 32U +SODIUM_EXPORT +size_t crypto_box_curve25519xchacha20poly1305_publickeybytes(void); + +#define crypto_box_curve25519xchacha20poly1305_SECRETKEYBYTES 32U +SODIUM_EXPORT +size_t crypto_box_curve25519xchacha20poly1305_secretkeybytes(void); + +#define crypto_box_curve25519xchacha20poly1305_BEFORENMBYTES 32U +SODIUM_EXPORT +size_t crypto_box_curve25519xchacha20poly1305_beforenmbytes(void); + +#define crypto_box_curve25519xchacha20poly1305_NONCEBYTES 24U +SODIUM_EXPORT +size_t crypto_box_curve25519xchacha20poly1305_noncebytes(void); + +#define crypto_box_curve25519xchacha20poly1305_MACBYTES 16U +SODIUM_EXPORT +size_t crypto_box_curve25519xchacha20poly1305_macbytes(void); + +#define crypto_box_curve25519xchacha20poly1305_MESSAGEBYTES_MAX \ + (crypto_stream_xchacha20_MESSAGEBYTES_MAX - crypto_box_curve25519xchacha20poly1305_MACBYTES) +SODIUM_EXPORT +size_t crypto_box_curve25519xchacha20poly1305_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_seed_keypair(unsigned char *pk, + unsigned char *sk, + const unsigned char *seed) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_keypair(unsigned char *pk, + unsigned char *sk) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_easy(unsigned char *c, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, + const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4, 5, 6))); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_open_easy(unsigned char *m, + const unsigned char *c, + unsigned long long clen, + const unsigned char *n, + const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5, 6))); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_detached(unsigned char *c, + unsigned char *mac, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, + const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 2, 5, 6, 7))); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_open_detached(unsigned char *m, + const unsigned char *c, + const unsigned char *mac, + unsigned long long clen, + const unsigned char *n, + const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 3, 5, 6, 7))); + +/* -- Precomputation interface -- */ + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_beforenm(unsigned char *k, + const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_easy_afternm(unsigned char *c, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull(1, 4, 5))); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_open_easy_afternm(unsigned char *m, + const unsigned char *c, + unsigned long long clen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5))); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_detached_afternm(unsigned char *c, + unsigned char *mac, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull(1, 2, 5, 6))); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_open_detached_afternm(unsigned char *m, + const unsigned char *c, + const unsigned char *mac, + unsigned long long clen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 3, 5, 6))); + +/* -- Ephemeral SK interface -- */ + +#define crypto_box_curve25519xchacha20poly1305_SEALBYTES \ + (crypto_box_curve25519xchacha20poly1305_PUBLICKEYBYTES + \ + crypto_box_curve25519xchacha20poly1305_MACBYTES) + +SODIUM_EXPORT +size_t crypto_box_curve25519xchacha20poly1305_sealbytes(void); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_seal(unsigned char *c, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *pk) + __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_seal_open(unsigned char *m, + const unsigned char *c, + unsigned long long clen, + const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5))); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_box_curve25519xsalsa20poly1305.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_box_curve25519xsalsa20poly1305.h new file mode 100644 index 000000000..e733f4999 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_box_curve25519xsalsa20poly1305.h @@ -0,0 +1,112 @@ +#ifndef crypto_box_curve25519xsalsa20poly1305_H +#define crypto_box_curve25519xsalsa20poly1305_H + +#include +#include "crypto_stream_xsalsa20.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_box_curve25519xsalsa20poly1305_SEEDBYTES 32U +SODIUM_EXPORT +size_t crypto_box_curve25519xsalsa20poly1305_seedbytes(void); + +#define crypto_box_curve25519xsalsa20poly1305_PUBLICKEYBYTES 32U +SODIUM_EXPORT +size_t crypto_box_curve25519xsalsa20poly1305_publickeybytes(void); + +#define crypto_box_curve25519xsalsa20poly1305_SECRETKEYBYTES 32U +SODIUM_EXPORT +size_t crypto_box_curve25519xsalsa20poly1305_secretkeybytes(void); + +#define crypto_box_curve25519xsalsa20poly1305_BEFORENMBYTES 32U +SODIUM_EXPORT +size_t crypto_box_curve25519xsalsa20poly1305_beforenmbytes(void); + +#define crypto_box_curve25519xsalsa20poly1305_NONCEBYTES 24U +SODIUM_EXPORT +size_t crypto_box_curve25519xsalsa20poly1305_noncebytes(void); + +#define crypto_box_curve25519xsalsa20poly1305_MACBYTES 16U +SODIUM_EXPORT +size_t crypto_box_curve25519xsalsa20poly1305_macbytes(void); + +/* Only for the libsodium API - The NaCl compatibility API would require BOXZEROBYTES extra bytes */ +#define crypto_box_curve25519xsalsa20poly1305_MESSAGEBYTES_MAX \ + (crypto_stream_xsalsa20_MESSAGEBYTES_MAX - crypto_box_curve25519xsalsa20poly1305_MACBYTES) +SODIUM_EXPORT +size_t crypto_box_curve25519xsalsa20poly1305_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_box_curve25519xsalsa20poly1305_seed_keypair(unsigned char *pk, + unsigned char *sk, + const unsigned char *seed) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_box_curve25519xsalsa20poly1305_keypair(unsigned char *pk, + unsigned char *sk) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_box_curve25519xsalsa20poly1305_beforenm(unsigned char *k, + const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +/* -- NaCl compatibility interface ; Requires padding -- */ + +#define crypto_box_curve25519xsalsa20poly1305_BOXZEROBYTES 16U +SODIUM_EXPORT +size_t crypto_box_curve25519xsalsa20poly1305_boxzerobytes(void); + +#define crypto_box_curve25519xsalsa20poly1305_ZEROBYTES \ + (crypto_box_curve25519xsalsa20poly1305_BOXZEROBYTES + \ + crypto_box_curve25519xsalsa20poly1305_MACBYTES) +SODIUM_EXPORT +size_t crypto_box_curve25519xsalsa20poly1305_zerobytes(void); + +SODIUM_EXPORT +int crypto_box_curve25519xsalsa20poly1305(unsigned char *c, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, + const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4, 5, 6))); + +SODIUM_EXPORT +int crypto_box_curve25519xsalsa20poly1305_open(unsigned char *m, + const unsigned char *c, + unsigned long long clen, + const unsigned char *n, + const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5, 6))); + +SODIUM_EXPORT +int crypto_box_curve25519xsalsa20poly1305_afternm(unsigned char *c, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull(1, 4, 5))); + +SODIUM_EXPORT +int crypto_box_curve25519xsalsa20poly1305_open_afternm(unsigned char *m, + const unsigned char *c, + unsigned long long clen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5))); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_core_ed25519.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_core_ed25519.h new file mode 100644 index 000000000..3eae00c45 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_core_ed25519.h @@ -0,0 +1,100 @@ +#ifndef crypto_core_ed25519_H +#define crypto_core_ed25519_H + +#include +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_core_ed25519_BYTES 32 +SODIUM_EXPORT +size_t crypto_core_ed25519_bytes(void); + +#define crypto_core_ed25519_UNIFORMBYTES 32 +SODIUM_EXPORT +size_t crypto_core_ed25519_uniformbytes(void); + +#define crypto_core_ed25519_HASHBYTES 64 +SODIUM_EXPORT +size_t crypto_core_ed25519_hashbytes(void); + +#define crypto_core_ed25519_SCALARBYTES 32 +SODIUM_EXPORT +size_t crypto_core_ed25519_scalarbytes(void); + +#define crypto_core_ed25519_NONREDUCEDSCALARBYTES 64 +SODIUM_EXPORT +size_t crypto_core_ed25519_nonreducedscalarbytes(void); + +SODIUM_EXPORT +int crypto_core_ed25519_is_valid_point(const unsigned char *p) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_core_ed25519_add(unsigned char *r, + const unsigned char *p, const unsigned char *q) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_core_ed25519_sub(unsigned char *r, + const unsigned char *p, const unsigned char *q) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_core_ed25519_from_uniform(unsigned char *p, const unsigned char *r) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_core_ed25519_from_hash(unsigned char *p, const unsigned char *h) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ed25519_random(unsigned char *p) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ed25519_scalar_random(unsigned char *r) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_core_ed25519_scalar_invert(unsigned char *recip, const unsigned char *s) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ed25519_scalar_negate(unsigned char *neg, const unsigned char *s) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ed25519_scalar_complement(unsigned char *comp, const unsigned char *s) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ed25519_scalar_add(unsigned char *z, const unsigned char *x, + const unsigned char *y) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ed25519_scalar_sub(unsigned char *z, const unsigned char *x, + const unsigned char *y) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ed25519_scalar_mul(unsigned char *z, const unsigned char *x, + const unsigned char *y) + __attribute__ ((nonnull)); + +/* + * The interval `s` is sampled from should be at least 317 bits to ensure almost + * uniformity of `r` over `L`. + */ +SODIUM_EXPORT +void crypto_core_ed25519_scalar_reduce(unsigned char *r, const unsigned char *s) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_core_hchacha20.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_core_hchacha20.h new file mode 100644 index 000000000..ece141b09 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_core_hchacha20.h @@ -0,0 +1,36 @@ +#ifndef crypto_core_hchacha20_H +#define crypto_core_hchacha20_H + +#include +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_core_hchacha20_OUTPUTBYTES 32U +SODIUM_EXPORT +size_t crypto_core_hchacha20_outputbytes(void); + +#define crypto_core_hchacha20_INPUTBYTES 16U +SODIUM_EXPORT +size_t crypto_core_hchacha20_inputbytes(void); + +#define crypto_core_hchacha20_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_core_hchacha20_keybytes(void); + +#define crypto_core_hchacha20_CONSTBYTES 16U +SODIUM_EXPORT +size_t crypto_core_hchacha20_constbytes(void); + +SODIUM_EXPORT +int crypto_core_hchacha20(unsigned char *out, const unsigned char *in, + const unsigned char *k, const unsigned char *c) + __attribute__ ((nonnull(1, 2, 3))); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_core_hsalsa20.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_core_hsalsa20.h new file mode 100644 index 000000000..4bf7a4878 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_core_hsalsa20.h @@ -0,0 +1,36 @@ +#ifndef crypto_core_hsalsa20_H +#define crypto_core_hsalsa20_H + +#include +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_core_hsalsa20_OUTPUTBYTES 32U +SODIUM_EXPORT +size_t crypto_core_hsalsa20_outputbytes(void); + +#define crypto_core_hsalsa20_INPUTBYTES 16U +SODIUM_EXPORT +size_t crypto_core_hsalsa20_inputbytes(void); + +#define crypto_core_hsalsa20_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_core_hsalsa20_keybytes(void); + +#define crypto_core_hsalsa20_CONSTBYTES 16U +SODIUM_EXPORT +size_t crypto_core_hsalsa20_constbytes(void); + +SODIUM_EXPORT +int crypto_core_hsalsa20(unsigned char *out, const unsigned char *in, + const unsigned char *k, const unsigned char *c) + __attribute__ ((nonnull(1, 2, 3))); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_core_ristretto255.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_core_ristretto255.h new file mode 100644 index 000000000..f2820e557 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_core_ristretto255.h @@ -0,0 +1,100 @@ +#ifndef crypto_core_ristretto255_H +#define crypto_core_ristretto255_H + +#include +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_core_ristretto255_BYTES 32 +SODIUM_EXPORT +size_t crypto_core_ristretto255_bytes(void); + +#define crypto_core_ristretto255_HASHBYTES 64 +SODIUM_EXPORT +size_t crypto_core_ristretto255_hashbytes(void); + +#define crypto_core_ristretto255_SCALARBYTES 32 +SODIUM_EXPORT +size_t crypto_core_ristretto255_scalarbytes(void); + +#define crypto_core_ristretto255_NONREDUCEDSCALARBYTES 64 +SODIUM_EXPORT +size_t crypto_core_ristretto255_nonreducedscalarbytes(void); + +SODIUM_EXPORT +int crypto_core_ristretto255_is_valid_point(const unsigned char *p) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_core_ristretto255_add(unsigned char *r, + const unsigned char *p, const unsigned char *q) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_core_ristretto255_sub(unsigned char *r, + const unsigned char *p, const unsigned char *q) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_core_ristretto255_from_hash(unsigned char *p, + const unsigned char *r) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ristretto255_random(unsigned char *p) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ristretto255_scalar_random(unsigned char *r) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_core_ristretto255_scalar_invert(unsigned char *recip, + const unsigned char *s) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ristretto255_scalar_negate(unsigned char *neg, + const unsigned char *s) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ristretto255_scalar_complement(unsigned char *comp, + const unsigned char *s) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ristretto255_scalar_add(unsigned char *z, + const unsigned char *x, + const unsigned char *y) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ristretto255_scalar_sub(unsigned char *z, + const unsigned char *x, + const unsigned char *y) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ristretto255_scalar_mul(unsigned char *z, + const unsigned char *x, + const unsigned char *y) + __attribute__ ((nonnull)); + +/* + * The interval `s` is sampled from should be at least 317 bits to ensure almost + * uniformity of `r` over `L`. + */ +SODIUM_EXPORT +void crypto_core_ristretto255_scalar_reduce(unsigned char *r, + const unsigned char *s) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_core_salsa20.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_core_salsa20.h new file mode 100644 index 000000000..bd79fd9f5 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_core_salsa20.h @@ -0,0 +1,36 @@ +#ifndef crypto_core_salsa20_H +#define crypto_core_salsa20_H + +#include +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_core_salsa20_OUTPUTBYTES 64U +SODIUM_EXPORT +size_t crypto_core_salsa20_outputbytes(void); + +#define crypto_core_salsa20_INPUTBYTES 16U +SODIUM_EXPORT +size_t crypto_core_salsa20_inputbytes(void); + +#define crypto_core_salsa20_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_core_salsa20_keybytes(void); + +#define crypto_core_salsa20_CONSTBYTES 16U +SODIUM_EXPORT +size_t crypto_core_salsa20_constbytes(void); + +SODIUM_EXPORT +int crypto_core_salsa20(unsigned char *out, const unsigned char *in, + const unsigned char *k, const unsigned char *c) + __attribute__ ((nonnull(1, 2, 3))); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_core_salsa2012.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_core_salsa2012.h new file mode 100644 index 000000000..05957591c --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_core_salsa2012.h @@ -0,0 +1,36 @@ +#ifndef crypto_core_salsa2012_H +#define crypto_core_salsa2012_H + +#include +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_core_salsa2012_OUTPUTBYTES 64U +SODIUM_EXPORT +size_t crypto_core_salsa2012_outputbytes(void); + +#define crypto_core_salsa2012_INPUTBYTES 16U +SODIUM_EXPORT +size_t crypto_core_salsa2012_inputbytes(void); + +#define crypto_core_salsa2012_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_core_salsa2012_keybytes(void); + +#define crypto_core_salsa2012_CONSTBYTES 16U +SODIUM_EXPORT +size_t crypto_core_salsa2012_constbytes(void); + +SODIUM_EXPORT +int crypto_core_salsa2012(unsigned char *out, const unsigned char *in, + const unsigned char *k, const unsigned char *c) + __attribute__ ((nonnull(1, 2, 3))); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_core_salsa208.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_core_salsa208.h new file mode 100644 index 000000000..d2f216af2 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_core_salsa208.h @@ -0,0 +1,40 @@ +#ifndef crypto_core_salsa208_H +#define crypto_core_salsa208_H + +#include +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_core_salsa208_OUTPUTBYTES 64U +SODIUM_EXPORT +size_t crypto_core_salsa208_outputbytes(void) + __attribute__ ((deprecated)); + +#define crypto_core_salsa208_INPUTBYTES 16U +SODIUM_EXPORT +size_t crypto_core_salsa208_inputbytes(void) + __attribute__ ((deprecated)); + +#define crypto_core_salsa208_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_core_salsa208_keybytes(void) + __attribute__ ((deprecated)); + +#define crypto_core_salsa208_CONSTBYTES 16U +SODIUM_EXPORT +size_t crypto_core_salsa208_constbytes(void) + __attribute__ ((deprecated)); + +SODIUM_EXPORT +int crypto_core_salsa208(unsigned char *out, const unsigned char *in, + const unsigned char *k, const unsigned char *c) + __attribute__ ((nonnull(1, 2, 3))); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_generichash.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_generichash.h new file mode 100644 index 000000000..d897e5d26 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_generichash.h @@ -0,0 +1,84 @@ +#ifndef crypto_generichash_H +#define crypto_generichash_H + +#include + +#include "crypto_generichash_blake2b.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_generichash_BYTES_MIN crypto_generichash_blake2b_BYTES_MIN +SODIUM_EXPORT +size_t crypto_generichash_bytes_min(void); + +#define crypto_generichash_BYTES_MAX crypto_generichash_blake2b_BYTES_MAX +SODIUM_EXPORT +size_t crypto_generichash_bytes_max(void); + +#define crypto_generichash_BYTES crypto_generichash_blake2b_BYTES +SODIUM_EXPORT +size_t crypto_generichash_bytes(void); + +#define crypto_generichash_KEYBYTES_MIN crypto_generichash_blake2b_KEYBYTES_MIN +SODIUM_EXPORT +size_t crypto_generichash_keybytes_min(void); + +#define crypto_generichash_KEYBYTES_MAX crypto_generichash_blake2b_KEYBYTES_MAX +SODIUM_EXPORT +size_t crypto_generichash_keybytes_max(void); + +#define crypto_generichash_KEYBYTES crypto_generichash_blake2b_KEYBYTES +SODIUM_EXPORT +size_t crypto_generichash_keybytes(void); + +#define crypto_generichash_PRIMITIVE "blake2b" +SODIUM_EXPORT +const char *crypto_generichash_primitive(void); + +/* + * Important when writing bindings for other programming languages: + * the state address should be 64-bytes aligned. + */ +typedef crypto_generichash_blake2b_state crypto_generichash_state; + +SODIUM_EXPORT +size_t crypto_generichash_statebytes(void); + +SODIUM_EXPORT +int crypto_generichash(unsigned char *out, size_t outlen, + const unsigned char *in, unsigned long long inlen, + const unsigned char *key, size_t keylen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_generichash_init(crypto_generichash_state *state, + const unsigned char *key, + const size_t keylen, const size_t outlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_generichash_update(crypto_generichash_state *state, + const unsigned char *in, + unsigned long long inlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_generichash_final(crypto_generichash_state *state, + unsigned char *out, const size_t outlen) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_generichash_keygen(unsigned char k[crypto_generichash_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_generichash_blake2b.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_generichash_blake2b.h new file mode 100644 index 000000000..fee9d8ad1 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_generichash_blake2b.h @@ -0,0 +1,118 @@ +#ifndef crypto_generichash_blake2b_H +#define crypto_generichash_blake2b_H + +#include +#include +#include + +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#if defined(__IBMC__) || defined(__SUNPRO_C) || defined(__SUNPRO_CC) +# pragma pack(1) +#else +# pragma pack(push, 1) +#endif + +typedef struct CRYPTO_ALIGN(64) crypto_generichash_blake2b_state { + unsigned char opaque[384]; +} crypto_generichash_blake2b_state; + +#if defined(__IBMC__) || defined(__SUNPRO_C) || defined(__SUNPRO_CC) +# pragma pack() +#else +# pragma pack(pop) +#endif + +#define crypto_generichash_blake2b_BYTES_MIN 16U +SODIUM_EXPORT +size_t crypto_generichash_blake2b_bytes_min(void); + +#define crypto_generichash_blake2b_BYTES_MAX 64U +SODIUM_EXPORT +size_t crypto_generichash_blake2b_bytes_max(void); + +#define crypto_generichash_blake2b_BYTES 32U +SODIUM_EXPORT +size_t crypto_generichash_blake2b_bytes(void); + +#define crypto_generichash_blake2b_KEYBYTES_MIN 16U +SODIUM_EXPORT +size_t crypto_generichash_blake2b_keybytes_min(void); + +#define crypto_generichash_blake2b_KEYBYTES_MAX 64U +SODIUM_EXPORT +size_t crypto_generichash_blake2b_keybytes_max(void); + +#define crypto_generichash_blake2b_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_generichash_blake2b_keybytes(void); + +#define crypto_generichash_blake2b_SALTBYTES 16U +SODIUM_EXPORT +size_t crypto_generichash_blake2b_saltbytes(void); + +#define crypto_generichash_blake2b_PERSONALBYTES 16U +SODIUM_EXPORT +size_t crypto_generichash_blake2b_personalbytes(void); + +SODIUM_EXPORT +size_t crypto_generichash_blake2b_statebytes(void); + +SODIUM_EXPORT +int crypto_generichash_blake2b(unsigned char *out, size_t outlen, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *key, size_t keylen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_generichash_blake2b_salt_personal(unsigned char *out, size_t outlen, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *key, + size_t keylen, + const unsigned char *salt, + const unsigned char *personal) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_generichash_blake2b_init(crypto_generichash_blake2b_state *state, + const unsigned char *key, + const size_t keylen, const size_t outlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_generichash_blake2b_init_salt_personal(crypto_generichash_blake2b_state *state, + const unsigned char *key, + const size_t keylen, const size_t outlen, + const unsigned char *salt, + const unsigned char *personal) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_generichash_blake2b_update(crypto_generichash_blake2b_state *state, + const unsigned char *in, + unsigned long long inlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_generichash_blake2b_final(crypto_generichash_blake2b_state *state, + unsigned char *out, + const size_t outlen) __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_generichash_blake2b_keygen(unsigned char k[crypto_generichash_blake2b_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_hash.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_hash.h new file mode 100644 index 000000000..8752f9caf --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_hash.h @@ -0,0 +1,40 @@ +#ifndef crypto_hash_H +#define crypto_hash_H + +/* + * WARNING: Unless you absolutely need to use SHA512 for interoperatibility, + * purposes, you might want to consider crypto_generichash() instead. + * Unlike SHA512, crypto_generichash() is not vulnerable to length + * extension attacks. + */ + +#include + +#include "crypto_hash_sha512.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_hash_BYTES crypto_hash_sha512_BYTES +SODIUM_EXPORT +size_t crypto_hash_bytes(void); + +SODIUM_EXPORT +int crypto_hash(unsigned char *out, const unsigned char *in, + unsigned long long inlen) __attribute__ ((nonnull(1))); + +#define crypto_hash_PRIMITIVE "sha512" +SODIUM_EXPORT +const char *crypto_hash_primitive(void) + __attribute__ ((warn_unused_result)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_hash_sha256.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_hash_sha256.h new file mode 100644 index 000000000..b18217e18 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_hash_sha256.h @@ -0,0 +1,60 @@ +#ifndef crypto_hash_sha256_H +#define crypto_hash_sha256_H + +/* + * WARNING: Unless you absolutely need to use SHA256 for interoperatibility, + * purposes, you might want to consider crypto_generichash() instead. + * Unlike SHA256, crypto_generichash() is not vulnerable to length + * extension attacks. + */ + +#include +#include +#include + +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +typedef struct crypto_hash_sha256_state { + uint32_t state[8]; + uint64_t count; + uint8_t buf[64]; +} crypto_hash_sha256_state; + +SODIUM_EXPORT +size_t crypto_hash_sha256_statebytes(void); + +#define crypto_hash_sha256_BYTES 32U +SODIUM_EXPORT +size_t crypto_hash_sha256_bytes(void); + +SODIUM_EXPORT +int crypto_hash_sha256(unsigned char *out, const unsigned char *in, + unsigned long long inlen) __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_hash_sha256_init(crypto_hash_sha256_state *state) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_hash_sha256_update(crypto_hash_sha256_state *state, + const unsigned char *in, + unsigned long long inlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_hash_sha256_final(crypto_hash_sha256_state *state, + unsigned char *out) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_hash_sha512.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_hash_sha512.h new file mode 100644 index 000000000..8efa7193a --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_hash_sha512.h @@ -0,0 +1,60 @@ +#ifndef crypto_hash_sha512_H +#define crypto_hash_sha512_H + +/* + * WARNING: Unless you absolutely need to use SHA512 for interoperatibility, + * purposes, you might want to consider crypto_generichash() instead. + * Unlike SHA512, crypto_generichash() is not vulnerable to length + * extension attacks. + */ + +#include +#include +#include + +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +typedef struct crypto_hash_sha512_state { + uint64_t state[8]; + uint64_t count[2]; + uint8_t buf[128]; +} crypto_hash_sha512_state; + +SODIUM_EXPORT +size_t crypto_hash_sha512_statebytes(void); + +#define crypto_hash_sha512_BYTES 64U +SODIUM_EXPORT +size_t crypto_hash_sha512_bytes(void); + +SODIUM_EXPORT +int crypto_hash_sha512(unsigned char *out, const unsigned char *in, + unsigned long long inlen) __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_hash_sha512_init(crypto_hash_sha512_state *state) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_hash_sha512_update(crypto_hash_sha512_state *state, + const unsigned char *in, + unsigned long long inlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_hash_sha512_final(crypto_hash_sha512_state *state, + unsigned char *out) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_kdf.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_kdf.h new file mode 100644 index 000000000..ac2fc6183 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_kdf.h @@ -0,0 +1,53 @@ +#ifndef crypto_kdf_H +#define crypto_kdf_H + +#include +#include + +#include "crypto_kdf_blake2b.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_kdf_BYTES_MIN crypto_kdf_blake2b_BYTES_MIN +SODIUM_EXPORT +size_t crypto_kdf_bytes_min(void); + +#define crypto_kdf_BYTES_MAX crypto_kdf_blake2b_BYTES_MAX +SODIUM_EXPORT +size_t crypto_kdf_bytes_max(void); + +#define crypto_kdf_CONTEXTBYTES crypto_kdf_blake2b_CONTEXTBYTES +SODIUM_EXPORT +size_t crypto_kdf_contextbytes(void); + +#define crypto_kdf_KEYBYTES crypto_kdf_blake2b_KEYBYTES +SODIUM_EXPORT +size_t crypto_kdf_keybytes(void); + +#define crypto_kdf_PRIMITIVE "blake2b" +SODIUM_EXPORT +const char *crypto_kdf_primitive(void) + __attribute__ ((warn_unused_result)); + +SODIUM_EXPORT +int crypto_kdf_derive_from_key(unsigned char *subkey, size_t subkey_len, + uint64_t subkey_id, + const char ctx[crypto_kdf_CONTEXTBYTES], + const unsigned char key[crypto_kdf_KEYBYTES]) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_kdf_keygen(unsigned char k[crypto_kdf_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_kdf_blake2b.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_kdf_blake2b.h new file mode 100644 index 000000000..3ae47dd32 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_kdf_blake2b.h @@ -0,0 +1,44 @@ +#ifndef crypto_kdf_blake2b_H +#define crypto_kdf_blake2b_H + +#include +#include + +#include "crypto_kdf_blake2b.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_kdf_blake2b_BYTES_MIN 16 +SODIUM_EXPORT +size_t crypto_kdf_blake2b_bytes_min(void); + +#define crypto_kdf_blake2b_BYTES_MAX 64 +SODIUM_EXPORT +size_t crypto_kdf_blake2b_bytes_max(void); + +#define crypto_kdf_blake2b_CONTEXTBYTES 8 +SODIUM_EXPORT +size_t crypto_kdf_blake2b_contextbytes(void); + +#define crypto_kdf_blake2b_KEYBYTES 32 +SODIUM_EXPORT +size_t crypto_kdf_blake2b_keybytes(void); + +SODIUM_EXPORT +int crypto_kdf_blake2b_derive_from_key(unsigned char *subkey, size_t subkey_len, + uint64_t subkey_id, + const char ctx[crypto_kdf_blake2b_CONTEXTBYTES], + const unsigned char key[crypto_kdf_blake2b_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_kx.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_kx.h new file mode 100644 index 000000000..347132c32 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_kx.h @@ -0,0 +1,66 @@ +#ifndef crypto_kx_H +#define crypto_kx_H + +#include + +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_kx_PUBLICKEYBYTES 32 +SODIUM_EXPORT +size_t crypto_kx_publickeybytes(void); + +#define crypto_kx_SECRETKEYBYTES 32 +SODIUM_EXPORT +size_t crypto_kx_secretkeybytes(void); + +#define crypto_kx_SEEDBYTES 32 +SODIUM_EXPORT +size_t crypto_kx_seedbytes(void); + +#define crypto_kx_SESSIONKEYBYTES 32 +SODIUM_EXPORT +size_t crypto_kx_sessionkeybytes(void); + +#define crypto_kx_PRIMITIVE "x25519blake2b" +SODIUM_EXPORT +const char *crypto_kx_primitive(void); + +SODIUM_EXPORT +int crypto_kx_seed_keypair(unsigned char pk[crypto_kx_PUBLICKEYBYTES], + unsigned char sk[crypto_kx_SECRETKEYBYTES], + const unsigned char seed[crypto_kx_SEEDBYTES]) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_kx_keypair(unsigned char pk[crypto_kx_PUBLICKEYBYTES], + unsigned char sk[crypto_kx_SECRETKEYBYTES]) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_kx_client_session_keys(unsigned char rx[crypto_kx_SESSIONKEYBYTES], + unsigned char tx[crypto_kx_SESSIONKEYBYTES], + const unsigned char client_pk[crypto_kx_PUBLICKEYBYTES], + const unsigned char client_sk[crypto_kx_SECRETKEYBYTES], + const unsigned char server_pk[crypto_kx_PUBLICKEYBYTES]) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(3, 4, 5))); + +SODIUM_EXPORT +int crypto_kx_server_session_keys(unsigned char rx[crypto_kx_SESSIONKEYBYTES], + unsigned char tx[crypto_kx_SESSIONKEYBYTES], + const unsigned char server_pk[crypto_kx_PUBLICKEYBYTES], + const unsigned char server_sk[crypto_kx_SECRETKEYBYTES], + const unsigned char client_pk[crypto_kx_PUBLICKEYBYTES]) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(3, 4, 5))); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_onetimeauth.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_onetimeauth.h new file mode 100644 index 000000000..7cd7b0706 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_onetimeauth.h @@ -0,0 +1,65 @@ +#ifndef crypto_onetimeauth_H +#define crypto_onetimeauth_H + +#include + +#include "crypto_onetimeauth_poly1305.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +typedef crypto_onetimeauth_poly1305_state crypto_onetimeauth_state; + +SODIUM_EXPORT +size_t crypto_onetimeauth_statebytes(void); + +#define crypto_onetimeauth_BYTES crypto_onetimeauth_poly1305_BYTES +SODIUM_EXPORT +size_t crypto_onetimeauth_bytes(void); + +#define crypto_onetimeauth_KEYBYTES crypto_onetimeauth_poly1305_KEYBYTES +SODIUM_EXPORT +size_t crypto_onetimeauth_keybytes(void); + +#define crypto_onetimeauth_PRIMITIVE "poly1305" +SODIUM_EXPORT +const char *crypto_onetimeauth_primitive(void); + +SODIUM_EXPORT +int crypto_onetimeauth(unsigned char *out, const unsigned char *in, + unsigned long long inlen, const unsigned char *k) + __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_onetimeauth_verify(const unsigned char *h, const unsigned char *in, + unsigned long long inlen, const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_onetimeauth_init(crypto_onetimeauth_state *state, + const unsigned char *key) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_onetimeauth_update(crypto_onetimeauth_state *state, + const unsigned char *in, + unsigned long long inlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_onetimeauth_final(crypto_onetimeauth_state *state, + unsigned char *out) __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_onetimeauth_keygen(unsigned char k[crypto_onetimeauth_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_onetimeauth_poly1305.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_onetimeauth_poly1305.h new file mode 100644 index 000000000..f3e34d86d --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_onetimeauth_poly1305.h @@ -0,0 +1,72 @@ +#ifndef crypto_onetimeauth_poly1305_H +#define crypto_onetimeauth_poly1305_H + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#include +#include +#include + +#include + +#include "export.h" + +typedef struct CRYPTO_ALIGN(16) crypto_onetimeauth_poly1305_state { + unsigned char opaque[256]; +} crypto_onetimeauth_poly1305_state; + +SODIUM_EXPORT +size_t crypto_onetimeauth_poly1305_statebytes(void); + +#define crypto_onetimeauth_poly1305_BYTES 16U +SODIUM_EXPORT +size_t crypto_onetimeauth_poly1305_bytes(void); + +#define crypto_onetimeauth_poly1305_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_onetimeauth_poly1305_keybytes(void); + +SODIUM_EXPORT +int crypto_onetimeauth_poly1305(unsigned char *out, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *k) + __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_onetimeauth_poly1305_verify(const unsigned char *h, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_onetimeauth_poly1305_init(crypto_onetimeauth_poly1305_state *state, + const unsigned char *key) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_onetimeauth_poly1305_update(crypto_onetimeauth_poly1305_state *state, + const unsigned char *in, + unsigned long long inlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_onetimeauth_poly1305_final(crypto_onetimeauth_poly1305_state *state, + unsigned char *out) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_onetimeauth_poly1305_keygen(unsigned char k[crypto_onetimeauth_poly1305_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_pwhash.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_pwhash.h new file mode 100644 index 000000000..585a993ef --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_pwhash.h @@ -0,0 +1,147 @@ +#ifndef crypto_pwhash_H +#define crypto_pwhash_H + +#include + +#include "crypto_pwhash_argon2i.h" +#include "crypto_pwhash_argon2id.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_pwhash_ALG_ARGON2I13 crypto_pwhash_argon2i_ALG_ARGON2I13 +SODIUM_EXPORT +int crypto_pwhash_alg_argon2i13(void); + +#define crypto_pwhash_ALG_ARGON2ID13 crypto_pwhash_argon2id_ALG_ARGON2ID13 +SODIUM_EXPORT +int crypto_pwhash_alg_argon2id13(void); + +#define crypto_pwhash_ALG_DEFAULT crypto_pwhash_ALG_ARGON2ID13 +SODIUM_EXPORT +int crypto_pwhash_alg_default(void); + +#define crypto_pwhash_BYTES_MIN crypto_pwhash_argon2id_BYTES_MIN +SODIUM_EXPORT +size_t crypto_pwhash_bytes_min(void); + +#define crypto_pwhash_BYTES_MAX crypto_pwhash_argon2id_BYTES_MAX +SODIUM_EXPORT +size_t crypto_pwhash_bytes_max(void); + +#define crypto_pwhash_PASSWD_MIN crypto_pwhash_argon2id_PASSWD_MIN +SODIUM_EXPORT +size_t crypto_pwhash_passwd_min(void); + +#define crypto_pwhash_PASSWD_MAX crypto_pwhash_argon2id_PASSWD_MAX +SODIUM_EXPORT +size_t crypto_pwhash_passwd_max(void); + +#define crypto_pwhash_SALTBYTES crypto_pwhash_argon2id_SALTBYTES +SODIUM_EXPORT +size_t crypto_pwhash_saltbytes(void); + +#define crypto_pwhash_STRBYTES crypto_pwhash_argon2id_STRBYTES +SODIUM_EXPORT +size_t crypto_pwhash_strbytes(void); + +#define crypto_pwhash_STRPREFIX crypto_pwhash_argon2id_STRPREFIX +SODIUM_EXPORT +const char *crypto_pwhash_strprefix(void); + +#define crypto_pwhash_OPSLIMIT_MIN crypto_pwhash_argon2id_OPSLIMIT_MIN +SODIUM_EXPORT +size_t crypto_pwhash_opslimit_min(void); + +#define crypto_pwhash_OPSLIMIT_MAX crypto_pwhash_argon2id_OPSLIMIT_MAX +SODIUM_EXPORT +size_t crypto_pwhash_opslimit_max(void); + +#define crypto_pwhash_MEMLIMIT_MIN crypto_pwhash_argon2id_MEMLIMIT_MIN +SODIUM_EXPORT +size_t crypto_pwhash_memlimit_min(void); + +#define crypto_pwhash_MEMLIMIT_MAX crypto_pwhash_argon2id_MEMLIMIT_MAX +SODIUM_EXPORT +size_t crypto_pwhash_memlimit_max(void); + +#define crypto_pwhash_OPSLIMIT_INTERACTIVE crypto_pwhash_argon2id_OPSLIMIT_INTERACTIVE +SODIUM_EXPORT +size_t crypto_pwhash_opslimit_interactive(void); + +#define crypto_pwhash_MEMLIMIT_INTERACTIVE crypto_pwhash_argon2id_MEMLIMIT_INTERACTIVE +SODIUM_EXPORT +size_t crypto_pwhash_memlimit_interactive(void); + +#define crypto_pwhash_OPSLIMIT_MODERATE crypto_pwhash_argon2id_OPSLIMIT_MODERATE +SODIUM_EXPORT +size_t crypto_pwhash_opslimit_moderate(void); + +#define crypto_pwhash_MEMLIMIT_MODERATE crypto_pwhash_argon2id_MEMLIMIT_MODERATE +SODIUM_EXPORT +size_t crypto_pwhash_memlimit_moderate(void); + +#define crypto_pwhash_OPSLIMIT_SENSITIVE crypto_pwhash_argon2id_OPSLIMIT_SENSITIVE +SODIUM_EXPORT +size_t crypto_pwhash_opslimit_sensitive(void); + +#define crypto_pwhash_MEMLIMIT_SENSITIVE crypto_pwhash_argon2id_MEMLIMIT_SENSITIVE +SODIUM_EXPORT +size_t crypto_pwhash_memlimit_sensitive(void); + +/* + * With this function, do not forget to store all parameters, including the + * algorithm identifier in order to produce deterministic output. + * The crypto_pwhash_* definitions, including crypto_pwhash_ALG_DEFAULT, + * may change. + */ +SODIUM_EXPORT +int crypto_pwhash(unsigned char * const out, unsigned long long outlen, + const char * const passwd, unsigned long long passwdlen, + const unsigned char * const salt, + unsigned long long opslimit, size_t memlimit, int alg) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +/* + * The output string already includes all the required parameters, including + * the algorithm identifier. The string is all that has to be stored in + * order to verify a password. + */ +SODIUM_EXPORT +int crypto_pwhash_str(char out[crypto_pwhash_STRBYTES], + const char * const passwd, unsigned long long passwdlen, + unsigned long long opslimit, size_t memlimit) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_str_alg(char out[crypto_pwhash_STRBYTES], + const char * const passwd, unsigned long long passwdlen, + unsigned long long opslimit, size_t memlimit, int alg) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_str_verify(const char str[crypto_pwhash_STRBYTES], + const char * const passwd, + unsigned long long passwdlen) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_str_needs_rehash(const char str[crypto_pwhash_STRBYTES], + unsigned long long opslimit, size_t memlimit) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +#define crypto_pwhash_PRIMITIVE "argon2i" +SODIUM_EXPORT +const char *crypto_pwhash_primitive(void) + __attribute__ ((warn_unused_result)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_pwhash_argon2i.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_pwhash_argon2i.h new file mode 100644 index 000000000..88ff6221d --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_pwhash_argon2i.h @@ -0,0 +1,122 @@ +#ifndef crypto_pwhash_argon2i_H +#define crypto_pwhash_argon2i_H + +#include +#include +#include + +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_pwhash_argon2i_ALG_ARGON2I13 1 +SODIUM_EXPORT +int crypto_pwhash_argon2i_alg_argon2i13(void); + +#define crypto_pwhash_argon2i_BYTES_MIN 16U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_bytes_min(void); + +#define crypto_pwhash_argon2i_BYTES_MAX SODIUM_MIN(SODIUM_SIZE_MAX, 4294967295U) +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_bytes_max(void); + +#define crypto_pwhash_argon2i_PASSWD_MIN 0U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_passwd_min(void); + +#define crypto_pwhash_argon2i_PASSWD_MAX 4294967295U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_passwd_max(void); + +#define crypto_pwhash_argon2i_SALTBYTES 16U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_saltbytes(void); + +#define crypto_pwhash_argon2i_STRBYTES 128U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_strbytes(void); + +#define crypto_pwhash_argon2i_STRPREFIX "$argon2i$" +SODIUM_EXPORT +const char *crypto_pwhash_argon2i_strprefix(void); + +#define crypto_pwhash_argon2i_OPSLIMIT_MIN 3U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_opslimit_min(void); + +#define crypto_pwhash_argon2i_OPSLIMIT_MAX 4294967295U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_opslimit_max(void); + +#define crypto_pwhash_argon2i_MEMLIMIT_MIN 8192U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_memlimit_min(void); + +#define crypto_pwhash_argon2i_MEMLIMIT_MAX \ + ((SIZE_MAX >= 4398046510080U) ? 4398046510080U : (SIZE_MAX >= 2147483648U) ? 2147483648U : 32768U) +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_memlimit_max(void); + +#define crypto_pwhash_argon2i_OPSLIMIT_INTERACTIVE 4U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_opslimit_interactive(void); + +#define crypto_pwhash_argon2i_MEMLIMIT_INTERACTIVE 33554432U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_memlimit_interactive(void); + +#define crypto_pwhash_argon2i_OPSLIMIT_MODERATE 6U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_opslimit_moderate(void); + +#define crypto_pwhash_argon2i_MEMLIMIT_MODERATE 134217728U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_memlimit_moderate(void); + +#define crypto_pwhash_argon2i_OPSLIMIT_SENSITIVE 8U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_opslimit_sensitive(void); + +#define crypto_pwhash_argon2i_MEMLIMIT_SENSITIVE 536870912U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_memlimit_sensitive(void); + +SODIUM_EXPORT +int crypto_pwhash_argon2i(unsigned char * const out, + unsigned long long outlen, + const char * const passwd, + unsigned long long passwdlen, + const unsigned char * const salt, + unsigned long long opslimit, size_t memlimit, + int alg) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_argon2i_str(char out[crypto_pwhash_argon2i_STRBYTES], + const char * const passwd, + unsigned long long passwdlen, + unsigned long long opslimit, size_t memlimit) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_argon2i_str_verify(const char str[crypto_pwhash_argon2i_STRBYTES], + const char * const passwd, + unsigned long long passwdlen) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_argon2i_str_needs_rehash(const char str[crypto_pwhash_argon2i_STRBYTES], + unsigned long long opslimit, size_t memlimit) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_pwhash_argon2id.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_pwhash_argon2id.h new file mode 100644 index 000000000..7183abd18 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_pwhash_argon2id.h @@ -0,0 +1,122 @@ +#ifndef crypto_pwhash_argon2id_H +#define crypto_pwhash_argon2id_H + +#include +#include +#include + +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_pwhash_argon2id_ALG_ARGON2ID13 2 +SODIUM_EXPORT +int crypto_pwhash_argon2id_alg_argon2id13(void); + +#define crypto_pwhash_argon2id_BYTES_MIN 16U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_bytes_min(void); + +#define crypto_pwhash_argon2id_BYTES_MAX SODIUM_MIN(SODIUM_SIZE_MAX, 4294967295U) +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_bytes_max(void); + +#define crypto_pwhash_argon2id_PASSWD_MIN 0U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_passwd_min(void); + +#define crypto_pwhash_argon2id_PASSWD_MAX 4294967295U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_passwd_max(void); + +#define crypto_pwhash_argon2id_SALTBYTES 16U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_saltbytes(void); + +#define crypto_pwhash_argon2id_STRBYTES 128U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_strbytes(void); + +#define crypto_pwhash_argon2id_STRPREFIX "$argon2id$" +SODIUM_EXPORT +const char *crypto_pwhash_argon2id_strprefix(void); + +#define crypto_pwhash_argon2id_OPSLIMIT_MIN 1U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_opslimit_min(void); + +#define crypto_pwhash_argon2id_OPSLIMIT_MAX 4294967295U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_opslimit_max(void); + +#define crypto_pwhash_argon2id_MEMLIMIT_MIN 8192U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_memlimit_min(void); + +#define crypto_pwhash_argon2id_MEMLIMIT_MAX \ + ((SIZE_MAX >= 4398046510080U) ? 4398046510080U : (SIZE_MAX >= 2147483648U) ? 2147483648U : 32768U) +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_memlimit_max(void); + +#define crypto_pwhash_argon2id_OPSLIMIT_INTERACTIVE 2U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_opslimit_interactive(void); + +#define crypto_pwhash_argon2id_MEMLIMIT_INTERACTIVE 67108864U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_memlimit_interactive(void); + +#define crypto_pwhash_argon2id_OPSLIMIT_MODERATE 3U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_opslimit_moderate(void); + +#define crypto_pwhash_argon2id_MEMLIMIT_MODERATE 268435456U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_memlimit_moderate(void); + +#define crypto_pwhash_argon2id_OPSLIMIT_SENSITIVE 4U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_opslimit_sensitive(void); + +#define crypto_pwhash_argon2id_MEMLIMIT_SENSITIVE 1073741824U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_memlimit_sensitive(void); + +SODIUM_EXPORT +int crypto_pwhash_argon2id(unsigned char * const out, + unsigned long long outlen, + const char * const passwd, + unsigned long long passwdlen, + const unsigned char * const salt, + unsigned long long opslimit, size_t memlimit, + int alg) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_argon2id_str(char out[crypto_pwhash_argon2id_STRBYTES], + const char * const passwd, + unsigned long long passwdlen, + unsigned long long opslimit, size_t memlimit) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_argon2id_str_verify(const char str[crypto_pwhash_argon2id_STRBYTES], + const char * const passwd, + unsigned long long passwdlen) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_argon2id_str_needs_rehash(const char str[crypto_pwhash_argon2id_STRBYTES], + unsigned long long opslimit, size_t memlimit) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_pwhash_scryptsalsa208sha256.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_pwhash_scryptsalsa208sha256.h new file mode 100644 index 000000000..5c0bf7d39 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_pwhash_scryptsalsa208sha256.h @@ -0,0 +1,120 @@ +#ifndef crypto_pwhash_scryptsalsa208sha256_H +#define crypto_pwhash_scryptsalsa208sha256_H + +#include +#include +#include + +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_pwhash_scryptsalsa208sha256_BYTES_MIN 16U +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_bytes_min(void); + +#define crypto_pwhash_scryptsalsa208sha256_BYTES_MAX \ + SODIUM_MIN(SODIUM_SIZE_MAX, 0x1fffffffe0ULL) +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_bytes_max(void); + +#define crypto_pwhash_scryptsalsa208sha256_PASSWD_MIN 0U +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_passwd_min(void); + +#define crypto_pwhash_scryptsalsa208sha256_PASSWD_MAX SODIUM_SIZE_MAX +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_passwd_max(void); + +#define crypto_pwhash_scryptsalsa208sha256_SALTBYTES 32U +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_saltbytes(void); + +#define crypto_pwhash_scryptsalsa208sha256_STRBYTES 102U +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_strbytes(void); + +#define crypto_pwhash_scryptsalsa208sha256_STRPREFIX "$7$" +SODIUM_EXPORT +const char *crypto_pwhash_scryptsalsa208sha256_strprefix(void); + +#define crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_MIN 32768U +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_opslimit_min(void); + +#define crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_MAX 4294967295U +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_opslimit_max(void); + +#define crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_MIN 16777216U +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_memlimit_min(void); + +#define crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_MAX \ + SODIUM_MIN(SIZE_MAX, 68719476736ULL) +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_memlimit_max(void); + +#define crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_INTERACTIVE 524288U +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_opslimit_interactive(void); + +#define crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_INTERACTIVE 16777216U +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_memlimit_interactive(void); + +#define crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_SENSITIVE 33554432U +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_opslimit_sensitive(void); + +#define crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_SENSITIVE 1073741824U +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_memlimit_sensitive(void); + +SODIUM_EXPORT +int crypto_pwhash_scryptsalsa208sha256(unsigned char * const out, + unsigned long long outlen, + const char * const passwd, + unsigned long long passwdlen, + const unsigned char * const salt, + unsigned long long opslimit, + size_t memlimit) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_scryptsalsa208sha256_str(char out[crypto_pwhash_scryptsalsa208sha256_STRBYTES], + const char * const passwd, + unsigned long long passwdlen, + unsigned long long opslimit, + size_t memlimit) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_scryptsalsa208sha256_str_verify(const char str[crypto_pwhash_scryptsalsa208sha256_STRBYTES], + const char * const passwd, + unsigned long long passwdlen) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_scryptsalsa208sha256_ll(const uint8_t * passwd, size_t passwdlen, + const uint8_t * salt, size_t saltlen, + uint64_t N, uint32_t r, uint32_t p, + uint8_t * buf, size_t buflen) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_scryptsalsa208sha256_str_needs_rehash(const char str[crypto_pwhash_scryptsalsa208sha256_STRBYTES], + unsigned long long opslimit, + size_t memlimit) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_scalarmult.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_scalarmult.h new file mode 100644 index 000000000..1c6858537 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_scalarmult.h @@ -0,0 +1,46 @@ +#ifndef crypto_scalarmult_H +#define crypto_scalarmult_H + +#include + +#include "crypto_scalarmult_curve25519.h" +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_scalarmult_BYTES crypto_scalarmult_curve25519_BYTES +SODIUM_EXPORT +size_t crypto_scalarmult_bytes(void); + +#define crypto_scalarmult_SCALARBYTES crypto_scalarmult_curve25519_SCALARBYTES +SODIUM_EXPORT +size_t crypto_scalarmult_scalarbytes(void); + +#define crypto_scalarmult_PRIMITIVE "curve25519" +SODIUM_EXPORT +const char *crypto_scalarmult_primitive(void); + +SODIUM_EXPORT +int crypto_scalarmult_base(unsigned char *q, const unsigned char *n) + __attribute__ ((nonnull)); + +/* + * NOTE: Do not use the result of this function directly for key exchange. + * + * Hash the result with the public keys in order to compute a shared + * secret key: H(q || client_pk || server_pk) + * + * Or unless this is not an option, use the crypto_kx() API instead. + */ +SODIUM_EXPORT +int crypto_scalarmult(unsigned char *q, const unsigned char *n, + const unsigned char *p) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_scalarmult_curve25519.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_scalarmult_curve25519.h new file mode 100644 index 000000000..60e9d0c5a --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_scalarmult_curve25519.h @@ -0,0 +1,42 @@ +#ifndef crypto_scalarmult_curve25519_H +#define crypto_scalarmult_curve25519_H + +#include + +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_scalarmult_curve25519_BYTES 32U +SODIUM_EXPORT +size_t crypto_scalarmult_curve25519_bytes(void); + +#define crypto_scalarmult_curve25519_SCALARBYTES 32U +SODIUM_EXPORT +size_t crypto_scalarmult_curve25519_scalarbytes(void); + +/* + * NOTE: Do not use the result of this function directly for key exchange. + * + * Hash the result with the public keys in order to compute a shared + * secret key: H(q || client_pk || server_pk) + * + * Or unless this is not an option, use the crypto_kx() API instead. + */ +SODIUM_EXPORT +int crypto_scalarmult_curve25519(unsigned char *q, const unsigned char *n, + const unsigned char *p) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_scalarmult_curve25519_base(unsigned char *q, + const unsigned char *n) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_scalarmult_ed25519.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_scalarmult_ed25519.h new file mode 100644 index 000000000..2dfa4d707 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_scalarmult_ed25519.h @@ -0,0 +1,51 @@ + +#ifndef crypto_scalarmult_ed25519_H +#define crypto_scalarmult_ed25519_H + +#include + +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_scalarmult_ed25519_BYTES 32U +SODIUM_EXPORT +size_t crypto_scalarmult_ed25519_bytes(void); + +#define crypto_scalarmult_ed25519_SCALARBYTES 32U +SODIUM_EXPORT +size_t crypto_scalarmult_ed25519_scalarbytes(void); + +/* + * NOTE: Do not use the result of this function directly for key exchange. + * + * Hash the result with the public keys in order to compute a shared + * secret key: H(q || client_pk || server_pk) + * + * Or unless this is not an option, use the crypto_kx() API instead. + */ +SODIUM_EXPORT +int crypto_scalarmult_ed25519(unsigned char *q, const unsigned char *n, + const unsigned char *p) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_scalarmult_ed25519_noclamp(unsigned char *q, const unsigned char *n, + const unsigned char *p) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_scalarmult_ed25519_base(unsigned char *q, const unsigned char *n) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_scalarmult_ed25519_base_noclamp(unsigned char *q, const unsigned char *n) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_scalarmult_ristretto255.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_scalarmult_ristretto255.h new file mode 100644 index 000000000..40a45ccef --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_scalarmult_ristretto255.h @@ -0,0 +1,43 @@ + +#ifndef crypto_scalarmult_ristretto255_H +#define crypto_scalarmult_ristretto255_H + +#include + +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_scalarmult_ristretto255_BYTES 32U +SODIUM_EXPORT +size_t crypto_scalarmult_ristretto255_bytes(void); + +#define crypto_scalarmult_ristretto255_SCALARBYTES 32U +SODIUM_EXPORT +size_t crypto_scalarmult_ristretto255_scalarbytes(void); + +/* + * NOTE: Do not use the result of this function directly for key exchange. + * + * Hash the result with the public keys in order to compute a shared + * secret key: H(q || client_pk || server_pk) + * + * Or unless this is not an option, use the crypto_kx() API instead. + */ +SODIUM_EXPORT +int crypto_scalarmult_ristretto255(unsigned char *q, const unsigned char *n, + const unsigned char *p) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_scalarmult_ristretto255_base(unsigned char *q, + const unsigned char *n) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_secretbox.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_secretbox.h new file mode 100644 index 000000000..1d3709db1 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_secretbox.h @@ -0,0 +1,93 @@ +#ifndef crypto_secretbox_H +#define crypto_secretbox_H + +#include + +#include "crypto_secretbox_xsalsa20poly1305.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_secretbox_KEYBYTES crypto_secretbox_xsalsa20poly1305_KEYBYTES +SODIUM_EXPORT +size_t crypto_secretbox_keybytes(void); + +#define crypto_secretbox_NONCEBYTES crypto_secretbox_xsalsa20poly1305_NONCEBYTES +SODIUM_EXPORT +size_t crypto_secretbox_noncebytes(void); + +#define crypto_secretbox_MACBYTES crypto_secretbox_xsalsa20poly1305_MACBYTES +SODIUM_EXPORT +size_t crypto_secretbox_macbytes(void); + +#define crypto_secretbox_PRIMITIVE "xsalsa20poly1305" +SODIUM_EXPORT +const char *crypto_secretbox_primitive(void); + +#define crypto_secretbox_MESSAGEBYTES_MAX crypto_secretbox_xsalsa20poly1305_MESSAGEBYTES_MAX +SODIUM_EXPORT +size_t crypto_secretbox_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_secretbox_easy(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) __attribute__ ((nonnull(1, 4, 5))); + +SODIUM_EXPORT +int crypto_secretbox_open_easy(unsigned char *m, const unsigned char *c, + unsigned long long clen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5))); + +SODIUM_EXPORT +int crypto_secretbox_detached(unsigned char *c, unsigned char *mac, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull(1, 2, 5, 6))); + +SODIUM_EXPORT +int crypto_secretbox_open_detached(unsigned char *m, + const unsigned char *c, + const unsigned char *mac, + unsigned long long clen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 3, 5, 6))); + +SODIUM_EXPORT +void crypto_secretbox_keygen(unsigned char k[crypto_secretbox_KEYBYTES]) + __attribute__ ((nonnull)); + +/* -- NaCl compatibility interface ; Requires padding -- */ + +#define crypto_secretbox_ZEROBYTES crypto_secretbox_xsalsa20poly1305_ZEROBYTES +SODIUM_EXPORT +size_t crypto_secretbox_zerobytes(void); + +#define crypto_secretbox_BOXZEROBYTES crypto_secretbox_xsalsa20poly1305_BOXZEROBYTES +SODIUM_EXPORT +size_t crypto_secretbox_boxzerobytes(void); + +SODIUM_EXPORT +int crypto_secretbox(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) __attribute__ ((nonnull(1, 4, 5))); + +SODIUM_EXPORT +int crypto_secretbox_open(unsigned char *m, const unsigned char *c, + unsigned long long clen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5))); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_secretbox_xchacha20poly1305.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_secretbox_xchacha20poly1305.h new file mode 100644 index 000000000..6ec674e31 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_secretbox_xchacha20poly1305.h @@ -0,0 +1,70 @@ +#ifndef crypto_secretbox_xchacha20poly1305_H +#define crypto_secretbox_xchacha20poly1305_H + +#include +#include "crypto_stream_xchacha20.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_secretbox_xchacha20poly1305_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_secretbox_xchacha20poly1305_keybytes(void); + +#define crypto_secretbox_xchacha20poly1305_NONCEBYTES 24U +SODIUM_EXPORT +size_t crypto_secretbox_xchacha20poly1305_noncebytes(void); + +#define crypto_secretbox_xchacha20poly1305_MACBYTES 16U +SODIUM_EXPORT +size_t crypto_secretbox_xchacha20poly1305_macbytes(void); + +#define crypto_secretbox_xchacha20poly1305_MESSAGEBYTES_MAX \ + (crypto_stream_xchacha20_MESSAGEBYTES_MAX - crypto_secretbox_xchacha20poly1305_MACBYTES) +SODIUM_EXPORT +size_t crypto_secretbox_xchacha20poly1305_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_secretbox_xchacha20poly1305_easy(unsigned char *c, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull(1, 4, 5))); + +SODIUM_EXPORT +int crypto_secretbox_xchacha20poly1305_open_easy(unsigned char *m, + const unsigned char *c, + unsigned long long clen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5))); + +SODIUM_EXPORT +int crypto_secretbox_xchacha20poly1305_detached(unsigned char *c, + unsigned char *mac, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull(1, 2, 5, 6))); + +SODIUM_EXPORT +int crypto_secretbox_xchacha20poly1305_open_detached(unsigned char *m, + const unsigned char *c, + const unsigned char *mac, + unsigned long long clen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 3, 5, 6))); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_secretbox_xsalsa20poly1305.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_secretbox_xsalsa20poly1305.h new file mode 100644 index 000000000..be0874cba --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_secretbox_xsalsa20poly1305.h @@ -0,0 +1,69 @@ +#ifndef crypto_secretbox_xsalsa20poly1305_H +#define crypto_secretbox_xsalsa20poly1305_H + +#include +#include "crypto_stream_xsalsa20.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_secretbox_xsalsa20poly1305_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_secretbox_xsalsa20poly1305_keybytes(void); + +#define crypto_secretbox_xsalsa20poly1305_NONCEBYTES 24U +SODIUM_EXPORT +size_t crypto_secretbox_xsalsa20poly1305_noncebytes(void); + +#define crypto_secretbox_xsalsa20poly1305_MACBYTES 16U +SODIUM_EXPORT +size_t crypto_secretbox_xsalsa20poly1305_macbytes(void); + +/* Only for the libsodium API - The NaCl compatibility API would require BOXZEROBYTES extra bytes */ +#define crypto_secretbox_xsalsa20poly1305_MESSAGEBYTES_MAX \ + (crypto_stream_xsalsa20_MESSAGEBYTES_MAX - crypto_secretbox_xsalsa20poly1305_MACBYTES) +SODIUM_EXPORT +size_t crypto_secretbox_xsalsa20poly1305_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_secretbox_xsalsa20poly1305(unsigned char *c, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull(1, 4, 5))); + +SODIUM_EXPORT +int crypto_secretbox_xsalsa20poly1305_open(unsigned char *m, + const unsigned char *c, + unsigned long long clen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5))); + +SODIUM_EXPORT +void crypto_secretbox_xsalsa20poly1305_keygen(unsigned char k[crypto_secretbox_xsalsa20poly1305_KEYBYTES]) + __attribute__ ((nonnull)); + +/* -- NaCl compatibility interface ; Requires padding -- */ + +#define crypto_secretbox_xsalsa20poly1305_BOXZEROBYTES 16U +SODIUM_EXPORT +size_t crypto_secretbox_xsalsa20poly1305_boxzerobytes(void); + +#define crypto_secretbox_xsalsa20poly1305_ZEROBYTES \ + (crypto_secretbox_xsalsa20poly1305_BOXZEROBYTES + \ + crypto_secretbox_xsalsa20poly1305_MACBYTES) +SODIUM_EXPORT +size_t crypto_secretbox_xsalsa20poly1305_zerobytes(void); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_secretstream_xchacha20poly1305.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_secretstream_xchacha20poly1305.h new file mode 100644 index 000000000..b22e4e931 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_secretstream_xchacha20poly1305.h @@ -0,0 +1,108 @@ +#ifndef crypto_secretstream_xchacha20poly1305_H +#define crypto_secretstream_xchacha20poly1305_H + +#include + +#include "crypto_aead_xchacha20poly1305.h" +#include "crypto_stream_chacha20.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_secretstream_xchacha20poly1305_ABYTES \ + (1U + crypto_aead_xchacha20poly1305_ietf_ABYTES) +SODIUM_EXPORT +size_t crypto_secretstream_xchacha20poly1305_abytes(void); + +#define crypto_secretstream_xchacha20poly1305_HEADERBYTES \ + crypto_aead_xchacha20poly1305_ietf_NPUBBYTES +SODIUM_EXPORT +size_t crypto_secretstream_xchacha20poly1305_headerbytes(void); + +#define crypto_secretstream_xchacha20poly1305_KEYBYTES \ + crypto_aead_xchacha20poly1305_ietf_KEYBYTES +SODIUM_EXPORT +size_t crypto_secretstream_xchacha20poly1305_keybytes(void); + +#define crypto_secretstream_xchacha20poly1305_MESSAGEBYTES_MAX \ + SODIUM_MIN(SODIUM_SIZE_MAX - crypto_secretstream_xchacha20poly1305_ABYTES, \ + (64ULL * ((1ULL << 32) - 2ULL))) +SODIUM_EXPORT +size_t crypto_secretstream_xchacha20poly1305_messagebytes_max(void); + +#define crypto_secretstream_xchacha20poly1305_TAG_MESSAGE 0x00 +SODIUM_EXPORT +unsigned char crypto_secretstream_xchacha20poly1305_tag_message(void); + +#define crypto_secretstream_xchacha20poly1305_TAG_PUSH 0x01 +SODIUM_EXPORT +unsigned char crypto_secretstream_xchacha20poly1305_tag_push(void); + +#define crypto_secretstream_xchacha20poly1305_TAG_REKEY 0x02 +SODIUM_EXPORT +unsigned char crypto_secretstream_xchacha20poly1305_tag_rekey(void); + +#define crypto_secretstream_xchacha20poly1305_TAG_FINAL \ + (crypto_secretstream_xchacha20poly1305_TAG_PUSH | \ + crypto_secretstream_xchacha20poly1305_TAG_REKEY) +SODIUM_EXPORT +unsigned char crypto_secretstream_xchacha20poly1305_tag_final(void); + +typedef struct crypto_secretstream_xchacha20poly1305_state { + unsigned char k[crypto_stream_chacha20_ietf_KEYBYTES]; + unsigned char nonce[crypto_stream_chacha20_ietf_NONCEBYTES]; + unsigned char _pad[8]; +} crypto_secretstream_xchacha20poly1305_state; + +SODIUM_EXPORT +size_t crypto_secretstream_xchacha20poly1305_statebytes(void); + +SODIUM_EXPORT +void crypto_secretstream_xchacha20poly1305_keygen + (unsigned char k[crypto_secretstream_xchacha20poly1305_KEYBYTES]) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_secretstream_xchacha20poly1305_init_push + (crypto_secretstream_xchacha20poly1305_state *state, + unsigned char header[crypto_secretstream_xchacha20poly1305_HEADERBYTES], + const unsigned char k[crypto_secretstream_xchacha20poly1305_KEYBYTES]) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_secretstream_xchacha20poly1305_push + (crypto_secretstream_xchacha20poly1305_state *state, + unsigned char *c, unsigned long long *clen_p, + const unsigned char *m, unsigned long long mlen, + const unsigned char *ad, unsigned long long adlen, unsigned char tag) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_secretstream_xchacha20poly1305_init_pull + (crypto_secretstream_xchacha20poly1305_state *state, + const unsigned char header[crypto_secretstream_xchacha20poly1305_HEADERBYTES], + const unsigned char k[crypto_secretstream_xchacha20poly1305_KEYBYTES]) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_secretstream_xchacha20poly1305_pull + (crypto_secretstream_xchacha20poly1305_state *state, + unsigned char *m, unsigned long long *mlen_p, unsigned char *tag_p, + const unsigned char *c, unsigned long long clen, + const unsigned char *ad, unsigned long long adlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +void crypto_secretstream_xchacha20poly1305_rekey + (crypto_secretstream_xchacha20poly1305_state *state); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_shorthash.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_shorthash.h new file mode 100644 index 000000000..fecaa88bd --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_shorthash.h @@ -0,0 +1,41 @@ +#ifndef crypto_shorthash_H +#define crypto_shorthash_H + +#include + +#include "crypto_shorthash_siphash24.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_shorthash_BYTES crypto_shorthash_siphash24_BYTES +SODIUM_EXPORT +size_t crypto_shorthash_bytes(void); + +#define crypto_shorthash_KEYBYTES crypto_shorthash_siphash24_KEYBYTES +SODIUM_EXPORT +size_t crypto_shorthash_keybytes(void); + +#define crypto_shorthash_PRIMITIVE "siphash24" +SODIUM_EXPORT +const char *crypto_shorthash_primitive(void); + +SODIUM_EXPORT +int crypto_shorthash(unsigned char *out, const unsigned char *in, + unsigned long long inlen, const unsigned char *k) + __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +void crypto_shorthash_keygen(unsigned char k[crypto_shorthash_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_shorthash_siphash24.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_shorthash_siphash24.h new file mode 100644 index 000000000..1e6f72a62 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_shorthash_siphash24.h @@ -0,0 +1,50 @@ +#ifndef crypto_shorthash_siphash24_H +#define crypto_shorthash_siphash24_H + +#include +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +/* -- 64-bit output -- */ + +#define crypto_shorthash_siphash24_BYTES 8U +SODIUM_EXPORT +size_t crypto_shorthash_siphash24_bytes(void); + +#define crypto_shorthash_siphash24_KEYBYTES 16U +SODIUM_EXPORT +size_t crypto_shorthash_siphash24_keybytes(void); + +SODIUM_EXPORT +int crypto_shorthash_siphash24(unsigned char *out, const unsigned char *in, + unsigned long long inlen, const unsigned char *k) + __attribute__ ((nonnull(1, 4))); + +#ifndef SODIUM_LIBRARY_MINIMAL +/* -- 128-bit output -- */ + +#define crypto_shorthash_siphashx24_BYTES 16U +SODIUM_EXPORT +size_t crypto_shorthash_siphashx24_bytes(void); + +#define crypto_shorthash_siphashx24_KEYBYTES 16U +SODIUM_EXPORT +size_t crypto_shorthash_siphashx24_keybytes(void); + +SODIUM_EXPORT +int crypto_shorthash_siphashx24(unsigned char *out, const unsigned char *in, + unsigned long long inlen, const unsigned char *k) + __attribute__ ((nonnull(1, 4))); +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_sign.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_sign.h new file mode 100644 index 000000000..f5fafb123 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_sign.h @@ -0,0 +1,107 @@ +#ifndef crypto_sign_H +#define crypto_sign_H + +/* + * THREAD SAFETY: crypto_sign_keypair() is thread-safe, + * provided that sodium_init() was called before. + * + * Other functions, including crypto_sign_seed_keypair() are always thread-safe. + */ + +#include + +#include "crypto_sign_ed25519.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +typedef crypto_sign_ed25519ph_state crypto_sign_state; + +SODIUM_EXPORT +size_t crypto_sign_statebytes(void); + +#define crypto_sign_BYTES crypto_sign_ed25519_BYTES +SODIUM_EXPORT +size_t crypto_sign_bytes(void); + +#define crypto_sign_SEEDBYTES crypto_sign_ed25519_SEEDBYTES +SODIUM_EXPORT +size_t crypto_sign_seedbytes(void); + +#define crypto_sign_PUBLICKEYBYTES crypto_sign_ed25519_PUBLICKEYBYTES +SODIUM_EXPORT +size_t crypto_sign_publickeybytes(void); + +#define crypto_sign_SECRETKEYBYTES crypto_sign_ed25519_SECRETKEYBYTES +SODIUM_EXPORT +size_t crypto_sign_secretkeybytes(void); + +#define crypto_sign_MESSAGEBYTES_MAX crypto_sign_ed25519_MESSAGEBYTES_MAX +SODIUM_EXPORT +size_t crypto_sign_messagebytes_max(void); + +#define crypto_sign_PRIMITIVE "ed25519" +SODIUM_EXPORT +const char *crypto_sign_primitive(void); + +SODIUM_EXPORT +int crypto_sign_seed_keypair(unsigned char *pk, unsigned char *sk, + const unsigned char *seed) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_sign_keypair(unsigned char *pk, unsigned char *sk) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_sign(unsigned char *sm, unsigned long long *smlen_p, + const unsigned char *m, unsigned long long mlen, + const unsigned char *sk) __attribute__ ((nonnull(1, 5))); + +SODIUM_EXPORT +int crypto_sign_open(unsigned char *m, unsigned long long *mlen_p, + const unsigned char *sm, unsigned long long smlen, + const unsigned char *pk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(3, 5))); + +SODIUM_EXPORT +int crypto_sign_detached(unsigned char *sig, unsigned long long *siglen_p, + const unsigned char *m, unsigned long long mlen, + const unsigned char *sk) __attribute__ ((nonnull(1, 5))); + +SODIUM_EXPORT +int crypto_sign_verify_detached(const unsigned char *sig, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *pk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_sign_init(crypto_sign_state *state); + +SODIUM_EXPORT +int crypto_sign_update(crypto_sign_state *state, + const unsigned char *m, unsigned long long mlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_sign_final_create(crypto_sign_state *state, unsigned char *sig, + unsigned long long *siglen_p, + const unsigned char *sk) + __attribute__ ((nonnull(1, 2, 4))); + +SODIUM_EXPORT +int crypto_sign_final_verify(crypto_sign_state *state, const unsigned char *sig, + const unsigned char *pk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_sign_ed25519.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_sign_ed25519.h new file mode 100644 index 000000000..0fdac42d3 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_sign_ed25519.h @@ -0,0 +1,124 @@ +#ifndef crypto_sign_ed25519_H +#define crypto_sign_ed25519_H + +#include +#include "crypto_hash_sha512.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +typedef struct crypto_sign_ed25519ph_state { + crypto_hash_sha512_state hs; +} crypto_sign_ed25519ph_state; + +SODIUM_EXPORT +size_t crypto_sign_ed25519ph_statebytes(void); + +#define crypto_sign_ed25519_BYTES 64U +SODIUM_EXPORT +size_t crypto_sign_ed25519_bytes(void); + +#define crypto_sign_ed25519_SEEDBYTES 32U +SODIUM_EXPORT +size_t crypto_sign_ed25519_seedbytes(void); + +#define crypto_sign_ed25519_PUBLICKEYBYTES 32U +SODIUM_EXPORT +size_t crypto_sign_ed25519_publickeybytes(void); + +#define crypto_sign_ed25519_SECRETKEYBYTES (32U + 32U) +SODIUM_EXPORT +size_t crypto_sign_ed25519_secretkeybytes(void); + +#define crypto_sign_ed25519_MESSAGEBYTES_MAX (SODIUM_SIZE_MAX - crypto_sign_ed25519_BYTES) +SODIUM_EXPORT +size_t crypto_sign_ed25519_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_sign_ed25519(unsigned char *sm, unsigned long long *smlen_p, + const unsigned char *m, unsigned long long mlen, + const unsigned char *sk) + __attribute__ ((nonnull(1, 5))); + +SODIUM_EXPORT +int crypto_sign_ed25519_open(unsigned char *m, unsigned long long *mlen_p, + const unsigned char *sm, unsigned long long smlen, + const unsigned char *pk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(3, 5))); + +SODIUM_EXPORT +int crypto_sign_ed25519_detached(unsigned char *sig, + unsigned long long *siglen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *sk) + __attribute__ ((nonnull(1, 5))); + +SODIUM_EXPORT +int crypto_sign_ed25519_verify_detached(const unsigned char *sig, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *pk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_sign_ed25519_keypair(unsigned char *pk, unsigned char *sk) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_sign_ed25519_seed_keypair(unsigned char *pk, unsigned char *sk, + const unsigned char *seed) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_sign_ed25519_pk_to_curve25519(unsigned char *curve25519_pk, + const unsigned char *ed25519_pk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_sign_ed25519_sk_to_curve25519(unsigned char *curve25519_sk, + const unsigned char *ed25519_sk) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_sign_ed25519_sk_to_seed(unsigned char *seed, + const unsigned char *sk) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_sign_ed25519_sk_to_pk(unsigned char *pk, const unsigned char *sk) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_sign_ed25519ph_init(crypto_sign_ed25519ph_state *state) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_sign_ed25519ph_update(crypto_sign_ed25519ph_state *state, + const unsigned char *m, + unsigned long long mlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_sign_ed25519ph_final_create(crypto_sign_ed25519ph_state *state, + unsigned char *sig, + unsigned long long *siglen_p, + const unsigned char *sk) + __attribute__ ((nonnull(1, 2, 4))); + +SODIUM_EXPORT +int crypto_sign_ed25519ph_final_verify(crypto_sign_ed25519ph_state *state, + const unsigned char *sig, + const unsigned char *pk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_sign_edwards25519sha512batch.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_sign_edwards25519sha512batch.h new file mode 100644 index 000000000..eed158aa8 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_sign_edwards25519sha512batch.h @@ -0,0 +1,55 @@ +#ifndef crypto_sign_edwards25519sha512batch_H +#define crypto_sign_edwards25519sha512batch_H + +/* + * WARNING: This construction was a prototype, which should not be used + * any more in new projects. + * + * crypto_sign_edwards25519sha512batch is provided for applications + * initially built with NaCl, but as recommended by the author of this + * construction, new applications should use ed25519 instead. + * + * In Sodium, you should use the high-level crypto_sign_*() functions instead. + */ + +#include +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_sign_edwards25519sha512batch_BYTES 64U +#define crypto_sign_edwards25519sha512batch_PUBLICKEYBYTES 32U +#define crypto_sign_edwards25519sha512batch_SECRETKEYBYTES (32U + 32U) +#define crypto_sign_edwards25519sha512batch_MESSAGEBYTES_MAX (SODIUM_SIZE_MAX - crypto_sign_edwards25519sha512batch_BYTES) + +SODIUM_EXPORT +int crypto_sign_edwards25519sha512batch(unsigned char *sm, + unsigned long long *smlen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *sk) + __attribute__ ((deprecated)) __attribute__ ((nonnull(1, 5))); + +SODIUM_EXPORT +int crypto_sign_edwards25519sha512batch_open(unsigned char *m, + unsigned long long *mlen_p, + const unsigned char *sm, + unsigned long long smlen, + const unsigned char *pk) + __attribute__ ((deprecated)) __attribute__ ((nonnull(3, 5))); + +SODIUM_EXPORT +int crypto_sign_edwards25519sha512batch_keypair(unsigned char *pk, + unsigned char *sk) + __attribute__ ((deprecated)) __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_stream.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_stream.h new file mode 100644 index 000000000..88dab5f61 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_stream.h @@ -0,0 +1,59 @@ +#ifndef crypto_stream_H +#define crypto_stream_H + +/* + * WARNING: This is just a stream cipher. It is NOT authenticated encryption. + * While it provides some protection against eavesdropping, it does NOT + * provide any security against active attacks. + * Unless you know what you're doing, what you are looking for is probably + * the crypto_box functions. + */ + +#include + +#include "crypto_stream_xsalsa20.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_stream_KEYBYTES crypto_stream_xsalsa20_KEYBYTES +SODIUM_EXPORT +size_t crypto_stream_keybytes(void); + +#define crypto_stream_NONCEBYTES crypto_stream_xsalsa20_NONCEBYTES +SODIUM_EXPORT +size_t crypto_stream_noncebytes(void); + +#define crypto_stream_MESSAGEBYTES_MAX crypto_stream_xsalsa20_MESSAGEBYTES_MAX +SODIUM_EXPORT +size_t crypto_stream_messagebytes_max(void); + +#define crypto_stream_PRIMITIVE "xsalsa20" +SODIUM_EXPORT +const char *crypto_stream_primitive(void); + +SODIUM_EXPORT +int crypto_stream(unsigned char *c, unsigned long long clen, + const unsigned char *n, const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_xor(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_stream_keygen(unsigned char k[crypto_stream_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_stream_chacha20.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_stream_chacha20.h new file mode 100644 index 000000000..408897558 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_stream_chacha20.h @@ -0,0 +1,106 @@ +#ifndef crypto_stream_chacha20_H +#define crypto_stream_chacha20_H + +/* + * WARNING: This is just a stream cipher. It is NOT authenticated encryption. + * While it provides some protection against eavesdropping, it does NOT + * provide any security against active attacks. + * Unless you know what you're doing, what you are looking for is probably + * the crypto_box functions. + */ + +#include +#include +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_stream_chacha20_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_stream_chacha20_keybytes(void); + +#define crypto_stream_chacha20_NONCEBYTES 8U +SODIUM_EXPORT +size_t crypto_stream_chacha20_noncebytes(void); + +#define crypto_stream_chacha20_MESSAGEBYTES_MAX SODIUM_SIZE_MAX +SODIUM_EXPORT +size_t crypto_stream_chacha20_messagebytes_max(void); + +/* ChaCha20 with a 64-bit nonce and a 64-bit counter, as originally designed */ + +SODIUM_EXPORT +int crypto_stream_chacha20(unsigned char *c, unsigned long long clen, + const unsigned char *n, const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_chacha20_xor(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_chacha20_xor_ic(unsigned char *c, const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, uint64_t ic, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_stream_chacha20_keygen(unsigned char k[crypto_stream_chacha20_KEYBYTES]) + __attribute__ ((nonnull)); + +/* ChaCha20 with a 96-bit nonce and a 32-bit counter (IETF) */ + +#define crypto_stream_chacha20_ietf_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_stream_chacha20_ietf_keybytes(void); + +#define crypto_stream_chacha20_ietf_NONCEBYTES 12U +SODIUM_EXPORT +size_t crypto_stream_chacha20_ietf_noncebytes(void); + +#define crypto_stream_chacha20_ietf_MESSAGEBYTES_MAX \ + SODIUM_MIN(SODIUM_SIZE_MAX, 64ULL * (1ULL << 32)) +SODIUM_EXPORT +size_t crypto_stream_chacha20_ietf_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_stream_chacha20_ietf(unsigned char *c, unsigned long long clen, + const unsigned char *n, const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_chacha20_ietf_xor(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_chacha20_ietf_xor_ic(unsigned char *c, const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, uint32_t ic, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_stream_chacha20_ietf_keygen(unsigned char k[crypto_stream_chacha20_ietf_KEYBYTES]) + __attribute__ ((nonnull)); + +/* Aliases */ + +#define crypto_stream_chacha20_IETF_KEYBYTES crypto_stream_chacha20_ietf_KEYBYTES +#define crypto_stream_chacha20_IETF_NONCEBYTES crypto_stream_chacha20_ietf_NONCEBYTES +#define crypto_stream_chacha20_IETF_MESSAGEBYTES_MAX crypto_stream_chacha20_ietf_MESSAGEBYTES_MAX + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_stream_salsa20.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_stream_salsa20.h new file mode 100644 index 000000000..45b3b3e34 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_stream_salsa20.h @@ -0,0 +1,61 @@ +#ifndef crypto_stream_salsa20_H +#define crypto_stream_salsa20_H + +/* + * WARNING: This is just a stream cipher. It is NOT authenticated encryption. + * While it provides some protection against eavesdropping, it does NOT + * provide any security against active attacks. + * Unless you know what you're doing, what you are looking for is probably + * the crypto_box functions. + */ + +#include +#include +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_stream_salsa20_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_stream_salsa20_keybytes(void); + +#define crypto_stream_salsa20_NONCEBYTES 8U +SODIUM_EXPORT +size_t crypto_stream_salsa20_noncebytes(void); + +#define crypto_stream_salsa20_MESSAGEBYTES_MAX SODIUM_SIZE_MAX +SODIUM_EXPORT +size_t crypto_stream_salsa20_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_stream_salsa20(unsigned char *c, unsigned long long clen, + const unsigned char *n, const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_salsa20_xor(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_salsa20_xor_ic(unsigned char *c, const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, uint64_t ic, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_stream_salsa20_keygen(unsigned char k[crypto_stream_salsa20_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_stream_salsa2012.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_stream_salsa2012.h new file mode 100644 index 000000000..6c5d303ca --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_stream_salsa2012.h @@ -0,0 +1,53 @@ +#ifndef crypto_stream_salsa2012_H +#define crypto_stream_salsa2012_H + +/* + * WARNING: This is just a stream cipher. It is NOT authenticated encryption. + * While it provides some protection against eavesdropping, it does NOT + * provide any security against active attacks. + * Unless you know what you're doing, what you are looking for is probably + * the crypto_box functions. + */ + +#include +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_stream_salsa2012_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_stream_salsa2012_keybytes(void); + +#define crypto_stream_salsa2012_NONCEBYTES 8U +SODIUM_EXPORT +size_t crypto_stream_salsa2012_noncebytes(void); + +#define crypto_stream_salsa2012_MESSAGEBYTES_MAX SODIUM_SIZE_MAX +SODIUM_EXPORT +size_t crypto_stream_salsa2012_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_stream_salsa2012(unsigned char *c, unsigned long long clen, + const unsigned char *n, const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_salsa2012_xor(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_stream_salsa2012_keygen(unsigned char k[crypto_stream_salsa2012_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_stream_salsa208.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_stream_salsa208.h new file mode 100644 index 000000000..d574f3047 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_stream_salsa208.h @@ -0,0 +1,56 @@ +#ifndef crypto_stream_salsa208_H +#define crypto_stream_salsa208_H + +/* + * WARNING: This is just a stream cipher. It is NOT authenticated encryption. + * While it provides some protection against eavesdropping, it does NOT + * provide any security against active attacks. + * Unless you know what you're doing, what you are looking for is probably + * the crypto_box functions. + */ + +#include +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_stream_salsa208_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_stream_salsa208_keybytes(void) + __attribute__ ((deprecated)); + +#define crypto_stream_salsa208_NONCEBYTES 8U +SODIUM_EXPORT +size_t crypto_stream_salsa208_noncebytes(void) + __attribute__ ((deprecated)); + +#define crypto_stream_salsa208_MESSAGEBYTES_MAX SODIUM_SIZE_MAX + SODIUM_EXPORT +size_t crypto_stream_salsa208_messagebytes_max(void) + __attribute__ ((deprecated)); + +SODIUM_EXPORT +int crypto_stream_salsa208(unsigned char *c, unsigned long long clen, + const unsigned char *n, const unsigned char *k) + __attribute__ ((deprecated)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_salsa208_xor(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((deprecated)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_stream_salsa208_keygen(unsigned char k[crypto_stream_salsa208_KEYBYTES]) + __attribute__ ((deprecated)) __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_stream_xchacha20.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_stream_xchacha20.h new file mode 100644 index 000000000..c4002db00 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_stream_xchacha20.h @@ -0,0 +1,61 @@ +#ifndef crypto_stream_xchacha20_H +#define crypto_stream_xchacha20_H + +/* + * WARNING: This is just a stream cipher. It is NOT authenticated encryption. + * While it provides some protection against eavesdropping, it does NOT + * provide any security against active attacks. + * Unless you know what you're doing, what you are looking for is probably + * the crypto_box functions. + */ + +#include +#include +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_stream_xchacha20_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_stream_xchacha20_keybytes(void); + +#define crypto_stream_xchacha20_NONCEBYTES 24U +SODIUM_EXPORT +size_t crypto_stream_xchacha20_noncebytes(void); + +#define crypto_stream_xchacha20_MESSAGEBYTES_MAX SODIUM_SIZE_MAX +SODIUM_EXPORT +size_t crypto_stream_xchacha20_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_stream_xchacha20(unsigned char *c, unsigned long long clen, + const unsigned char *n, const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_xchacha20_xor(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_xchacha20_xor_ic(unsigned char *c, const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, uint64_t ic, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_stream_xchacha20_keygen(unsigned char k[crypto_stream_xchacha20_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_stream_xsalsa20.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_stream_xsalsa20.h new file mode 100644 index 000000000..20034e346 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_stream_xsalsa20.h @@ -0,0 +1,61 @@ +#ifndef crypto_stream_xsalsa20_H +#define crypto_stream_xsalsa20_H + +/* + * WARNING: This is just a stream cipher. It is NOT authenticated encryption. + * While it provides some protection against eavesdropping, it does NOT + * provide any security against active attacks. + * Unless you know what you're doing, what you are looking for is probably + * the crypto_box functions. + */ + +#include +#include +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_stream_xsalsa20_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_stream_xsalsa20_keybytes(void); + +#define crypto_stream_xsalsa20_NONCEBYTES 24U +SODIUM_EXPORT +size_t crypto_stream_xsalsa20_noncebytes(void); + +#define crypto_stream_xsalsa20_MESSAGEBYTES_MAX SODIUM_SIZE_MAX +SODIUM_EXPORT +size_t crypto_stream_xsalsa20_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_stream_xsalsa20(unsigned char *c, unsigned long long clen, + const unsigned char *n, const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_xsalsa20_xor(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_xsalsa20_xor_ic(unsigned char *c, const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, uint64_t ic, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_stream_xsalsa20_keygen(unsigned char k[crypto_stream_xsalsa20_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_verify_16.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_verify_16.h new file mode 100644 index 000000000..7b9c8077a --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_verify_16.h @@ -0,0 +1,23 @@ +#ifndef crypto_verify_16_H +#define crypto_verify_16_H + +#include +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_verify_16_BYTES 16U +SODIUM_EXPORT +size_t crypto_verify_16_bytes(void); + +SODIUM_EXPORT +int crypto_verify_16(const unsigned char *x, const unsigned char *y) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_verify_32.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_verify_32.h new file mode 100644 index 000000000..9b0f4529f --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_verify_32.h @@ -0,0 +1,23 @@ +#ifndef crypto_verify_32_H +#define crypto_verify_32_H + +#include +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_verify_32_BYTES 32U +SODIUM_EXPORT +size_t crypto_verify_32_bytes(void); + +SODIUM_EXPORT +int crypto_verify_32(const unsigned char *x, const unsigned char *y) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_verify_64.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_verify_64.h new file mode 100644 index 000000000..c83b73025 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_verify_64.h @@ -0,0 +1,23 @@ +#ifndef crypto_verify_64_H +#define crypto_verify_64_H + +#include +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_verify_64_BYTES 64U +SODIUM_EXPORT +size_t crypto_verify_64_bytes(void); + +SODIUM_EXPORT +int crypto_verify_64(const unsigned char *x, const unsigned char *y) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/export.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/export.h new file mode 100644 index 000000000..a0074fc9c --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/export.h @@ -0,0 +1,57 @@ + +#ifndef sodium_export_H +#define sodium_export_H + +#include +#include +#include + +#if !defined(__clang__) && !defined(__GNUC__) +# ifdef __attribute__ +# undef __attribute__ +# endif +# define __attribute__(a) +#endif + +#ifdef SODIUM_STATIC +# define SODIUM_EXPORT +# define SODIUM_EXPORT_WEAK +#else +# if defined(_MSC_VER) +# ifdef SODIUM_DLL_EXPORT +# define SODIUM_EXPORT __declspec(dllexport) +# else +# define SODIUM_EXPORT __declspec(dllimport) +# endif +# else +# if defined(__SUNPRO_C) +# ifndef __GNU_C__ +# define SODIUM_EXPORT __attribute__ (visibility(__global)) +# else +# define SODIUM_EXPORT __attribute__ __global +# endif +# elif defined(_MSG_VER) +# define SODIUM_EXPORT extern __declspec(dllexport) +# else +# define SODIUM_EXPORT __attribute__ ((visibility ("default"))) +# endif +# endif +# if defined(__ELF__) && !defined(SODIUM_DISABLE_WEAK_FUNCTIONS) +# define SODIUM_EXPORT_WEAK SODIUM_EXPORT __attribute__((weak)) +# else +# define SODIUM_EXPORT_WEAK SODIUM_EXPORT +# endif +#endif + +#ifndef CRYPTO_ALIGN +# if defined(__INTEL_COMPILER) || defined(_MSC_VER) +# define CRYPTO_ALIGN(x) __declspec(align(x)) +# else +# define CRYPTO_ALIGN(x) __attribute__ ((aligned(x))) +# endif +#endif + +#define SODIUM_MIN(A, B) ((A) < (B) ? (A) : (B)) +#define SODIUM_SIZE_MAX SODIUM_MIN(UINT64_MAX, SIZE_MAX) + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/randombytes.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/randombytes.h new file mode 100644 index 000000000..a03cc6572 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/randombytes.h @@ -0,0 +1,72 @@ + +#ifndef randombytes_H +#define randombytes_H + +#include +#include + +#include + +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +typedef struct randombytes_implementation { + const char *(*implementation_name)(void); /* required */ + uint32_t (*random)(void); /* required */ + void (*stir)(void); /* optional */ + uint32_t (*uniform)(const uint32_t upper_bound); /* optional, a default implementation will be used if NULL */ + void (*buf)(void * const buf, const size_t size); /* required */ + int (*close)(void); /* optional */ +} randombytes_implementation; + +#define randombytes_BYTES_MAX SODIUM_MIN(SODIUM_SIZE_MAX, 0xffffffffUL) + +#define randombytes_SEEDBYTES 32U +SODIUM_EXPORT +size_t randombytes_seedbytes(void); + +SODIUM_EXPORT +void randombytes_buf(void * const buf, const size_t size) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void randombytes_buf_deterministic(void * const buf, const size_t size, + const unsigned char seed[randombytes_SEEDBYTES]) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +uint32_t randombytes_random(void); + +SODIUM_EXPORT +uint32_t randombytes_uniform(const uint32_t upper_bound); + +SODIUM_EXPORT +void randombytes_stir(void); + +SODIUM_EXPORT +int randombytes_close(void); + +SODIUM_EXPORT +int randombytes_set_implementation(randombytes_implementation *impl) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +const char *randombytes_implementation_name(void); + +/* -- NaCl compatibility interface -- */ + +SODIUM_EXPORT +void randombytes(unsigned char * const buf, const unsigned long long buf_len) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/randombytes_internal_random.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/randombytes_internal_random.h new file mode 100644 index 000000000..2b2b7d6ed --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/randombytes_internal_random.h @@ -0,0 +1,22 @@ + +#ifndef randombytes_internal_random_H +#define randombytes_internal_random_H + +#include "export.h" +#include "randombytes.h" + +#ifdef __cplusplus +extern "C" { +#endif + +SODIUM_EXPORT +extern struct randombytes_implementation randombytes_internal_implementation; + +/* Backwards compatibility with libsodium < 1.0.18 */ +#define randombytes_salsa20_implementation randombytes_internal_implementation + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/randombytes_sysrandom.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/randombytes_sysrandom.h new file mode 100644 index 000000000..9e27b674c --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/randombytes_sysrandom.h @@ -0,0 +1,19 @@ + +#ifndef randombytes_sysrandom_H +#define randombytes_sysrandom_H + +#include "export.h" +#include "randombytes.h" + +#ifdef __cplusplus +extern "C" { +#endif + +SODIUM_EXPORT +extern struct randombytes_implementation randombytes_sysrandom_implementation; + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/runtime.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/runtime.h new file mode 100644 index 000000000..7f15d58e7 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/runtime.h @@ -0,0 +1,52 @@ + +#ifndef sodium_runtime_H +#define sodium_runtime_H + +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +SODIUM_EXPORT_WEAK +int sodium_runtime_has_neon(void); + +SODIUM_EXPORT_WEAK +int sodium_runtime_has_sse2(void); + +SODIUM_EXPORT_WEAK +int sodium_runtime_has_sse3(void); + +SODIUM_EXPORT_WEAK +int sodium_runtime_has_ssse3(void); + +SODIUM_EXPORT_WEAK +int sodium_runtime_has_sse41(void); + +SODIUM_EXPORT_WEAK +int sodium_runtime_has_avx(void); + +SODIUM_EXPORT_WEAK +int sodium_runtime_has_avx2(void); + +SODIUM_EXPORT_WEAK +int sodium_runtime_has_avx512f(void); + +SODIUM_EXPORT_WEAK +int sodium_runtime_has_pclmul(void); + +SODIUM_EXPORT_WEAK +int sodium_runtime_has_aesni(void); + +SODIUM_EXPORT_WEAK +int sodium_runtime_has_rdrand(void); + +/* ------------------------------------------------------------------------- */ + +int _sodium_runtime_get_cpu_features(void); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/utils.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/utils.h new file mode 100644 index 000000000..ac8015129 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/utils.h @@ -0,0 +1,179 @@ + +#ifndef sodium_utils_H +#define sodium_utils_H + +#include + +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef SODIUM_C99 +# if defined(__cplusplus) || !defined(__STDC_VERSION__) || __STDC_VERSION__ < 199901L +# define SODIUM_C99(X) +# else +# define SODIUM_C99(X) X +# endif +#endif + +SODIUM_EXPORT +void sodium_memzero(void * const pnt, const size_t len); + +SODIUM_EXPORT +void sodium_stackzero(const size_t len); + +/* + * WARNING: sodium_memcmp() must be used to verify if two secret keys + * are equal, in constant time. + * It returns 0 if the keys are equal, and -1 if they differ. + * This function is not designed for lexicographical comparisons. + */ +SODIUM_EXPORT +int sodium_memcmp(const void * const b1_, const void * const b2_, size_t len) + __attribute__ ((warn_unused_result)); + +/* + * sodium_compare() returns -1 if b1_ < b2_, 1 if b1_ > b2_ and 0 if b1_ == b2_ + * It is suitable for lexicographical comparisons, or to compare nonces + * and counters stored in little-endian format. + * However, it is slower than sodium_memcmp(). + */ +SODIUM_EXPORT +int sodium_compare(const unsigned char *b1_, const unsigned char *b2_, + size_t len) __attribute__ ((warn_unused_result)); + +SODIUM_EXPORT +int sodium_is_zero(const unsigned char *n, const size_t nlen); + +SODIUM_EXPORT +void sodium_increment(unsigned char *n, const size_t nlen); + +SODIUM_EXPORT +void sodium_add(unsigned char *a, const unsigned char *b, const size_t len); + +SODIUM_EXPORT +void sodium_sub(unsigned char *a, const unsigned char *b, const size_t len); + +SODIUM_EXPORT +char *sodium_bin2hex(char * const hex, const size_t hex_maxlen, + const unsigned char * const bin, const size_t bin_len) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int sodium_hex2bin(unsigned char * const bin, const size_t bin_maxlen, + const char * const hex, const size_t hex_len, + const char * const ignore, size_t * const bin_len, + const char ** const hex_end) + __attribute__ ((nonnull(1))); + +#define sodium_base64_VARIANT_ORIGINAL 1 +#define sodium_base64_VARIANT_ORIGINAL_NO_PADDING 3 +#define sodium_base64_VARIANT_URLSAFE 5 +#define sodium_base64_VARIANT_URLSAFE_NO_PADDING 7 + +/* + * Computes the required length to encode BIN_LEN bytes as a base64 string + * using the given variant. The computed length includes a trailing \0. + */ +#define sodium_base64_ENCODED_LEN(BIN_LEN, VARIANT) \ + (((BIN_LEN) / 3U) * 4U + \ + ((((BIN_LEN) - ((BIN_LEN) / 3U) * 3U) | (((BIN_LEN) - ((BIN_LEN) / 3U) * 3U) >> 1)) & 1U) * \ + (4U - (~((((VARIANT) & 2U) >> 1) - 1U) & (3U - ((BIN_LEN) - ((BIN_LEN) / 3U) * 3U)))) + 1U) + +SODIUM_EXPORT +size_t sodium_base64_encoded_len(const size_t bin_len, const int variant); + +SODIUM_EXPORT +char *sodium_bin2base64(char * const b64, const size_t b64_maxlen, + const unsigned char * const bin, const size_t bin_len, + const int variant) __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int sodium_base642bin(unsigned char * const bin, const size_t bin_maxlen, + const char * const b64, const size_t b64_len, + const char * const ignore, size_t * const bin_len, + const char ** const b64_end, const int variant) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int sodium_mlock(void * const addr, const size_t len) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int sodium_munlock(void * const addr, const size_t len) + __attribute__ ((nonnull)); + +/* WARNING: sodium_malloc() and sodium_allocarray() are not general-purpose + * allocation functions. + * + * They return a pointer to a region filled with 0xd0 bytes, immediately + * followed by a guard page. + * As a result, accessing a single byte after the requested allocation size + * will intentionally trigger a segmentation fault. + * + * A canary and an additional guard page placed before the beginning of the + * region may also kill the process if a buffer underflow is detected. + * + * The memory layout is: + * [unprotected region size (read only)][guard page (no access)][unprotected pages (read/write)][guard page (no access)] + * With the layout of the unprotected pages being: + * [optional padding][16-bytes canary][user region] + * + * However: + * - These functions are significantly slower than standard functions + * - Each allocation requires 3 or 4 additional pages + * - The returned address will not be aligned if the allocation size is not + * a multiple of the required alignment. For this reason, these functions + * are designed to store data, such as secret keys and messages. + * + * sodium_malloc() can be used to allocate any libsodium data structure. + * + * The crypto_generichash_state structure is packed and its length is + * either 357 or 361 bytes. For this reason, when using sodium_malloc() to + * allocate a crypto_generichash_state structure, padding must be added in + * order to ensure proper alignment. crypto_generichash_statebytes() + * returns the rounded up structure size, and should be prefered to sizeof(): + * state = sodium_malloc(crypto_generichash_statebytes()); + */ + +SODIUM_EXPORT +void *sodium_malloc(const size_t size) + __attribute__ ((malloc)); + +SODIUM_EXPORT +void *sodium_allocarray(size_t count, size_t size) + __attribute__ ((malloc)); + +SODIUM_EXPORT +void sodium_free(void *ptr); + +SODIUM_EXPORT +int sodium_mprotect_noaccess(void *ptr) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int sodium_mprotect_readonly(void *ptr) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int sodium_mprotect_readwrite(void *ptr) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int sodium_pad(size_t *padded_buflen_p, unsigned char *buf, + size_t unpadded_buflen, size_t blocksize, size_t max_buflen) + __attribute__ ((nonnull(2))); + +SODIUM_EXPORT +int sodium_unpad(size_t *unpadded_buflen_p, const unsigned char *buf, + size_t padded_buflen, size_t blocksize) + __attribute__ ((nonnull(2))); + +/* -------- */ + +int _sodium_alloc_init(void); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/version.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/version.h new file mode 100644 index 000000000..201a290e7 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/version.h @@ -0,0 +1,33 @@ + +#ifndef sodium_version_H +#define sodium_version_H + +#include "export.h" + +#define SODIUM_VERSION_STRING "1.0.18" + +#define SODIUM_LIBRARY_VERSION_MAJOR 10 +#define SODIUM_LIBRARY_VERSION_MINOR 3 + + +#ifdef __cplusplus +extern "C" { +#endif + +SODIUM_EXPORT +const char *sodium_version_string(void); + +SODIUM_EXPORT +int sodium_library_version_major(void); + +SODIUM_EXPORT +int sodium_library_version_minor(void); + +SODIUM_EXPORT +int sodium_library_minimal(void); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/lib/libsodium.a b/example/android/third_party/libsodium/libsodium-android-westmere/lib/libsodium.a new file mode 100644 index 0000000000000000000000000000000000000000..b46cb5dcd3fe18c95b05f667defd6eebddd15605 GIT binary patch literal 579332 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