From e547c277cb9f5b68ca7b0e96b32667fcf42b497c Mon Sep 17 00:00:00 2001 From: Marcos Pernambuco Motta <1091485+mpernambuco@users.noreply.github.commits> Date: Tue, 17 Oct 2023 10:14:50 -0300 Subject: [PATCH 1/9] Toy exchange --- exchange/.gitignore | 7 + exchange/Makefile | 5 + exchange/README.md | 34 ++++ exchange/exchange.cpp | 361 ++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 407 insertions(+) create mode 100644 exchange/.gitignore create mode 100644 exchange/Makefile create mode 100644 exchange/README.md create mode 100644 exchange/exchange.cpp diff --git a/exchange/.gitignore b/exchange/.gitignore new file mode 100644 index 0000000..9d1ebd0 --- /dev/null +++ b/exchange/.gitignore @@ -0,0 +1,7 @@ +exchange +exchange.dSYM +exchange.dSYM/* +.DS_store +.vscode + + diff --git a/exchange/Makefile b/exchange/Makefile new file mode 100644 index 0000000..3da1466 --- /dev/null +++ b/exchange/Makefile @@ -0,0 +1,5 @@ +CXX = g++ +CXXFLAGS = -std=c++17 + +exchange: exchange.cpp + $(CXX) $(CXXFLAGS) -o $@ $< diff --git a/exchange/README.md b/exchange/README.md new file mode 100644 index 0000000..a40207f --- /dev/null +++ b/exchange/README.md @@ -0,0 +1,34 @@ +# Toy Exchange + +## Build +``` +make +``` + +## Run and test +``` +./exchange --setup-test-fixture --interactive + +id tradr qty bid | ask qty tradr id +4 perna 40 111 | 112 50 diego 5 +3 perna 50 110 | 120 100 diego 2 +1 perna 100 100 | + +Enter command. Format is: (buy|sell|book) symbol trader price qty +> buy ACME victor 112 30 + +Execution - Trader: victor Order ID: 6 Execution Type: N Side: B Quantity: 30 Price: 112 +Execution - Trader: victor Order ID: 6 Execution Type: E Side: B Quantity: 30 Price: 112 +Execution - Trader: diego Order ID: 5 Execution Type: E Side: S Quantity: 30 Price: 112 + +Enter command. Format is: (buy|sell|book) symbol trader price qty +> book ACME +id tradr qty bid | ask qty tradr id +4 perna 40 111 | 112 20 diego 5 +3 perna 50 110 | 120 100 diego 2 +1 perna 100 100 | + +Enter command. Format is: (buy|sell|book) symbol trader price qty +> + +``` diff --git a/exchange/exchange.cpp b/exchange/exchange.cpp new file mode 100644 index 0000000..7b84778 --- /dev/null +++ b/exchange/exchange.cpp @@ -0,0 +1,361 @@ +#include +#include +#include +#include +#include +#include +#include + +#define TEST_SYMBOL "ACME" + +/// start of custom allocator stuff + +unsigned char arena[8192]; // <<---- representing the lambda state that will materialized in a known location +unsigned int arena_current = 0; +void* arena_allocate(std::size_t n) { + auto p = arena+arena_current; + arena_current += n; + if (arena_current > sizeof(arena)) { + throw std::bad_alloc(); + } + return p; +} +void arena_deallocate(void* p, std::size_t n) noexcept { + // no-op for now +} + +template +class arena_allocator { +public: + arena_allocator() = default; + using pointer = T*; + using value_type = T; + pointer allocate(std::size_t n) { + return (pointer)arena_allocate(n * sizeof(T)); + } + void deallocate(pointer p, std::size_t n) noexcept { + arena_deallocate(p, n * sizeof(T)); + } +}; + +// start of exchange types + +using symbol_type = std::array; +using price_type = int; +using qty_type = int; +using trader_type = std::array; +using id_type = int; +enum class side : char { buy = 'B', sell = 'S' }; +enum class exec_type : char { + new_order = 'N', // ack new order + cancel = 'C', // ack cancel + execution = 'E', // trade execution (partial or full) + rejection = 'R' // order rejection +}; + +struct order { + id_type id; + trader_type trader; + symbol_type symbol; + side side; + price_type price; // limit price + qty_type qty; // remaining quantity +}; + +bool order_matches(const order& o, const order& other) { + return (o.side == side::buy && o.price >= other.price) || (o.side == side::sell && o.price <= other.price); +} + +bool order_is_filled(const order& o) { + return o.qty == 0; +} + +// comparator for sorting bid offers +struct best_bid { + bool operator()(const order &a, const order &b) const { + return a.price > b.price; + } +}; + +// comparator for sortting ask offers +struct best_ask { + bool operator()(const order &a, const order &b) const { + return a.price < b.price; + } +}; + + using bids_type = std::multiset>; + using asks_type = std::multiset>; + +// order book for one symbol +// CTSIxUSDC: USDC for CTSI +// a buy order means sending CTSI and receiving USDC +// a sell order means sending USDC and receiving CTSI +struct book { + symbol_type symbol; + bids_type bids; + asks_type asks; +}; + +// exchange notifications +struct execution_report { + trader_type trader; // trader id + id_type order_id; // order id + exec_type type; // execution type + side side; // side of executed order + qty_type qty; // qtd executed + price_type price; // execution price +}; + +using execution_reports_type = std::vector; + +// exchange class to be "deserialized" from lambda state +class exchange { + using books_type = std::map, arena_allocator>>; + books_type books; + id_type next_id{0}; + +public: + void add_order(order o, execution_reports_type &reports) { + // send report acknowledging new order + o.id = get_next_id(); + reports.push_back({o.trader, o.id, exec_type::new_order, o.side, o.qty, o.price}); + // match against existing orders + auto &book = find_or_create_book(o.symbol); + if (o.side == side::buy) { + match(o, book.asks, reports); + if (!order_is_filled(o)) { + book.bids.insert(o); + } + } else { + match(o, book.bids, reports); + if (!order_is_filled(o)) { + book.asks.insert(o); + } + } + } + + book *find_book(const symbol_type &symbol) { + auto it = books.find(symbol); + if (it != books.end()) { + return &it->second; + } + return nullptr; + } + +private: + + book &find_or_create_book(const symbol_type &symbol) { + auto it = books.find(symbol); + if (it != books.end()) { + return it->second; + } + return books.emplace(symbol, book{symbol, {}, {}}).first->second;; + } + + // match order against existing offers, executing trades and notifying both parties + template + void match(order& o, T &offers, execution_reports_type& reports) { + auto it = offers.begin(); + while(it != offers.end()) { + // ok to drop const becasue the set is ordered by a custom comparator whose key(price) won't be changed + auto &best_offer = const_cast(*it); + if (order_is_filled(o) || !order_matches(o, best_offer)) { + return; + } + // execute trade and notify both parties + auto qty = std::min(o.qty, best_offer.qty); + o.qty -= qty; + best_offer.qty -= qty; + auto price = (o.price + best_offer.price) /2; + reports.push_back({o.trader, o.id, exec_type::execution, o.side, qty, price}); + reports.push_back({best_offer.trader, best_offer.id, exec_type::execution, o.side == side::buy ? side::sell : side::buy, qty, price}); + // remove offer from book if filled + if (order_is_filled(best_offer)) { + offers.erase(it); + } + // find next best offer + it = offers.begin(); + } + } + + id_type get_next_id() { + return ++next_id; + } +}; + +// utility functions for testing +void print_book(FILE *out,const book &book) { + auto b = book.bids.begin(); + auto a = book.asks.begin(); + fprintf(out, "id \ttradr\tqty\tbid | ask\tqty \ttradr\tid\n"); + while (b!=book.bids.end() || a!=book.asks.end()) { + if (b!=book.bids.end()) { + fprintf(out, "%d\t%s\t%d\t%d", b->id, b->trader.data(), b->qty, b->price); + } else { + fprintf(out, " \t \t \t "); + } + fprintf(out, " | "); + if (a!=book.asks.end()) { + fprintf(out, "%d\t%d\t%s\t%d", a->price, a->qty, a->trader.data(), a->id); + } else { + fprintf(out, " \t \t \t "); + } + fprintf(out, "\n"); + if (b!=book.bids.end()) ++b; + if (a!=book.asks.end()) ++a; + } +} + +static void print_execution_report(FILE *out, execution_report r) { + fprintf(out, "Execution - Trader: %s ", r.trader.data()); + fprintf(out, "Order ID: %d ", r.order_id); + fprintf(out, "Execution Type: %c ", (char)r.type); + fprintf(out, "Side: %c ", (char)r.side); + fprintf(out, "Quantity: %d ", r.qty); + fprintf(out, "Price: %d\n", r.price); +} + +static void setup_test_fixture(exchange &ex) { + // // setup playground + execution_reports_type r; + ex.add_order(order{0, "perna", TEST_SYMBOL, side::buy, 100, 100}, r); + ex.add_order(order{0, "diego", TEST_SYMBOL, side::sell, 120, 100}, r); + ex.add_order(order{0, "perna", TEST_SYMBOL, side::buy, 110, 50}, r); + ex.add_order(order{0, "perna", TEST_SYMBOL, side::buy, 111, 40}, r); + ex.add_order(order{0, "diego", TEST_SYMBOL, side::sell, 112, 50}, r); + auto *book = ex.find_book(symbol_type{TEST_SYMBOL}); + print_book(stdout, *book); +} + +static bool print_error(FILE *out, const char* message) { + fprintf(out, "ERROR: %s\n", message); + return false; +} + +/* + commands are in the format: + buy + sell + book +*/ +static bool process_input(exchange &ex, FILE *in, FILE *out, bool interactive = false) { + char cmd[1024]; + symbol_type symbol; + trader_type trader; + price_type price; + qty_type qty; + execution_reports_type reports; + memset(cmd, 0, sizeof(cmd)); + memset(symbol.data(), 0, sizeof(symbol)); + if (1 != fscanf(in, "%s", cmd)) { + return print_error(out, "missing command"); + } + if (0 == strcmp(cmd, "buy")) { + if (4 != fscanf(in, "%s %s %d %d", symbol.data(), trader.data(), &price, &qty)) { + return print_error(out, "insufficient arguments for buy command"); + } + ex.add_order(order{0, trader, symbol, side::buy, price, qty}, reports); + } else if (0 == strcmp(cmd, "sell")) { + if (4 != fscanf(in, "%s %s %d %d", symbol.data(), trader.data(), &price, &qty)) { + return print_error(out, "insufficient arguments for sell command"); + } + ex.add_order(order{0, trader, symbol, side::sell, price, qty}, reports); + } else if (0 == strcmp(cmd, "book")) { + if (1 != fscanf(in, "%s", symbol.data())) { + return print_error(out, "insufficient arguments for book command"); + } + auto *pbook = ex.find_book(symbol); + // todo: return book in standard output format + if (pbook) { + print_book(out, *pbook); + } else { + fprintf(out, "No book for symbol %s\n", symbol.data()); + } + } else { + return print_error(out, "invalid command"); + } + // TODO: convert the execution reports in standard output formant suitable for parsing + for(auto &report: reports) { + print_execution_report(out, report); + } + return true; +} + +static void process_inputs(exchange &ex, bool interactive) { + while(true) { + if (interactive) { + fprintf(stdout, "Enter command. Format is: (buy|sell|book) symbol trader price qty\n> "); + } + process_input(ex, stdin, stdout, true); + } +} + +static void print_help_and_exit(const char* program_name) { + printf("Usage: %s [--state-file=] [--output-file=] [--setup-test-fixture] [--help]\n", program_name); + printf("Options:\n"); + printf(" --state-file= Load state from file\n"); + printf(" --output-file= Write output to file\n"); + printf(" --setup-test-fixture Setup test fixture\n"); + printf(" --interactive Interactive mode\n"); + printf(" --help Show help\n"); + exit(0); +} + +int main(int argc, char** argv) { + std::string opt_state_file; + std::string opt_output_file; + bool opt_setup_test_fixture = false; + bool opt_interactive = false; + bool opt_help = false; + + // parse command line arguments + for (int i = 1; i < argc; i++) { + std::string arg = argv[i]; + if (arg == "--state-file") { + if (i + 1 < argc) { + opt_state_file = argv[++i]; + } else { + std::cerr << "--state-file option requires a filename argument" << std::endl; + return 1; + } + } else if (arg == "--output-file") { + if (i + 1 < argc) { + opt_output_file = argv[++i]; + } else { + std::cerr << "--output-file option requires a filename argument" << std::endl; + return 1; + } + } else if (arg == "--setup-test-fixture") { + opt_setup_test_fixture = true; + } else if (arg == "--interactive") { + opt_interactive = true; + } else if (arg == "--help") { + opt_help = true; + } else { + std::cerr << "Unknown option: " << arg << std::endl; + return 1; + } + } + + // handle commands + if (opt_help) { + print_help_and_exit(argv[0]); + } + + // initialize exchange + // placement new to initialize exchange from the lambda state + void *root = arena_allocate(sizeof(exchange)); + auto pex = new (root) exchange(); + auto &ex = *pex; + + if (opt_setup_test_fixture) { + // setup test fixtureexchange ex; + setup_test_fixture(ex); + } + + process_inputs(ex, opt_interactive); + + return 0; +} + From 4c7a3d9a46de4d89d347ca77b5961b4e8004c741 Mon Sep 17 00:00:00 2001 From: Marcos Pernambuco Motta <1091485+mpernambuco@users.noreply.github.commits> Date: Wed, 18 Oct 2023 21:43:02 -0300 Subject: [PATCH 2/9] deposit / withdraw --- exchange/exchange.cpp | 393 ++++++++++++++++++++++++++++++++++-------- exchange/lambda-state | Bin 0 -> 8192 bytes 2 files changed, 317 insertions(+), 76 deletions(-) create mode 100644 exchange/lambda-state diff --git a/exchange/exchange.cpp b/exchange/exchange.cpp index 7b84778..f34ea8c 100644 --- a/exchange/exchange.cpp +++ b/exchange/exchange.cpp @@ -5,24 +5,92 @@ #include #include #include +#include +#include +#include +#include +#include +#include + +#define TEST_SYMBOL "ctsi/usdc" + +constexpr uint64_t LAMBDA_VIRTUAL_START = UINT64_C(0x1000000000); +constexpr uint64_t LAMBDA_PHYS_START = UINT64_C(0); + +class lambda_state { + int m_fd; + uint64_t m_length = 0; + void *m_state; +public: + lambda_state(const char *file_name) { + m_length = std::filesystem::file_size(file_name); + m_fd = open(file_name, O_RDWR); + m_state = mmap((void*)LAMBDA_VIRTUAL_START, m_length, PROT_WRITE | PROT_READ, MAP_SHARED | MAP_NOEXTEND | MAP_FIXED, m_fd, 0); + if (m_state == MAP_FAILED) { + throw std::runtime_error(std::string("mmap - ") + std::strerror(errno)); + } + if (m_state != reinterpret_cast(LAMBDA_VIRTUAL_START)) { + close(m_fd); + throw std::runtime_error("mmap - unexpected address"); + } + } + + lambda_state(uint64_t phys_start, uint64_t length) : m_length(length) { + m_length = length; + m_fd = open("/dev/mem", O_RDWR); + m_state = mmap((void*)LAMBDA_VIRTUAL_START, m_length, PROT_WRITE | PROT_READ, MAP_SHARED | MAP_NOEXTEND | MAP_FIXED, m_fd, phys_start); + if (m_state == MAP_FAILED) { + throw std::runtime_error(std::string("mmap - ") + std::strerror(errno)); + } + if (m_state != reinterpret_cast(LAMBDA_VIRTUAL_START)) { + close(m_fd); + throw std::runtime_error("mmap - unexpected address"); + } + } + + virtual ~lambda_state() { + printf("munmap\n"); + munmap(m_state, m_length); + close(m_fd); + } + + uint64_t get_length() { + return m_length; + } + void *get_state() { + return m_state; + } -#define TEST_SYMBOL "ACME" +}; /// start of custom allocator stuff -unsigned char arena[8192]; // <<---- representing the lambda state that will materialized in a known location -unsigned int arena_current = 0; -void* arena_allocate(std::size_t n) { - auto p = arena+arena_current; - arena_current += n; - if (arena_current > sizeof(arena)) { - throw std::bad_alloc(); +class memory_arena { + uint64_t m_length; + uint64_t m_next_free; + unsigned char m_data[0]; +public: + memory_arena(uint64_t length) : m_length(length), m_next_free(0) { } + void *get_data() { + return m_data; } - return p; -} -void arena_deallocate(void* p, std::size_t n) noexcept { - // no-op for now -} + void *allocate(int length) { + auto p = m_data + m_next_free; + m_next_free += length; + if (m_next_free > get_data_length()) { + throw std::bad_alloc(); + } + return p; + } + void deallocate(void *p, int length) { + } + uint64_t get_data_length() { + return m_length - offsetof(memory_arena, m_data); + } + +}; + +static memory_arena *arena = nullptr; template class arena_allocator { @@ -31,17 +99,18 @@ class arena_allocator { using pointer = T*; using value_type = T; pointer allocate(std::size_t n) { - return (pointer)arena_allocate(n * sizeof(T)); + return static_cast(arena->allocate(n * sizeof(T))); } void deallocate(pointer p, std::size_t n) noexcept { - arena_deallocate(p, n * sizeof(T)); + arena->deallocate(p, n * sizeof(T)); } }; // start of exchange types using symbol_type = std::array; -using price_type = int; +using token_type = std::array; +using currency_type = int; using qty_type = int; using trader_type = std::array; using id_type = int; @@ -52,23 +121,40 @@ enum class exec_type : char { execution = 'E', // trade execution (partial or full) rejection = 'R' // order rejection }; +using contract_address_type = std::string; + +// Accepted tokens and instruments +static std::map tokens { + {{"brl"}, {"0x0000000000000000000"}}, + {{"usd"}, {"0x0000000000000000000"}}, + {{"ctsi"}, {"0x0000000000000000000"}}, + {{"usdc"}, {"0x0000000000000000000"}} +}; +struct instrument { + token_type base; // token being traded + token_type quote; // quote token +}; + static std::map instruments { + {symbol_type{"ctsi/usdc"}, {{"ctsi"}, {"usdc"}}}, + }; struct order { id_type id; trader_type trader; symbol_type symbol; side side; - price_type price; // limit price + currency_type price; // limit price qty_type qty; // remaining quantity -}; + + bool matches(const order& other) { + return (side == side::buy && price >= other.price) || (side == side::sell && price <= other.price); + } -bool order_matches(const order& o, const order& other) { - return (o.side == side::buy && o.price >= other.price) || (o.side == side::sell && o.price <= other.price); -} + bool is_filled() { + return qty == 0; + } -bool order_is_filled(const order& o) { - return o.qty == 0; -} +}; // comparator for sorting bid offers struct best_bid { @@ -87,10 +173,6 @@ struct best_ask { using bids_type = std::multiset>; using asks_type = std::multiset>; -// order book for one symbol -// CTSIxUSDC: USDC for CTSI -// a buy order means sending CTSI and receiving USDC -// a sell order means sending USDC and receiving CTSI struct book { symbol_type symbol; bids_type bids; @@ -104,37 +186,79 @@ struct execution_report { exec_type type; // execution type side side; // side of executed order qty_type qty; // qtd executed - price_type price; // execution price + currency_type price; // execution price }; - using execution_reports_type = std::vector; // exchange class to be "deserialized" from lambda state class exchange { +public: + using wallet_type = std::map, arena_allocator>>; + +private: + using orders_type = std::map, arena_allocator>>; using books_type = std::map, arena_allocator>>; + using wallets_type = std::map, arena_allocator>>; + + orders_type orders; books_type books; + wallets_type wallets; id_type next_id{0}; public: - void add_order(order o, execution_reports_type &reports) { + void new_order(order o, execution_reports_type &reports) { + // validate order + auto instrument = instruments.find(o.symbol); + if (instrument == instruments.end()) { + reports.push_back({o.trader, o.id, exec_type::rejection}); + return; + } + if (o.side == side::buy) { + auto size = o.qty * o.price;; + auto balance = get_balance(o.trader, instrument->second.quote); + if (balance < size) { + reports.push_back({o.trader, o.id, exec_type::rejection}); + return; + } + subtract_from_balance(o.trader, instrument->second.quote, size); + } else { + auto size = o.qty; + auto balance = get_balance(o.trader, instrument->second.base); + if (balance < size) { + reports.push_back({o.trader, o.id, exec_type::rejection}); + return; + } + subtract_from_balance(o.trader, instrument->second.base, size); + } // send report acknowledging new order o.id = get_next_id(); reports.push_back({o.trader, o.id, exec_type::new_order, o.side, o.qty, o.price}); // match against existing orders auto &book = find_or_create_book(o.symbol); if (o.side == side::buy) { - match(o, book.asks, reports); - if (!order_is_filled(o)) { + match(o, book.asks, instrument->second, reports); + if (!o.is_filled()) { book.bids.insert(o); } } else { - match(o, book.bids, reports); - if (!order_is_filled(o)) { + match(o, book.bids, instrument->second, reports); + if (!o.is_filled()) { book.asks.insert(o); } } } + void cancel_order(id_type id, execution_reports_type &reports) { + } + + wallet_type* find_wallet(const trader_type &trader) { + auto it = wallets.find(trader); + if (it != wallets.end()) { + return &it->second; + } + return nullptr; + } + book *find_book(const symbol_type &symbol) { auto it = books.find(symbol); if (it != books.end()) { @@ -143,6 +267,28 @@ class exchange { return nullptr; } + void deposit(const trader_type &trader, const token_type &token, currency_type amount) { + add_to_balance(trader, token, amount); + // todo: notifications + } + + void withdraw(const trader_type &trader, const token_type &token, currency_type amount) { + subtract_from_balance(trader, token, amount); + // todo: notifications + } + + currency_type get_balance(const trader_type &trader, const token_type &token) { + auto wallet = find_wallet(trader); + if (!wallet) { + return 0; + } + auto it = wallet->find(token); + if (it == wallet->end()) { + return 0; + } + return it->second; + } + private: book &find_or_create_book(const symbol_type &symbol) { @@ -153,25 +299,60 @@ class exchange { return books.emplace(symbol, book{symbol, {}, {}}).first->second;; } + wallet_type &find_or_create_wallet(const trader_type &trader) { + auto it = wallets.find(trader); + if (it != wallets.end()) { + return it->second; + } + return wallets.emplace(trader, wallet_type{}).first->second;; + } + + void subtract_from_balance(const trader_type &trader, const token_type &token, currency_type amount) { + if (tokens.find(token) == tokens.end()) { + throw std::runtime_error("invalid token"); + } + auto &wallet = find_or_create_wallet(trader); + wallet[token] -= amount; + } + + void add_to_balance(const trader_type &trader, const token_type &token, currency_type amount) { + if (tokens.find(token) == tokens.end()) { + throw std::runtime_error("invalid token"); + } + auto &wallet = find_or_create_wallet(trader); + wallet[token] += amount; + } + // match order against existing offers, executing trades and notifying both parties template - void match(order& o, T &offers, execution_reports_type& reports) { + void match(order& o, T &offers, instrument &instr, execution_reports_type& reports) { auto it = offers.begin(); while(it != offers.end()) { // ok to drop const becasue the set is ordered by a custom comparator whose key(price) won't be changed auto &best_offer = const_cast(*it); - if (order_is_filled(o) || !order_matches(o, best_offer)) { + if (o.is_filled() || !o.matches(best_offer)) { return; } + auto &buy_order = o.side == side::buy ? o : best_offer; + auto &sell_order = o.side == side::buy ? best_offer : o; + auto &buyer = buy_order.trader; + auto &seller = sell_order.trader; // execute trade and notify both parties - auto qty = std::min(o.qty, best_offer.qty); - o.qty -= qty; - best_offer.qty -= qty; - auto price = (o.price + best_offer.price) /2; - reports.push_back({o.trader, o.id, exec_type::execution, o.side, qty, price}); - reports.push_back({best_offer.trader, best_offer.id, exec_type::execution, o.side == side::buy ? side::sell : side::buy, qty, price}); + auto exec_qty = std::min(o.qty, best_offer.qty); + buy_order.qty -= exec_qty; + sell_order.qty -= exec_qty; + // exchange tokens + auto exec_price = (o.price + best_offer.price) /2; + add_to_balance(buyer, instr.quote, exec_qty * buy_order.price); // add balance locked at the limit order price + subtract_from_balance(buyer, instr.quote, exec_qty * exec_price); // subtract balance at the execution price + add_to_balance(buyer, instr.base, exec_qty); // add bought tokens + subtract_from_balance(seller, instr.base, exec_qty); // subtract sold tokens + add_to_balance(seller, instr.quote, exec_qty * exec_price); // add balance at the execution price + // notify both parties + reports.push_back({buyer, buy_order.id, exec_type::execution, side::buy, exec_qty, exec_price}); + reports.push_back({seller, sell_order.id, exec_type::execution, side::sell, exec_qty, exec_price}); // remove offer from book if filled - if (order_is_filled(best_offer)) { + if (best_offer.is_filled()) { offers.erase(it); } // find next best offer @@ -184,7 +365,6 @@ class exchange { } }; -// utility functions for testing void print_book(FILE *out,const book &book) { auto b = book.bids.begin(); auto a = book.asks.begin(); @@ -207,6 +387,12 @@ void print_book(FILE *out,const book &book) { } } +void print_wallet(FILE *out, const exchange::wallet_type &wallet) { + for(auto &entry: wallet) { + fprintf(out, "%s: %d\n", entry.first.data(), entry.second); + } +} + static void print_execution_report(FILE *out, execution_report r) { fprintf(out, "Execution - Trader: %s ", r.trader.data()); fprintf(out, "Order ID: %d ", r.order_id); @@ -219,11 +405,15 @@ static void print_execution_report(FILE *out, execution_report r) { static void setup_test_fixture(exchange &ex) { // // setup playground execution_reports_type r; - ex.add_order(order{0, "perna", TEST_SYMBOL, side::buy, 100, 100}, r); - ex.add_order(order{0, "diego", TEST_SYMBOL, side::sell, 120, 100}, r); - ex.add_order(order{0, "perna", TEST_SYMBOL, side::buy, 110, 50}, r); - ex.add_order(order{0, "perna", TEST_SYMBOL, side::buy, 111, 40}, r); - ex.add_order(order{0, "diego", TEST_SYMBOL, side::sell, 112, 50}, r); + ex.deposit(trader_type{"perna"}, token_type{"ctsi"}, 1000000); + ex.deposit(trader_type{"perna"}, token_type{"usdc"}, 1000000); + ex.deposit(trader_type{"diego"}, token_type{"ctsi"}, 1000000); + ex.deposit(trader_type{"diego"}, token_type{"usdc"}, 1000000); + ex.new_order(order{0, "perna", TEST_SYMBOL, side::buy, 100, 100}, r); + ex.new_order(order{0, "diego", TEST_SYMBOL, side::sell, 120, 100}, r); + ex.new_order(order{0, "perna", TEST_SYMBOL, side::buy, 110, 50}, r); + ex.new_order(order{0, "perna", TEST_SYMBOL, side::buy, 111, 40}, r); + ex.new_order(order{0, "diego", TEST_SYMBOL, side::sell, 112, 50}, r); auto *book = ex.find_book(symbol_type{TEST_SYMBOL}); print_book(stdout, *book); } @@ -242,25 +432,30 @@ static bool print_error(FILE *out, const char* message) { static bool process_input(exchange &ex, FILE *in, FILE *out, bool interactive = false) { char cmd[1024]; symbol_type symbol; + token_type token; trader_type trader; - price_type price; + currency_type price; qty_type qty; execution_reports_type reports; memset(cmd, 0, sizeof(cmd)); memset(symbol.data(), 0, sizeof(symbol)); + memset(token.data(), 0, sizeof(token)); if (1 != fscanf(in, "%s", cmd)) { return print_error(out, "missing command"); } + if (0 == strcmp(cmd, "q")) { + return false; + } if (0 == strcmp(cmd, "buy")) { if (4 != fscanf(in, "%s %s %d %d", symbol.data(), trader.data(), &price, &qty)) { return print_error(out, "insufficient arguments for buy command"); } - ex.add_order(order{0, trader, symbol, side::buy, price, qty}, reports); + ex.new_order(order{0, trader, symbol, side::buy, price, qty}, reports); } else if (0 == strcmp(cmd, "sell")) { if (4 != fscanf(in, "%s %s %d %d", symbol.data(), trader.data(), &price, &qty)) { return print_error(out, "insufficient arguments for sell command"); } - ex.add_order(order{0, trader, symbol, side::sell, price, qty}, reports); + ex.new_order(order{0, trader, symbol, side::sell, price, qty}, reports); } else if (0 == strcmp(cmd, "book")) { if (1 != fscanf(in, "%s", symbol.data())) { return print_error(out, "insufficient arguments for book command"); @@ -272,6 +467,26 @@ static bool process_input(exchange &ex, FILE *in, FILE *out, bool interactive = } else { fprintf(out, "No book for symbol %s\n", symbol.data()); } + } else if (0 == strcmp(cmd, "wallet")) { + if (1 != fscanf(in, "%s", trader.data())) { + return print_error(out, "insufficient arguments for book command"); + } + auto *pwallet = ex.find_wallet(trader); + if (pwallet) { + print_wallet(out, *pwallet); + } else { + fprintf(out, "No wallet for trader %s\n", trader.data()); + } + } else if (0 == strcmp(cmd, "deposit")) { + if (3 != fscanf(in, "%s %s %d", token.data(), trader.data(), &qty)) { + return print_error(out, "insufficient arguments for sell command"); + } + ex.deposit(trader, token, qty); + } else if (0 == strcmp(cmd, "withdraw")) { + if (3 != fscanf(in, "%s %s %d", token.data(), trader.data(), &qty)) { + return print_error(out, "insufficient arguments for sell command"); + } + ex.withdraw(trader, token, qty); } else { return print_error(out, "invalid command"); } @@ -287,24 +502,28 @@ static void process_inputs(exchange &ex, bool interactive) { if (interactive) { fprintf(stdout, "Enter command. Format is: (buy|sell|book) symbol trader price qty\n> "); } - process_input(ex, stdin, stdout, true); + if (!process_input(ex, stdin, stdout, true)) { + return; + } } } static void print_help_and_exit(const char* program_name) { - printf("Usage: %s [--state-file=] [--output-file=] [--setup-test-fixture] [--help]\n", program_name); + printf("Usage: %s --lambda-state= [options...] \n", program_name); printf("Options:\n"); - printf(" --state-file= Load state from file\n"); - printf(" --output-file= Write output to file\n"); - printf(" --setup-test-fixture Setup test fixture\n"); - printf(" --interactive Interactive mode\n"); - printf(" --help Show help\n"); + printf(" --lambda-state= Where to read the lambda state from\n"); + printf(" --setup-test-fixture Setup test fixture\n"); + printf(" --interactive Interactive mode\n"); + printf(" --help Show help\n"); exit(0); } int main(int argc, char** argv) { - std::string opt_state_file; - std::string opt_output_file; + //unique_ptr state; + std::unique_ptr state; + + std::string opt_lambda_state; + bool opt_init_state = false; bool opt_setup_test_fixture = false; bool opt_interactive = false; bool opt_help = false; @@ -312,22 +531,17 @@ int main(int argc, char** argv) { // parse command line arguments for (int i = 1; i < argc; i++) { std::string arg = argv[i]; - if (arg == "--state-file") { + if (arg == "--lambda-state") { if (i + 1 < argc) { - opt_state_file = argv[++i]; + opt_lambda_state = argv[++i]; } else { std::cerr << "--state-file option requires a filename argument" << std::endl; return 1; } - } else if (arg == "--output-file") { - if (i + 1 < argc) { - opt_output_file = argv[++i]; - } else { - std::cerr << "--output-file option requires a filename argument" << std::endl; - return 1; - } } else if (arg == "--setup-test-fixture") { opt_setup_test_fixture = true; + } else if (arg == "--init-state") { + opt_init_state = true; } else if (arg == "--interactive") { opt_interactive = true; } else if (arg == "--help") { @@ -343,10 +557,37 @@ int main(int argc, char** argv) { print_help_and_exit(argv[0]); } - // initialize exchange - // placement new to initialize exchange from the lambda state - void *root = arena_allocate(sizeof(exchange)); - auto pex = new (root) exchange(); + // map lambda state + if (opt_lambda_state.empty()) { + std::cerr << "--lambda-state is required" << std::endl; + return 1; + } + if (opt_lambda_state.find("0x") == 0) { + auto length_index = opt_lambda_state.find(':'); + if (length_index == std::string::npos) { + std::cerr << "--lambda-state must be in the format 0x:" << std::endl; + return 1; + } + auto phys_addr = std::stoull(opt_lambda_state.substr(2, length_index-2), nullptr, 16); + auto length = std::stoull(opt_lambda_state.substr(length_index+1), nullptr, 16); + state = std::unique_ptr(new lambda_state(phys_addr, length)); + } else { + // dd if=/dev/zero of=lambda-state bs=1 count=8192 + state = std::unique_ptr(new lambda_state(opt_lambda_state.c_str())); + } + + // initialize arena + arena = reinterpret_cast(state->get_state()); + exchange *pex = reinterpret_cast(arena->get_data()); + if (opt_init_state) { + printf("init state....\n"); + // initialize arena + arena = new (state->get_state()) memory_arena(state->get_length()); + memset(arena->get_data(), 0, arena->get_data_length()); + // create master object at the start of the arena + void *root = arena->allocate(sizeof(exchange)); + pex = new (root) exchange(); + } auto &ex = *pex; if (opt_setup_test_fixture) { @@ -355,7 +596,7 @@ int main(int argc, char** argv) { } process_inputs(ex, opt_interactive); - + return 0; } diff --git a/exchange/lambda-state b/exchange/lambda-state new file mode 100644 index 0000000000000000000000000000000000000000..2fd67e6e0f963e25dbc84795c075b6509c03b111 GIT binary patch literal 8192 zcmeH_t4;$!6o!XeQdKHZWF-#56O<}s6D(p$cSCAQLra3>F_1`t!toq9WM6>XEj^7?1!W>1&!Vh+{3 zzP*cXOzqvS(>Rkc6fhVs zEuOxIy(wNtn=`xb*G-xrUfJ=!a2pv}f7WtF$F-}!`ab@6WDaLz_Y2d%DCC~3=kD40 z_2*!L+&NAv@&5ZrX6rGZ-})pihF{tqOz}US-5>EKPHsNJ5)lvq5fA|p5CIVo0TB=Z g5fA|p5CIVo0TB=Z5fA|p5CIVo0TB=Z5%?DZfA%X&qyPW_ literal 0 HcmV?d00001 From 994979afc3a13327f6c3a700faf86b62c9b04aea Mon Sep 17 00:00:00 2001 From: Marcos Pernambuco Motta <1091485+mpernambuco@users.noreply.github.commits> Date: Wed, 18 Oct 2023 22:57:21 -0300 Subject: [PATCH 3/9] deposits and instruments --- exchange/README.md | 73 +++++++++++++++++++++++++++++++++---------- exchange/exchange.cpp | 64 ++++++++++++++++++++++--------------- 2 files changed, 95 insertions(+), 42 deletions(-) diff --git a/exchange/README.md b/exchange/README.md index a40207f..56ff8b4 100644 --- a/exchange/README.md +++ b/exchange/README.md @@ -5,30 +5,69 @@ make ``` -## Run and test +## Run initializing state +``` +dd if=/dev/zero of=lambda-state bs=1 count=8192 +./exchange --interactive --init-state --setup-test-fixture --lambda-state ./lambda-state ``` -./exchange --setup-test-fixture --interactive -id tradr qty bid | ask qty tradr id -4 perna 40 111 | 112 50 diego 5 -3 perna 50 110 | 120 100 diego 2 -1 perna 100 100 | +## Run using existing state +``` +./exchange --interactive --lambda-state ./lambda-state +``` -Enter command. Format is: (buy|sell|book) symbol trader price qty -> buy ACME victor 112 30 +## Run interactive tests +``` +./exchange --interactive --lambda-state ./lambda-state +gold:exchange mpernambuco$ ./exchange --interactive --init-state --setup-test-fixture --lambda-state /Users/mpernambuco/ctsi2/hackaton/lambadex/exchange/lambda-state +init state.... -Execution - Trader: victor Order ID: 6 Execution Type: N Side: B Quantity: 30 Price: 112 -Execution - Trader: victor Order ID: 6 Execution Type: E Side: B Quantity: 30 Price: 112 -Execution - Trader: diego Order ID: 5 Execution Type: E Side: S Quantity: 30 Price: 112 +> book ctsi/usdc +id tradr qty bid | ask qty tradr id +0 perna 40 111 | 112 50 diego 0 +0 perna 50 110 | 120 100 diego 0 +0 perna 100 100 | -Enter command. Format is: (buy|sell|book) symbol trader price qty -> book ACME +> wallet perna +ctsi: 1000000 +usdc: 980060 + +> wallet diego +ctsi: 999850 +usdc: 1000000 + +> deposit perna brl 10 +> wallet perna +brl: 10 +ctsi: 1000000 +usdc: 980060 + + +> buy ctsi/brl perna 10 1 +Execution - Trader: perna Order ID: 0 Execution Type: N Side: B Quantity: 1 Price: 10 + + +> book ctsi/brl id tradr qty bid | ask qty tradr id -4 perna 40 111 | 112 20 diego 5 -3 perna 50 110 | 120 100 diego 2 -1 perna 100 100 | +0 perna 1 10 | +> sell ctsi/brl diego 10 1 +Execution - Trader: diego Order ID: 0 Execution Type: N Side: S Quantity: 1 Price: 10 +Execution - Trader: perna Order ID: 0 Execution Type: E Side: B Quantity: 1 Price: 10 +Execution - Trader: diego Order ID: 0 Execution Type: E Side: S Quantity: 1 Price: 10 Enter command. Format is: (buy|sell|book) symbol trader price qty -> + +> book ctsi/brl +id tradr qty bid | ask qty tradr id + +> wallet perna +brl: 0 +ctsi: 1000001 +usdc: 980060 + +> wallet diego +brl: 10 +ctsi: 999848 +usdc: 1000000 ``` diff --git a/exchange/exchange.cpp b/exchange/exchange.cpp index f34ea8c..2e41973 100644 --- a/exchange/exchange.cpp +++ b/exchange/exchange.cpp @@ -21,6 +21,7 @@ class lambda_state { int m_fd; uint64_t m_length = 0; void *m_state; + public: lambda_state(const char *file_name) { m_length = std::filesystem::file_size(file_name); @@ -65,7 +66,7 @@ class lambda_state { /// start of custom allocator stuff -class memory_arena { +class memory_arena { uint64_t m_length; uint64_t m_next_free; unsigned char m_data[0]; @@ -123,28 +124,40 @@ enum class exec_type : char { }; using contract_address_type = std::string; -// Accepted tokens and instruments +// Supported tokens static std::map tokens { {{"brl"}, {"0x0000000000000000000"}}, {{"usd"}, {"0x0000000000000000000"}}, {{"ctsi"}, {"0x0000000000000000000"}}, {{"usdc"}, {"0x0000000000000000000"}} }; + +// Trading instrument struct instrument { token_type base; // token being traded - token_type quote; // quote token + token_type quote; // quote token - "price " of 1 base token }; + + + // Supported instruments static std::map instruments { {symbol_type{"ctsi/usdc"}, {{"ctsi"}, {"usdc"}}}, + {symbol_type{"usdc/ctsi"}, {{"usdc"}, {"ctsi"}}}, + {symbol_type{"brl/usd"}, {{"blr"}, {"usd"}}}, + {symbol_type{"usd/brl"}, {{"usd"}, {"brl"}}}, + {symbol_type{"ctsi/brl"}, {{"ctsi"}, {"brl"}}}, + {symbol_type{"brl/ctsi"}, {{"brl"}, {"ctsi"}}}, }; + +// Token exchange order struct order { - id_type id; - trader_type trader; - symbol_type symbol; - side side; - currency_type price; // limit price - qty_type qty; // remaining quantity + id_type id; // order id provided by the exchange + trader_type trader; // trader id + symbol_type symbol; // instrument's symbol (ticker) + side side; // buy or sell + currency_type price; // limit price in instrument.quote + qty_type qty; // remaining quantity bool matches(const order& other) { return (side == side::buy && price >= other.price) || (side == side::sell && price <= other.price); @@ -190,17 +203,12 @@ struct execution_report { }; using execution_reports_type = std::vector; +using wallet_type = std::map, arena_allocator>>; +using books_type = std::map, arena_allocator>>; +using wallets_type = std::map, arena_allocator>>; + // exchange class to be "deserialized" from lambda state class exchange { -public: - using wallet_type = std::map, arena_allocator>>; - -private: - using orders_type = std::map, arena_allocator>>; - using books_type = std::map, arena_allocator>>; - using wallets_type = std::map, arena_allocator>>; - - orders_type orders; books_type books; wallets_type wallets; id_type next_id{0}; @@ -229,9 +237,9 @@ class exchange { return; } subtract_from_balance(o.trader, instrument->second.base, size); - } + } + // send report acknowledging new order - o.id = get_next_id(); reports.push_back({o.trader, o.id, exec_type::new_order, o.side, o.qty, o.price}); // match against existing orders auto &book = find_or_create_book(o.symbol); @@ -248,7 +256,8 @@ class exchange { } } - void cancel_order(id_type id, execution_reports_type &reports) { + void cancel_order(id_type order_id) { + // todo: } wallet_type* find_wallet(const trader_type &trader) { @@ -359,7 +368,8 @@ class exchange { it = offers.begin(); } } - + + id_type get_next_id() { return ++next_id; } @@ -387,7 +397,7 @@ void print_book(FILE *out,const book &book) { } } -void print_wallet(FILE *out, const exchange::wallet_type &wallet) { +void print_wallet(FILE *out, const wallet_type &wallet) { for(auto &entry: wallet) { fprintf(out, "%s: %d\n", entry.first.data(), entry.second); } @@ -406,9 +416,12 @@ static void setup_test_fixture(exchange &ex) { // // setup playground execution_reports_type r; ex.deposit(trader_type{"perna"}, token_type{"ctsi"}, 1000000); + auto x = ex.find_wallet(trader_type{"perna"}); + print_wallet(stdout, *x); ex.deposit(trader_type{"perna"}, token_type{"usdc"}, 1000000); ex.deposit(trader_type{"diego"}, token_type{"ctsi"}, 1000000); ex.deposit(trader_type{"diego"}, token_type{"usdc"}, 1000000); + ex.new_order(order{0, "perna", TEST_SYMBOL, side::buy, 100, 100}, r); ex.new_order(order{0, "diego", TEST_SYMBOL, side::sell, 120, 100}, r); ex.new_order(order{0, "perna", TEST_SYMBOL, side::buy, 110, 50}, r); @@ -440,6 +453,7 @@ static bool process_input(exchange &ex, FILE *in, FILE *out, bool interactive = memset(cmd, 0, sizeof(cmd)); memset(symbol.data(), 0, sizeof(symbol)); memset(token.data(), 0, sizeof(token)); + memset(trader.data(), 0, sizeof(trader)); if (1 != fscanf(in, "%s", cmd)) { return print_error(out, "missing command"); } @@ -478,12 +492,12 @@ static bool process_input(exchange &ex, FILE *in, FILE *out, bool interactive = fprintf(out, "No wallet for trader %s\n", trader.data()); } } else if (0 == strcmp(cmd, "deposit")) { - if (3 != fscanf(in, "%s %s %d", token.data(), trader.data(), &qty)) { + if (3 != fscanf(in, "%s %s %d", trader.data(), token.data(), &qty)) { return print_error(out, "insufficient arguments for sell command"); } ex.deposit(trader, token, qty); } else if (0 == strcmp(cmd, "withdraw")) { - if (3 != fscanf(in, "%s %s %d", token.data(), trader.data(), &qty)) { + if (3 != fscanf(in, "%s %s %d", trader.data(), token.data(), &qty)) { return print_error(out, "insufficient arguments for sell command"); } ex.withdraw(trader, token, qty); From af97605b56ece8bd1049aa3fba85baaba691cfaf Mon Sep 17 00:00:00 2001 From: Marcos Pernambuco Motta <1091485+mpernambuco@users.noreply.github.commits> Date: Wed, 18 Oct 2023 23:00:38 -0300 Subject: [PATCH 4/9] cleanup --- .gitignore | 1 + exchange/.gitignore | 2 ++ exchange/lambda-state | Bin 8192 -> 0 bytes 3 files changed, 3 insertions(+) delete mode 100644 exchange/lambda-state diff --git a/.gitignore b/.gitignore index 259148f..c714e78 100644 --- a/.gitignore +++ b/.gitignore @@ -30,3 +30,4 @@ *.exe *.out *.app +.vscode/settings.json diff --git a/exchange/.gitignore b/exchange/.gitignore index 9d1ebd0..17b5058 100644 --- a/exchange/.gitignore +++ b/exchange/.gitignore @@ -3,5 +3,7 @@ exchange.dSYM exchange.dSYM/* .DS_store .vscode +lambda-state + diff --git a/exchange/lambda-state b/exchange/lambda-state deleted file mode 100644 index 2fd67e6e0f963e25dbc84795c075b6509c03b111..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeH_t4;$!6o!XeQdKHZWF-#56O<}s6D(p$cSCAQLra3>F_1`t!toq9WM6>XEj^7?1!W>1&!Vh+{3 zzP*cXOzqvS(>Rkc6fhVs zEuOxIy(wNtn=`xb*G-xrUfJ=!a2pv}f7WtF$F-}!`ab@6WDaLz_Y2d%DCC~3=kD40 z_2*!L+&NAv@&5ZrX6rGZ-})pihF{tqOz}US-5>EKPHsNJ5)lvq5fA|p5CIVo0TB=Z g5fA|p5CIVo0TB=Z5fA|p5CIVo0TB=Z5%?DZfA%X&qyPW_ From b9ccbf7572970ecfeefe0ee2836b5cc34f653b83 Mon Sep 17 00:00:00 2001 From: Marcos Pernambuco Motta <1091485+mpernambuco@users.noreply.github.commits> Date: Thu, 19 Oct 2023 06:53:02 -0300 Subject: [PATCH 5/9] Isolate memory stuff --- exchange/.gitignore | 5 +- exchange/Makefile | 11 ++- exchange/exchange | Bin 0 -> 322960 bytes exchange/exchange.cpp | 178 ++++++++++++++--------------------------- exchange/state-mgr.cpp | 3 + exchange/state-mgr.h | 95 ++++++++++++++++++++++ 6 files changed, 171 insertions(+), 121 deletions(-) create mode 100755 exchange/exchange create mode 100644 exchange/state-mgr.cpp create mode 100644 exchange/state-mgr.h diff --git a/exchange/.gitignore b/exchange/.gitignore index 17b5058..d01d84b 100644 --- a/exchange/.gitignore +++ b/exchange/.gitignore @@ -1,9 +1,8 @@ -exchange -exchange.dSYM -exchange.dSYM/* +*.dSYM/** .DS_store .vscode lambda-state +*.o diff --git a/exchange/Makefile b/exchange/Makefile index 3da1466..67c6ee7 100644 --- a/exchange/Makefile +++ b/exchange/Makefile @@ -1,5 +1,12 @@ CXX = g++ CXXFLAGS = -std=c++17 -exchange: exchange.cpp - $(CXX) $(CXXFLAGS) -o $@ $< +SRCS = exchange.cpp state-mgr.cpp +OBJS = $(SRCS:.cpp=.o) + +# Generic rule to build .o file from .cpp +%.o: %.cpp $(wildcard *.h) + $(CXX) $(CXXFLAGS) -c $< -o $@ + +exchange: $(OBJS) + $(CXX) $(CXXFLAGS) -o $@ $^ diff --git a/exchange/exchange b/exchange/exchange new file mode 100755 index 0000000000000000000000000000000000000000..a8ea497c64c79f9c2ee73cf8c2b0251ac426cbdf GIT binary patch literal 322960 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 z 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 i^>X&MTYbRZr$wf>hwWe4X0QHzFvuHxkLiN| literal 0 HcmV?d00001 diff --git a/exchange/exchange.cpp b/exchange/exchange.cpp index 2e41973..b7d4ce0 100644 --- a/exchange/exchange.cpp +++ b/exchange/exchange.cpp @@ -11,110 +11,19 @@ #include #include #include +#include "state-mgr.h" #define TEST_SYMBOL "ctsi/usdc" -constexpr uint64_t LAMBDA_VIRTUAL_START = UINT64_C(0x1000000000); constexpr uint64_t LAMBDA_PHYS_START = UINT64_C(0); -class lambda_state { - int m_fd; - uint64_t m_length = 0; - void *m_state; - -public: - lambda_state(const char *file_name) { - m_length = std::filesystem::file_size(file_name); - m_fd = open(file_name, O_RDWR); - m_state = mmap((void*)LAMBDA_VIRTUAL_START, m_length, PROT_WRITE | PROT_READ, MAP_SHARED | MAP_NOEXTEND | MAP_FIXED, m_fd, 0); - if (m_state == MAP_FAILED) { - throw std::runtime_error(std::string("mmap - ") + std::strerror(errno)); - } - if (m_state != reinterpret_cast(LAMBDA_VIRTUAL_START)) { - close(m_fd); - throw std::runtime_error("mmap - unexpected address"); - } - } - - lambda_state(uint64_t phys_start, uint64_t length) : m_length(length) { - m_length = length; - m_fd = open("/dev/mem", O_RDWR); - m_state = mmap((void*)LAMBDA_VIRTUAL_START, m_length, PROT_WRITE | PROT_READ, MAP_SHARED | MAP_NOEXTEND | MAP_FIXED, m_fd, phys_start); - if (m_state == MAP_FAILED) { - throw std::runtime_error(std::string("mmap - ") + std::strerror(errno)); - } - if (m_state != reinterpret_cast(LAMBDA_VIRTUAL_START)) { - close(m_fd); - throw std::runtime_error("mmap - unexpected address"); - } - } - - virtual ~lambda_state() { - printf("munmap\n"); - munmap(m_state, m_length); - close(m_fd); - } - - uint64_t get_length() { - return m_length; - } - void *get_state() { - return m_state; - } - -}; - -/// start of custom allocator stuff - -class memory_arena { - uint64_t m_length; - uint64_t m_next_free; - unsigned char m_data[0]; -public: - memory_arena(uint64_t length) : m_length(length), m_next_free(0) { } - void *get_data() { - return m_data; - } - void *allocate(int length) { - auto p = m_data + m_next_free; - m_next_free += length; - if (m_next_free > get_data_length()) { - throw std::bad_alloc(); - } - return p; - } - void deallocate(void *p, int length) { - } - uint64_t get_data_length() { - return m_length - offsetof(memory_arena, m_data); - } - -}; - -static memory_arena *arena = nullptr; - -template -class arena_allocator { -public: - arena_allocator() = default; - using pointer = T*; - using value_type = T; - pointer allocate(std::size_t n) { - return static_cast(arena->allocate(n * sizeof(T))); - } - void deallocate(pointer p, std::size_t n) noexcept { - arena->deallocate(p, n * sizeof(T)); - } -}; - -// start of exchange types - using symbol_type = std::array; using token_type = std::array; using currency_type = int; using qty_type = int; using trader_type = std::array; using id_type = int; +using request_id_type = int; enum class side : char { buy = 'B', sell = 'S' }; enum class exec_type : char { new_order = 'N', // ack new order @@ -123,13 +32,52 @@ enum class exec_type : char { rejection = 'R' // order rejection }; using contract_address_type = std::string; +using request_type = char; + +struct request { + request_type type; + request_id_type id; +}; +struct new_order_request : request { + id_type id; + trader_type trader; + symbol_type symbol; + side side; + currency_type price; + qty_type qty; +}; +struct deposit_request : request { + trader_type trader; + token_type token; + currency_type amount; +}; +struct withdraw_request : request { + trader_type trader; + token_type token; + currency_type amount; +}; + +struct response { + request_id_type request_id; + bool success; + std::string message; +}; + +struct new_order_response : response { + id_type id; +}; + + + + + // Supported tokens static std::map tokens { - {{"brl"}, {"0x0000000000000000000"}}, - {{"usd"}, {"0x0000000000000000000"}}, - {{"ctsi"}, {"0x0000000000000000000"}}, - {{"usdc"}, {"0x0000000000000000000"}} + {{"brl"}, {"0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef"}}, + {{"usd"}, {"0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef"}}, + {{"ctsi"}, {"0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef"}}, + {{"usdc"}, {"0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef"}} }; // Trading instrument @@ -138,18 +86,16 @@ struct instrument { token_type quote; // quote token - "price " of 1 base token }; - // Supported instruments static std::map instruments { {symbol_type{"ctsi/usdc"}, {{"ctsi"}, {"usdc"}}}, {symbol_type{"usdc/ctsi"}, {{"usdc"}, {"ctsi"}}}, - {symbol_type{"brl/usd"}, {{"blr"}, {"usd"}}}, - {symbol_type{"usd/brl"}, {{"usd"}, {"brl"}}}, - {symbol_type{"ctsi/brl"}, {{"ctsi"}, {"brl"}}}, - {symbol_type{"brl/ctsi"}, {{"brl"}, {"ctsi"}}}, + {symbol_type{"brl/usd"}, {{"blr"}, {"usd"}}}, + {symbol_type{"usd/brl"}, {{"usd"}, {"brl"}}}, + {symbol_type{"ctsi/brl"}, {{"ctsi"}, {"brl"}}}, + {symbol_type{"brl/ctsi"}, {{"brl"}, {"ctsi"}}}, }; - // Token exchange order struct order { id_type id; // order id provided by the exchange @@ -285,19 +231,7 @@ class exchange { subtract_from_balance(trader, token, amount); // todo: notifications } - - currency_type get_balance(const trader_type &trader, const token_type &token) { - auto wallet = find_wallet(trader); - if (!wallet) { - return 0; - } - auto it = wallet->find(token); - if (it == wallet->end()) { - return 0; - } - return it->second; - } - + private: book &find_or_create_book(const symbol_type &symbol) { @@ -369,6 +303,18 @@ class exchange { } } + currency_type get_balance(const trader_type &trader, const token_type &token) { + auto wallet = find_wallet(trader); + if (!wallet) { + return 0; + } + auto it = wallet->find(token); + if (it == wallet->end()) { + return 0; + } + return it->second; + } + id_type get_next_id() { return ++next_id; diff --git a/exchange/state-mgr.cpp b/exchange/state-mgr.cpp new file mode 100644 index 0000000..30ee68c --- /dev/null +++ b/exchange/state-mgr.cpp @@ -0,0 +1,3 @@ +#include "state-mgr.h" + +memory_arena *arena = nullptr; diff --git a/exchange/state-mgr.h b/exchange/state-mgr.h new file mode 100644 index 0000000..3fd39c7 --- /dev/null +++ b/exchange/state-mgr.h @@ -0,0 +1,95 @@ +#include +#include +#include +#include +#include + +constexpr uint64_t LAMBDA_VIRTUAL_START = UINT64_C(0x1000000000); + +class memory_arena { + uint64_t m_length; + uint64_t m_next_free; + unsigned char m_data[0]; +public: + memory_arena(uint64_t length) : m_length(length), m_next_free(0) { } + void *get_data() { + return m_data; + } + void *allocate(int length) { + auto p = m_data + m_next_free; + m_next_free += length; + if (m_next_free > get_data_length()) { + throw std::bad_alloc(); + } + return p; + } + void deallocate(void *p, int length) { + } + uint64_t get_data_length() { + return m_length - offsetof(memory_arena, m_data); + } + +}; + +extern memory_arena *arena; + +template +class arena_allocator { +public: + arena_allocator() = default; + using pointer = T*; + using value_type = T; + pointer allocate(std::size_t n) { + return static_cast(arena->allocate(n * sizeof(T))); + } + void deallocate(pointer p, std::size_t n) noexcept { + arena->deallocate(p, n * sizeof(T)); + } +}; + +class lambda_state { + int m_fd; + uint64_t m_length = 0; + void *m_state; + +public: + lambda_state(const char *file_name) { + m_length = std::filesystem::file_size(file_name); + m_fd = open(file_name, O_RDWR); + m_state = mmap((void*)LAMBDA_VIRTUAL_START, m_length, PROT_WRITE | PROT_READ, MAP_SHARED | MAP_NOEXTEND | MAP_FIXED, m_fd, 0); + if (m_state == MAP_FAILED) { + throw std::runtime_error(std::string("mmap - ") + std::strerror(errno)); + } + if (m_state != reinterpret_cast(LAMBDA_VIRTUAL_START)) { + close(m_fd); + throw std::runtime_error("mmap - unexpected address"); + } + } + + lambda_state(uint64_t phys_start, uint64_t length) : m_length(length) { + m_length = length; + m_fd = open("/dev/mem", O_RDWR); + m_state = mmap((void*)LAMBDA_VIRTUAL_START, m_length, PROT_WRITE | PROT_READ, MAP_SHARED | MAP_NOEXTEND | MAP_FIXED, m_fd, phys_start); + if (m_state == MAP_FAILED) { + throw std::runtime_error(std::string("mmap - ") + std::strerror(errno)); + } + if (m_state != reinterpret_cast(LAMBDA_VIRTUAL_START)) { + close(m_fd); + throw std::runtime_error("mmap - unexpected address"); + } + } + + virtual ~lambda_state() { + printf("munmap\n"); + munmap(m_state, m_length); + close(m_fd); + } + + uint64_t get_length() { + return m_length; + } + void *get_state() { + return m_state; + } + +}; From e166807fa497e2b91013f86515c099749ee8a007 Mon Sep 17 00:00:00 2001 From: Marcos Pernambuco Motta <1091485+mpernambuco@users.noreply.github.commits> Date: Thu, 19 Oct 2023 10:16:33 -0300 Subject: [PATCH 6/9] wip --- exchange/exchange.h | 547 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 547 insertions(+) create mode 100644 exchange/exchange.h diff --git a/exchange/exchange.h b/exchange/exchange.h new file mode 100644 index 0000000..37c3e83 --- /dev/null +++ b/exchange/exchange.h @@ -0,0 +1,547 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "state-mgr.h" + +#define TEST_SYMBOL "ctsi/usdc" + +constexpr uint64_t LAMBDA_PHYS_START = UINT64_C(0); + +using symbol_type = std::array; +using token_type = std::array; +using currency_type = int; +using qty_type = int; +using trader_type = std::array; +using id_type = int; +using request_id_type = int; +enum class side_type : char { buy = 'B', sell = 'S' }; +enum class exec_type : char { + new_order = 'N', // ack new order + cancel = 'C', // ack cancel + execution = 'E', // trade execution (partial or full) + rejection = 'R' // order rejection +}; +using contract_address_type = std::string; +using request_type = char; + +struct new_order_request { + request_id_type id; + trader_type trader; + symbol_type symbol; + side_type side; + currency_type price; + qty_type qty; +}; +struct deposit_request { + trader_type trader; + token_type token; + currency_type amount; +}; +struct withdraw_request { + trader_type trader; + token_type token; + currency_type amount; +}; + +// Supported tokens +static std::map tokens { + {{"brl"}, {"0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef"}}, + {{"usd"}, {"0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef"}}, + {{"ctsi"}, {"0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef"}}, + {{"usdc"}, {"0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef"}} +}; + +// Trading instrument +struct instrument { + token_type base; // token being traded + token_type quote; // quote token - "price " of 1 base token +}; + + // Supported instruments + static std::map instruments { + {symbol_type{"ctsi/usdc"}, {{"ctsi"}, {"usdc"}}}, + {symbol_type{"usdc/ctsi"}, {{"usdc"}, {"ctsi"}}}, + {symbol_type{"brl/usd"}, {{"blr"}, {"usd"}}}, + {symbol_type{"usd/brl"}, {{"usd"}, {"brl"}}}, + {symbol_type{"ctsi/brl"}, {{"ctsi"}, {"brl"}}}, + {symbol_type{"brl/ctsi"}, {{"brl"}, {"ctsi"}}}, + }; + +// Token exchange order +struct order { + id_type id; // order id provided by the exchange + request_id_type request; + trader_type trader; // trader id + symbol_type symbol; // instrument's symbol (ticker) + side_type side; // buy or sell + currency_type price; // limit price in instrument.quote + qty_type qty; // remaining quantity + + bool matches(const order& other) { + return (side == side_type::buy && price >= other.price) || (side == side_type::sell && price <= other.price); + } + + bool is_filled() { + return qty == 0; + } + +}; + +// comparator for sorting bid offers +struct best_bid { + bool operator()(const order &a, const order &b) const { + return a.price > b.price; + } +}; + +// comparator for sortting ask offers +struct best_ask { + bool operator()(const order &a, const order &b) const { + return a.price < b.price; + } +}; + + using bids_type = std::multiset>; + using asks_type = std::multiset>; + +struct book { + symbol_type symbol; + bids_type bids; + asks_type asks; +}; + +// exchange notifications +struct execution_report { + id_type order_id; // order id + request_id_type request_id; // request id + trader_type trader; // trader id + exec_type type; // execution type + side_type side; // side of executed order + qty_type qty; // qtd executed + currency_type price; // execution price +}; +using execution_reports_type = std::vector; + +using wallet_type = std::map, arena_allocator>>; +using books_type = std::map, arena_allocator>>; +using wallets_type = std::map, arena_allocator>>; + +// exchange class to be "deserialized" from lambda state +class exchange { + books_type books; + wallets_type wallets; + id_type next_id{0}; + +public: + void new_order(new_order_request req, execution_reports_type &reports) { + // validate order + auto instrument = instruments.find(req.symbol); + if (instrument == instruments.end()) { + reports.push_back({0, req.id,req.trader, exec_type::rejection}); + return; + } + if (req.side == side_type::buy) { + auto size = req.qty * o.price;; + auto balance = get_balance(o.trader, instrument->second.quote); + if (balance < size) { + reports.push_back({0, req.id, req.trader, exec_type::rejection}); + return; + } + subtract_from_balance(req.trader, instrument->second.quote, size); + } else { + auto size = req.qty; + auto balance = get_balance(req.trader, instrument->second.base); + if (balance < size) { + reports.push_back({0, req.id, req.trader, exec_type::rejection}); + return; + } + subtract_from_balance(req.trader, instrument->second.base, size); + } + // create order + order o{get_next_id(), req.id, req.trader, req.symbol, req.side, req.price, req.qty}; + // send report acknowledging new order + reports.push_back({o.id, req.id, o.trader, exec_type::new_order, o.side, o.qty, o.price}); + // match against existing orders + auto &book = find_or_create_book(o.symbol); + if (o.side == side_type::buy) { + match(o, book.asks, instrument->second, reports); + if (!o.is_filled()) { + book.bids.insert(o); + } + } else { + match(o, book.bids, instrument->second, reports); + if (!o.is_filled()) { + book.asks.insert(o); + } + } + } + + void cancel_order(id_type order_id) { + // todo: + } + + wallet_type* find_wallet(const trader_type &trader) { + auto it = wallets.find(trader); + if (it != wallets.end()) { + return &it->second; + } + return nullptr; + } + + book *find_book(const symbol_type &symbol) { + auto it = books.find(symbol); + if (it != books.end()) { + return &it->second; + } + return nullptr; + } + + void deposit(const trader_type &trader, const token_type &token, currency_type amount) { + add_to_balance(trader, token, amount); + // todo: notifications + } + + void withdraw(const trader_type &trader, const token_type &token, currency_type amount) { + subtract_from_balance(trader, token, amount); + // todo: notifications + } + +private: + + book &find_or_create_book(const symbol_type &symbol) { + auto it = books.find(symbol); + if (it != books.end()) { + return it->second; + } + return books.emplace(symbol, book{symbol, {}, {}}).first->second;; + } + + wallet_type &find_or_create_wallet(const trader_type &trader) { + auto it = wallets.find(trader); + if (it != wallets.end()) { + return it->second; + } + return wallets.emplace(trader, wallet_type{}).first->second;; + } + + void subtract_from_balance(const trader_type &trader, const token_type &token, currency_type amount) { + if (tokens.find(token) == tokens.end()) { + throw std::runtime_error("invalid token"); + } + auto &wallet = find_or_create_wallet(trader); + wallet[token] -= amount; + } + + void add_to_balance(const trader_type &trader, const token_type &token, currency_type amount) { + if (tokens.find(token) == tokens.end()) { + throw std::runtime_error("invalid token"); + } + auto &wallet = find_or_create_wallet(trader); + wallet[token] += amount; + } + + // match order against existing offers, executing trades and notifying both parties + template + void match(order& o, T &offers, instrument &instr, execution_reports_type& reports) { + auto it = offers.begin(); + while(it != offers.end()) { + // ok to drop const becasue the set is ordered by a custom comparator whose key(price) won't be changed + auto &best_offer = const_cast(*it); + if (o.is_filled() || !o.matches(best_offer)) { + return; + } + auto &buy_order = o.side == side_type::buy ? o : best_offer; + auto &sell_order = o.side == side_type::buy ? best_offer : o; + auto &buyer = buy_order.trader; + auto &seller = sell_order.trader; + // execute trade and notify both parties + auto exec_qty = std::min(o.qty, best_offer.qty); + buy_order.qty -= exec_qty; + sell_order.qty -= exec_qty; + // exchange tokens + auto exec_price = (o.price + best_offer.price) /2; + add_to_balance(buyer, instr.quote, exec_qty * buy_order.price); // add balance locked at the limit order price + subtract_from_balance(buyer, instr.quote, exec_qty * exec_price); // subtract balance at the execution price + add_to_balance(buyer, instr.base, exec_qty); // add bought tokens + subtract_from_balance(seller, instr.base, exec_qty); // subtract sold tokens + add_to_balance(seller, instr.quote, exec_qty * exec_price); // add balance at the execution price + // notify both parties + reports.push_back({buy_order.id, buy_order.request_id, buyer, exec_type::execution, side_type::buy, exec_qty, exec_price}); + reports.push_back({sell_order.id, sell_order.request_id, seller, exec_type::execution, side_type::sell, exec_qty, exec_price}); + // remove offer from book if filled + if (best_offer.is_filled()) { + offers.erase(it); + } + // find next best offer + it = offers.begin(); + } + } + + currency_type get_balance(const trader_type &trader, const token_type &token) { + auto wallet = find_wallet(trader); + if (!wallet) { + return 0; + } + auto it = wallet->find(token); + if (it == wallet->end()) { + return 0; + } + return it->second; + } + + + id_type get_next_id() { + return ++next_id; + } +}; + +void print_book(FILE *out,const book &book) { + auto b = book.bids.begin(); + auto a = book.asks.begin(); + fprintf(out, "id \ttradr\tqty\tbid | ask\tqty \ttradr\tid\n"); + while (b!=book.bids.end() || a!=book.asks.end()) { + if (b!=book.bids.end()) { + fprintf(out, "%d\t%s\t%d\t%d", b->id, b->trader.data(), b->qty, b->price); + } else { + fprintf(out, " \t \t \t "); + } + fprintf(out, " | "); + if (a!=book.asks.end()) { + fprintf(out, "%d\t%d\t%s\t%d", a->price, a->qty, a->trader.data(), a->id); + } else { + fprintf(out, " \t \t \t "); + } + fprintf(out, "\n"); + if (b!=book.bids.end()) ++b; + if (a!=book.asks.end()) ++a; + } +} + +void print_wallet(FILE *out, const wallet_type &wallet) { + for(auto &entry: wallet) { + fprintf(out, "%s: %d\n", entry.first.data(), entry.second); + } +} + +static void print_execution_report(FILE *out, execution_report r) { + fprintf(out, "Execution - Trader: %s ", r.trader.data()); + fprintf(out, "Order ID: %d ", r.order_id); + fprintf(out, "Request ID: %d ", r.request_id); + fprintf(out, "Execution Type: %c ", (char)r.type); + fprintf(out, "Side: %c ", (char)r.side); + fprintf(out, "Quantity: %d ", r.qty); + fprintf(out, "Price: %d\n", r.price); +} + +static void setup_test_fixture(exchange &ex) { + // // setup playground + execution_reports_type r; + ex.deposit(trader_type{"perna"}, token_type{"ctsi"}, 1000000); + auto x = ex.find_wallet(trader_type{"perna"}); + print_wallet(stdout, *x); + ex.deposit(trader_type{"perna"}, token_type{"usdc"}, 1000000); + ex.deposit(trader_type{"diego"}, token_type{"ctsi"}, 1000000); + ex.deposit(trader_type{"diego"}, token_type{"usdc"}, 1000000); + + ex.new_order(new_order_request{1, "perna", TEST_SYMBOL, side_type::buy, 100, 100}, r); + ex.new_order(new_order_request{2, "diego", TEST_SYMBOL, side_type::sell, 120, 100}, r); + ex.new_order(new_order_request{3, "perna", TEST_SYMBOL, side_type::buy, 110, 50}, r); + ex.new_order(new_order_request{4, "perna", TEST_SYMBOL, side_type::buy, 111, 40}, r); + ex.new_order(new_order_request{5, "diego", TEST_SYMBOL, side_type::sell, 112, 50}, r); + auto *book = ex.find_book(symbol_type{TEST_SYMBOL}); + print_book(stdout, *book); +} + +static bool print_error(FILE *out, const char* message) { + fprintf(out, "ERROR: %s\n", message); + return false; +} + +/* + commands are in the format: + buy + sell + book +*/ +static bool process_input(exchange &ex, FILE *in, FILE *out, bool interactive = false) { + char cmd[1024]; + symbol_type symbol; + token_type token; + trader_type trader; + currency_type price; + qty_type qty; + execution_reports_type reports; + memset(cmd, 0, sizeof(cmd)); + memset(symbol.data(), 0, sizeof(symbol)); + memset(token.data(), 0, sizeof(token)); + memset(trader.data(), 0, sizeof(trader)); + if (1 != fscanf(in, "%s", cmd)) { + return print_error(out, "missing command"); + } + if (0 == strcmp(cmd, "q")) { + return false; + } + if (0 == strcmp(cmd, "buy")) { + if (4 != fscanf(in, "%s %s %d %d", symbol.data(), trader.data(), &price, &qty)) { + return print_error(out, "insufficient arguments for buy command"); + } + ex.new_order(new_order_request{0, trader, symbol, side_type::buy, price, qty}, reports); + } else if (0 == strcmp(cmd, "sell")) { + if (4 != fscanf(in, "%s %s %d %d", symbol.data(), trader.data(), &price, &qty)) { + return print_error(out, "insufficient arguments for sell command"); + } + ex.new_order(new_order_request{0, trader, symbol, side_type::sell, price, qty}, reports); + } else if (0 == strcmp(cmd, "book")) { + if (1 != fscanf(in, "%s", symbol.data())) { + return print_error(out, "insufficient arguments for book command"); + } + auto *pbook = ex.find_book(symbol); + // todo: return book in standard output format + if (pbook) { + print_book(out, *pbook); + } else { + fprintf(out, "No book for symbol %s\n", symbol.data()); + } + } else if (0 == strcmp(cmd, "wallet")) { + if (1 != fscanf(in, "%s", trader.data())) { + return print_error(out, "insufficient arguments for book command"); + } + auto *pwallet = ex.find_wallet(trader); + if (pwallet) { + print_wallet(out, *pwallet); + } else { + fprintf(out, "No wallet for trader %s\n", trader.data()); + } + } else if (0 == strcmp(cmd, "deposit")) { + if (3 != fscanf(in, "%s %s %d", trader.data(), token.data(), &qty)) { + return print_error(out, "insufficient arguments for sell command"); + } + ex.deposit(trader, token, qty); + } else if (0 == strcmp(cmd, "withdraw")) { + if (3 != fscanf(in, "%s %s %d", trader.data(), token.data(), &qty)) { + return print_error(out, "insufficient arguments for sell command"); + } + ex.withdraw(trader, token, qty); + } else { + return print_error(out, "invalid command"); + } + // TODO: convert the execution reports in standard output formant suitable for parsing + for(auto &report: reports) { + print_execution_report(out, report); + } + return true; +} + +static void process_inputs(exchange &ex, bool interactive) { + while(true) { + if (interactive) { + fprintf(stdout, "Enter command. Format is: (buy|sell|book) symbol trader price qty\n> "); + } + if (!process_input(ex, stdin, stdout, true)) { + return; + } + } +} + +static void print_help_and_exit(const char* program_name) { + printf("Usage: %s --lambda-state= [options...] \n", program_name); + printf("Options:\n"); + printf(" --lambda-state= Where to read the lambda state from\n"); + printf(" --setup-test-fixture Setup test fixture\n"); + printf(" --interactive Interactive mode\n"); + printf(" --help Show help\n"); + exit(0); +} + +int main(int argc, char** argv) { + //unique_ptr state; + std::unique_ptr state; + + std::string opt_lambda_state; + bool opt_init_state = false; + bool opt_setup_test_fixture = false; + bool opt_interactive = false; + bool opt_help = false; + + // parse command line arguments + for (int i = 1; i < argc; i++) { + std::string arg = argv[i]; + if (arg == "--lambda-state") { + if (i + 1 < argc) { + opt_lambda_state = argv[++i]; + } else { + std::cerr << "--state-file option requires a filename argument" << std::endl; + return 1; + } + } else if (arg == "--setup-test-fixture") { + opt_setup_test_fixture = true; + } else if (arg == "--init-state") { + opt_init_state = true; + } else if (arg == "--interactive") { + opt_interactive = true; + } else if (arg == "--help") { + opt_help = true; + } else { + std::cerr << "Unknown option: " << arg << std::endl; + return 1; + } + } + + // handle commands + if (opt_help) { + print_help_and_exit(argv[0]); + } + + // map lambda state + if (opt_lambda_state.empty()) { + std::cerr << "--lambda-state is required" << std::endl; + return 1; + } + if (opt_lambda_state.find("0x") == 0) { + auto length_index = opt_lambda_state.find(':'); + if (length_index == std::string::npos) { + std::cerr << "--lambda-state must be in the format 0x:" << std::endl; + return 1; + } + auto phys_addr = std::stoull(opt_lambda_state.substr(2, length_index-2), nullptr, 16); + auto length = std::stoull(opt_lambda_state.substr(length_index+1), nullptr, 16); + state = std::unique_ptr(new lambda_state(phys_addr, length)); + } else { + // dd if=/dev/zero of=lambda-state bs=1 count=8192 + state = std::unique_ptr(new lambda_state(opt_lambda_state.c_str())); + } + + // initialize arena + arena = reinterpret_cast(state->get_state()); + exchange *pex = reinterpret_cast(arena->get_data()); + if (opt_init_state) { + printf("init state....\n"); + // initialize arena + arena = new (state->get_state()) memory_arena(state->get_length()); + memset(arena->get_data(), 0, arena->get_data_length()); + // create master object at the start of the arena + void *root = arena->allocate(sizeof(exchange)); + pex = new (root) exchange(); + } + auto &ex = *pex; + + if (opt_setup_test_fixture) { + // setup test fixtureexchange ex; + setup_test_fixture(ex); + } + + process_inputs(ex, opt_interactive); + + return 0; +} + From 7f0a47e6546055953f21173a3c4f1a824442a311 Mon Sep 17 00:00:00 2001 From: Marcos Pernambuco Motta <1091485+mpernambuco@users.noreply.github.commits> Date: Thu, 19 Oct 2023 19:41:26 -0300 Subject: [PATCH 7/9] Test on cartesi machine --- .gitignore | 3 ++ exchange/.gitignore | 4 ++ exchange/Makefile | 88 +++++++++++++++++++++++++++++++++++++++--- exchange/exchange | Bin 322960 -> 0 bytes exchange/exchange.cpp | 78 ++++++++++++++++--------------------- exchange/state-mgr.h | 6 ++- 6 files changed, 127 insertions(+), 52 deletions(-) delete mode 100755 exchange/exchange diff --git a/.gitignore b/.gitignore index c714e78..a75adc9 100644 --- a/.gitignore +++ b/.gitignore @@ -31,3 +31,6 @@ *.out *.app .vscode/settings.json +exchange/.bash_history +.gitignore +exchange/exchange-emu.ext2 diff --git a/exchange/.gitignore b/exchange/.gitignore index d01d84b..fcb8fd3 100644 --- a/exchange/.gitignore +++ b/exchange/.gitignore @@ -3,6 +3,10 @@ .vscode lambda-state *.o +exchange +exchange-emu +exchange-linux +state.bin diff --git a/exchange/Makefile b/exchange/Makefile index 67c6ee7..f355b51 100644 --- a/exchange/Makefile +++ b/exchange/Makefile @@ -1,12 +1,90 @@ +TOOLCHAIN:=cartesi/toolchain:0.15.0 +LINUX:=gcc:12.2.0 + CXX = g++ CXXFLAGS = -std=c++17 - SRCS = exchange.cpp state-mgr.cpp -OBJS = $(SRCS:.cpp=.o) -# Generic rule to build .o file from .cpp +RUN_TOOLCHAIN = \ + docker run \ + -e USER=$$(id -u -n) \ + -e GROUP=$$(id -g -n) \ + -e UID=$$(id -u) \ + -e GID=$$(id -g) \ + -v `pwd`:/home/$$(id -u -n) \ + -w /home/$$(id -u -n) \ + --rm \ + -$(INTERACTIVE)t $(TOOLCHAIN) + +RUN_LINUX = \ + docker run \ + -e USER=$$(id -u -n) \ + -e GROUP=$$(id -g -n) \ + -e UID=$$(id -u) \ + -e GID=$$(id -g) \ + -v `pwd`:/home/$$(id -u -n) \ + -w /home/$$(id -u -n) \ + --rm \ + -$(INTERACTIVE)t $(LINUX) + +RUN_CARTESI_MACHINE := \ + cartesi-machine.lua \ + --append-dtb-bootargs="single=yes" \ + --flash-drive="label:fs,filename:exchange-emu.ext2" \ + --flash-drive=label:"state.bin,filename:state.bin,shared" \ + -i + +exchange: $(SRCS) + $(CXX) $(CXXFLAGS) -o $@ $^ + +STATE_SIZE := 8192 +STATE_FILE = state.bin +$(STATE_FILE): exchange-linux + dd if=/dev/zero of=$@ bs=1 count=$(STATE_SIZE) + $(RUN_LINUX) ./exchange-linux --init-state --setup-test-fixture --lambda-state $(STATE_FILE) + chmod 777 $(STATE_FILE) + +init-state: + rm -f $(STATE_FILE) + $(MAKE) $(STATE_FILE) + +exchange-emu.ext2: exchange-emu $(STATE_FILE) + mkdir -p fs + cp -f exchange-emu $(STATE_FILE) fs/ + $(RUN_TOOLCHAIN) genext2fs -f -i 512 -b 8192 -d fs $@ + truncate -s %4096 $@ + +exchange-emu: CXX = $(RUN_TOOLCHAIN) riscv64-cartesi-linux-gnu-g++ +exchange-emu: %.o = $(RUN_TOOLCHAIN) g++ +exchange-emu: $(SRCS) + $(CXX) $(CXXFLAGS) -o $@ $^ + +exchange-linux: CXX = $(RUN_LINUX) g++ +exchange-linux: %.o = $(RUN_LINUX) g++ +exchange-linux: $(SRCS) + $(CXX) $(CXXFLAGS) -o $@ $^ + +cartesi-machine: exchange-emu.ext2 + $(RUN_CARTESI_MACHINE) /bin/sh + +run-emu: exchange-emu.ext2 + $(RUN_CARTESI_MACHINE) /mnt/fs/exchange-emu --interactive --lambda-state /mnt/fs/state.bin + +run-linux: INTERACTIVE =i +run-linux: exchange-emu.ext2 + $(RUN_LINUX) ./exchange-linux --lambda-state state.bin --interactive + + %.o: %.cpp $(wildcard *.h) $(CXX) $(CXXFLAGS) -c $< -o $@ -exchange: $(OBJS) - $(CXX) $(CXXFLAGS) -o $@ $^ +toolchain-env: INTERACTIVE =i +toolchain-env: + $(RUN_TOOLCHAIN) /bin/bash + +linux-env: INTERACTIVE =i +linux-env: + $(RUN_LINUX) /bin/sh + +clean: + rm -f $(OBJS) exchange exchange-emu exchange-linux diff --git a/exchange/exchange b/exchange/exchange deleted file mode 100755 index a8ea497c64c79f9c2ee73cf8c2b0251ac426cbdf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 322960 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 z zvyjp*dn&MHg{Iqkkx>0U&GWHo7{!+fH{+}b22?QTunq2(u=jhPgF>UcPxDn^80~@E z1n;wadzyYO(n{zxY;I&Pf`@YXQ-6ulcO(AsTd`eP&Cr59V_{4k0FFZPvML_}L|_d9 zx6%8(IR=FvN+m{5pZ_`EjmDq71}D~>Kbz|#+ce~+qCA*eeuMIKZ*4^WMxno?t4jOl zXn)CANGU)B%|GJ(^PAxBG`HMO_+#gPV(Xnb#K8#p3!YJecJ%M~A9)|+OJ6OAzp{NE z*H0V1f_lDwIzcAgQR}BMa9)mPf7=8)Ieq=~jEJ-AC&tgz&$sCL8uO_At$ZKV49G54 z@(h*Wc0ta4&N02_d!(1WpZH338udbT+i3`;1c?FSNMlQeY^So;#On+tL`tJkR!it z+V>G&3g;?k4>f^*RELT^2ST&X5CZ$V-%U*E9kZHNaaROZ`r1>VC z$8HQeMYHz4;;;Fgo)C6geqZsU-}QTb1I}Y#co{p;g9UKHNw|#zgo+a5t(hwZ^-nBX z2iziWwaFZKrDf<>-pq$hI6pl{Dp->?;ZMSR z2XY$ow3La?Pd~=@ey|Mtg8xn3bUuE<`PHmp*(&QZUteC!V>3GUju@Xz`Xd);J(wny z`=3BBFy{8z)cIB058)MiU^Mp=A0CVd@5asp|4Z*DzPy__poW7x=1|=`j>(UwEjM~U zvBTfHiN}rO&+N>2IXOCZ9zVpdnOrfR9_3FUQ%U8Bo=N-8pKo*HKKdv2DEAZ3g)6r+ z8#SQuqcU1h2Z~wv#@tVQ^4Xiu7ju%S=UiZyIPcti z>GL0TBxBYiuV*6otxgra$@3redTImVYee?h5=@B(y&sM{VLJNvv5EVbW(5R8jZDg_ z>#?IkIf@F81pkSgu&c_q2fs%@#wUm_Mo{*s0G#V@B>5d3{vvw%{Bx<;@oM74?^pf_ zp|QpfbL5supcb1a?s7nLWe9VdU2nt%7$JV- z#{OnJGUK01SK6{G48=}(w7Pp@v5g$#^ zi*uvwh#1}dte3Y5jtj5X{j6JlM%o*s9W_Co#YaLS8-sWh5Jb=A8*x7?g8FY9y)VGL zF(SR+7o&H(PwyKm(fiepR-t!wdTz@4!0oTR7Jg&%Kb8Ojb+X2&Ihzl8p85_-5fovVK3$J4YXH1Edv zaW+fJq$`^jhNM4UI{RiC%iPY3&Y$I37cP)7yW9mvsxezJS8eplc5dk&XUwqsInyWwCrs0`yDQjFry4THXf^QV3zu>Dxcq#|FYb_%fHsw z^}J62dbAkqK>M0I?Gst_mOjl9eMNi+K%bI1T*jlH5+{Ad9t8&sKtP5~t%UpNHWX`M zP^xT2QG}>%$4qN7467YOekrKbzfE!lQO!O|!uh00@GJNTc}=#1BE6vJVPFE9?}LGy zK{aIBOYBnyD>ofY6!v1+2tCm;HB$<-4C<<5$ZS|IK%xKxM1Z@_Y$Zjek_@KjBA=5v zsw-#2C&eor5Hn}wyle&nhP=~5#S zj4kb$f232>kbZGX@4!e6*$;gUnf!GdHsA&QBB1(1ypZJ|hDizlhk=11?qYS24UtgD z7!rxoc)h#|ciG`GQ#xC$CJ0I^I=0o}A-}m!3tVPXLIB<+0D!~DWx_ab(IWPPVX;Bm z1Mvkj3AI8tw47EjPkk}uv}HvrIB2*TEI}SxhCY^&mx@<8xT=A+`izWeQn%lngvN^ZfMCVtF{&LO;R(H? z!ke`v?fD-#*w1B$i1w)V?0J@ItFG~=b~|3msrC(|MpUyL z02*8-Rr}2{wB>!s?X$S@%M-V2F*l!gSua~&M0S7+sv;s zCv$kz6WmMaq`qXf0Z<1;SXGgO2K@EaGR{)*S8A@H5eR}xGp#n5E(!a<*)RUY0Z6se zKU$-QAjjszs_^23CdFg8_}&=2rva`?@a`Lj7bDm~Qvd=uTmg>7YjizV!hC52XPm}3 zi`0uGsq5&}a}{Z}jo5l}(Ykg)DOXHk6HBFu2bmG*WgEPAAd3s3CbB7Bak!qo1vsR+ z?0Hn4Q*H}SD|C!pKsjL6W66u*cUelw_Z0I0V*rWm_|4O8Zmw-_w%A`Q7ELzPWa9JOHlUzy!+Gejg;T&w{iPq<+1iI^cIR0+E z1QZ=x>qDc>CDZntkg(8~dYljz^dl6<3rM^NQq}?((88to2*oF*%QhtANWIsB6&?Qc?MaQDaJEVnuSF9Ir*Cr^$p{vj~#fEzTY z>xO^9h5IDRHRvEzb9D9r2CI6lVKroRa&c$L#hgnU!Og0 zi+atcUmqRi>!g8w*Z}@&iYF+32hEcZV;3Nf^@jc_V_3??^_9;rzCU8^SdPk>zHU9< z6yu=RzCY|dg2~o7TkRnzfcia2Qe*qWrb|*}>W`K8se(=T)wTg4z=}iWLHX`I&Hqt; z&wfJ1@iof$xR%Bm+3X-?Y)CW(e=^_uiEt7eI$XYc5aH9upR{ky|LI{or6I(hTd&`D zCK^j9Yq!4u`mbz{k1q4W?=Qf=#p+Odk*@djw~j~F{H@TTS{d?d%mZOXAO1vnjM3@b zuj(P)0#wyqd!nvcNz_ZvUVl11^kZJ8jvitBxp9}|QG!-CdZAyg&wT3)S4a4*Z0uqO z0i?P&W`EQCBRB7FqM8Wj58t0k^^xT=3G=qZ=iDxo5x<`h@`J?5wp5;jVN!X%^5ln6 zw6gQHvDqtClFM`95P_HM2Imn;*bia<72^Tc9`eTfFDw5>#?#x?O^O-owZ_va;HqM4 ztO8*0W|Dc624SfL%rj3zg^v(L|GVT@*zX2=5J3t=c&X7o4ybS2R201H>r3*Bj%NoZIZ=b!tGqzF!% z{TZUFe~#!;a;)W-AV`;O|13Qe%$>jC1NZ`d7G6MZ-EycRs$s}1l>!>drdMyOyfcg+ zy5&-m1f37o+;NsLnYBv%=_{Hq8wJ0S@s74=|Nm7%A{!pUR-#1@SSO-SX#bWx`@dV7 zc<==_fotcp_tKn3H%rY6h~p!3sagLbGM)X;XBfLu5MK%SB@4mUwFaX28}dK_jAWRh zYV~)qNt2~9&zgZfE&!|l>#WVpE0}57rJdww;vG^0*bJ@Nq}6|&w%KbweyVTchV-0; zf#lWL2gC_uf8vwuGnFv*PZvlq4r}bg(7#lA!JUFIrg01Yfcd_5%W)RaLXUZf6tEcj z%M;RUFG?FT?|HoFhXQ(O=-*^(nl*Tc+xX)}$-rFC3yM?SFc)TlOC$Ov&$mNwU{HhR z0PPWma0Pq)8X6t|jl*&F`foq}pK7n4@oOTF{^G>y04Zhm`s;T-V;6Q?W`A!fsWJQe zg&`JfhKb`5DRh-na@f3=9_<$1q<@0<*BJBL|C2PlL!UwpK6fYHM_4bUgM&>S z8`Pyh`FcxXKzp(-1oB}uPfMBl#Rn-E1v6exm_z+z>XXZ0AdlNAY?wIu%*4B#8*8Qd zdeB-6Bnl4haO=RlgT4E77Ok6sa7O1qI@tPi;)ujPFNV=pG;=YKT|QNQu4}>%-1eCR z_?lZ$hadB~R(UQ-i50zn->_k2%~-4&_9w&SRuot!{buN}{$>o@Evj-W2AOd{g^WBi z-i8dE|6_CUioptjB{$_FtV#~dn|gGU&8$W_(bGYWkG;?gHJG^;b30ZV*SZt9+?1nG z#XJaY)S0=%RahdA9MthB)Snqf25T1&MLFw_$kiY#n|TFUZq)Dj7&`nIi{z%fayEZf z5Ci5%rx2VT*LslSV zxvCf!iK4KTgD4sYhRk2rryJHvRnDW5)zKT5;rK1x({xse4qK32m2e55=4pUGin zGwqrr_&-5ME~SF&BuDW7b2tLZ@PD*)dPUSJAFJU1el%dlqV>+q#je5C9w7oT(dH^e`C1OD6j z6UYAnxGP`ewfHhv4EW!b&Jm0M3*jEeQD8T+Aje0=|DG}apM`XX|38hBVM-D$y(uT2 zA^KrGwwh-%=SGe3G1L!nzWxTPm|M|MXJ)3WfDZuSu>xLq(hi$B;M{WJ$ej3Lz<_VM zxVpeApOIAJPsa-WzzwE{cU3C|%b93i+`(z=_ll@xn%FKrTf&M~i*BJkN|FrmZ92p^ zVTg)MlD2pgeYLqM4ajsDZ4@L-M_W=Z$nmifMyG0bd5-4Vv4T-alJ06}3r4>V*}=zC zqQ>}G1*6BIiuo8C>dYMMDlC!53K$(A;L54MsKD?O96$yZ_HlKAQ9dKd@TX%1f66e* zM03+ll`-1Lin$fie2?}hNixJgV(o}Y<@S(01*0wWJ?EzUo(oIMqd!B5Y-SSLvKZx~ zV)R!^K&zwcyzY)*ciBvXCJhqF`zr)eD!5K^L`Qs90D+Dc<-DKtHZkgrkBlr=P|mlW z29!Syh&wY|x(Z9=u>#6lIWk3gAoGAld^&fXfYV=c9F-Z~m-R2DBB?DwuomR^L!l z-;my_ew*CK(Rcm6nHl_P$nXssyndVJt?KvD#BFL!ADW5aca6^l`xGyPiK%u?ZDiM= zgiN$=`4FPAV)S%o{sh#dgK;~bNqpmf7?`w+8UgJR$<*7N7Okc&ia=Pfq6V;-Q?Tv9 zG(ZvX6K6JFSA&d(+1J(M8u9c>)HBb^U%4i`38IsPB<6JsQM12C=@$slGY zc~MUQ1mKGyYZ9!)_(q~18I+D6_}$9CR~*1C_lI|al!7)o5IgpTeB1jne1E@2h|w1J zsv%x9f#69kpI@4N`4GOQPgAcsE19R!Hh{^SPfX*3GRJnH#P_d!NAme76DA z7<}6Q<1Lb%fNz%ids|5l$d27fr#DDqO^z7)Y$AY;NPf!XGkoFw`uHfO!M8pMz%rn- z*ZhyZ^q^?3_!Cf4G%rA!MXkuMylI$xAe&lkCTaNr^X_B#4G(vos{t)5K6hq;5#n>i z5BC#~3Cl&wDrzr5f8o2lxrg?H1P+~(Lgz?v9ulEIJA6hH#meCgMbOLKgM5e9gTDdw zI`aFVjZ*Or`YPnk;s}6I%7f@T%qKx@dd@L*``}J>dWYMAIv*cOzco9Q;{&+b2>%q| zXxZfRUk#Z3K(GRaH)OCk6;xKIdFX|C_8nMoc@s(negijFpkE{C3tofFCgu05S{}+I zl3&43g?OLUALio26;S6NlgcrD8u63W4+;KfzT&r1KJu#KSKx;pW#Ge|U%Er#8Kg7o zZh4l>0+9Izo+ndz5&XFsv1+`&NpVkEZxyhFl?8sj<72%dPZG_MdxeJ0?jIE07&?2C z_;q{ODYtFI=B?X1y88^`_?h%qcy}hfWp1$n9UPgY4rV`~W76I*Yp{jH1tjW)C#7gb zdiwUpKQ|vX$MGdGvAo3@)Bt9yqg0XQX?XBcG67;R8{RKt8|-WyLRqi_=UV}{ImS=! zJ~FysDQ+mP_mSaQz8#2K$V&C#s(Q4NeBG-~Pmue5aD1g5jlv&o7y17PPxo0JF zp`Zw{i08)w7X6m3*hcvD?T1-eX1mNM73sY&&*$=yU&g&!7wq#TYq^%tE6orf+Ld)# zDqtz?wpJ4El4=Ob&7AAR;}$VUa;{nZ=p-nv@yEFVg+YS3&AQw1X% zF3yWG&D>*20QrP9(QdkgH8P8^Oh*$FK+7DuGc4W;QFGxJfL*nnGa%L()5DC=pP@}eaPG`v|2uP$!5vMWATujxbtK0Ua(jM*w0_ zNCskle56I_9>`RK$)}X`0j)ryah@5*FT<~t3y4WL1*`mo@#OAm`zfc;xmy-uJzP_} z1S&`nv=R4Hp3LOH+fRA9BrswumeMk_m$>isF1cs4ksdn;%y{!@T(GPvL;p-UvHH0seOd~ zfzl{6r${^Y2lBliSY}_;4kPUkWZ6;J-#2dM%0=85+20CJC3`Q>dYJ0t_MXh$?*H#d-p|W?wNDnv9*!m`oMAIlh$a(wMSFuX$xnpi zeAQT4B5;+Aseo}ysSw)7&C-6B6TaAAD1-^?(iE9O_SX!V8cYUgZP0EWm`K)FilOAV z_oHNN^FX8725E716>j$3MJNsS`rS#a$D3DaNU;4)xNozI;7O-L;eDH1`JKYcMTSCd z`F)$SV?9f7cxc2;!<@T{x_8IlRXhlohl`>jh>hZ()!{Q>PM=Qbs_#&M$ra~E;2ii@ z|4PZcJDQACxr$K4>=7W$*R>wMI^HAgv5qT0ze)Z_9%YR?iD4V7o$rD6^4riogMxClnsCv z1;F!j$n)^O+{i$ARe9q0FmC!_FhydC${_){Yy?}V-o}K;o-fzOiXYOWW1*?3zv2K? zP;Qs^EA4DhGRFxT&~!&$v9Jcf7Zb&EVewOOA_iz@aelke6s0)Yu;3_t!~L9*{J!uY zhh0^EL;T3PdNlV{%J)^PI|k}Uiq=8EJg#D}?s<-jl3YI&%=k;|`PxqwZxXo4Q#zqMgI zKKxOCn4WCqD8Dj)IsODos*o8>x_~uwWnPA<2$tnx@4?!}jM)$4p97&?3HzkRoWa-X z_}@4@y;nXlmH&_N5u)QQqdliR%z1Cr{_&~X(UrOw!?OORk?@uD&scoN=Id(wqzg2A z|CHVQISrkH0GK1hP%ePSj5$jZx%BNbpW<`ee>oC-%DYrGiT&Pk*HeOGRo0ij{8Vjk z#Qo!qq5e~U5QxV;Rv4Pv4>~mQS13p^{5$=l`V+)&+t_`U%5PzL&O2CkRKCmd=qZ9w zF+kM+QjX7vf2klTza#le9K4(#?t4$vIu?cgd{a@LM<=f#JfdH*Ua&GAn~y8CkMa#w z@6RH<3&MFU(ii@CHW9uza)10L+&9-0@}K2jy>D)+3Y#_jq06Dqc;DRn8BYa=T7!~n zP#A~JC@m>&<}F303YwTozSR2^KyxdjWEE4N&?gR`&K@}UudiC$!Rhyeyy#>%Li{FK zp0*Tk$r*$1wdL;;4SnG?Hny&6nt&Y-!2H?A=TCtxRJ2Kdd!j$F3y7prmHXs=c?uEA znWQj^`{csAMku!x?Zt@yVK^KX*=1$*LQjxYeU52w5l?|0gR z3skY$fLN=zg;#c>A;5J4nyLW{kc$uxb8*&?Cw6B_7#aA**5rwBy%UbdOnzF5i8gZd z=vX&PoqPYr_|p&f|F4Zd?F#a|j`62mM~pvBhAj^=$LI$hg)Xkbk6agk0bfJ>X~qJu z%82o&^C!dwyaK-+tEwsnuRq@>?VGP^`IvoEK3}SS;PM7zGcWC_fc~e%pAJS?j#5f} zF-@MuX-Eb3-y45AeLe>TO>AvL&wiEp#;w7*&PM!cHVhc$Q-20{9pX=)1sL$V(;xJo z9)FtrKfnQW`5PC1x@EHT&6@RL|n4Ixi;!iJqhBY@K z{`3?oywUNe(-o+bxgN+Z95MdXPjLRF@ux%f6~2qdpL*H^jS_FF5`WqSkcKX`(Z!$k zlU8|V?lr`pc2SU~s)r2H>Jq#h;ck*^fWR3^S>ef^unhhD^dLE)9)aPu?D<#JRcCS814NOJ4*#O)yCI%Y9ASMy_AXKPnYw( zAB@JnurP5hk!U>-trr58P1u|9_2n>lqhy|E9IU#3HC!Jj?LGT_q%wOiTpt2NaQ_<} zf7(%DclhJ@A$?f;`SGV4glJ*{CG1&?FIlIe-c+-g%dG1D>t<;`n}|Q%a{-yc#-HZx z4uo2Pmw(Btduj4P6N23kQegc z(LA0nz5#L67y|`LVS~`v{aKA6KfS*3n_YOl=WB`I9P~p+jZ&rfYlsh7m;S#Pzv+tpV@gM@tev2`uNRfuUJdH}C{_{(tHp8{d;TutGfOHO6nIy-0Zw&#r#2 zEFF9Zp_UnS_yyO@Xb3(uF*{@8S-~-r&dTEI>;#Wl{kU=dijOBOFZu}lJ=&>Z_M5-_eXN&Wzus>Q#H2nrAx|U8yBH_7k~G8UjxVg zY&>J!Q6bmA0r8BJ&J^^Q=%2h6_s*B|V^cz&3pSo{8c9IHZ8VP;V;QwBb~q8bb1O; zW0?TBrkdMtCRsUcLdxMzNbG-%iO$L;T_%6t6@?M44)U&{Vei%LEXD%H}~0ix~^A^!SQdZxu!TfRft#3sW3iA zKaT&DiuuueBM67e>ljAx9zGGOODMrDH^5>^*d}3oHp$P)_wf7VYGTQhhHwkd#=Ql4 zN@h=a;|~7L)E$zrBy~sV4LFsX&=8doNAj;_#X!DDEh9;J6;aS^(zX5OS!Cgui_{NN zJ@4oN{2jxM^%=Wov6LPo+PvFc-_J(6!DQX|Z5L(>aO+zwJco4H`fWoYcA4*^{m#@4 z(mu}8biuWQVy&pzwrol22Gr=CUcYj{yp8Z?Gl)3paeZ9ez-P3Y#}M-7S7;|3+yX_i zH;$D!B2Z%h|5vXobF>E%%&bJ%KlF;L6CPp1_=lT&1&E@4!qghq1k*-G9lxO zR(GMaWBmC**Ka;ilf!9`jA^z@C=svAb>iQzctj z;dv+EQH*pf>_z=MrG8s){mRydfz72jRRmAT1{1KEK%Rxalq<|lnyg&GQ#ifmKqi3= zEuO)T(^9?li)F7&qWAt(C%UgGzMY*~Vs&LxSFmGqBdAmSDsoT?|1!+A)Le-~+#j9E zt58cHdNH#Uk?q`2LV~UeC;`HNlB-CA>L}r^*^o&@F+R%*s!_n+9@7ESU8a3&-fG}8 zP(q*i^Ub@79o6k2H~ID}TE~9mxO#N_80tSjfceF|^DR&la6aN{)gB6gX+T0Kk9Mqaq|iHYTNVe04$nsEIiq^7bvDd+Y9Ee z6-VdbckKnu6XOF6@zogGyNUIJXzp36xkG)8^+L2~v@^AyP=N1C;NA6Z|D-H1!uA`a zeH1epP?0dv+)c^vOi#b~`0^3%xc zUCc`R_+xeW&n|og7Fv*cg&HNg~Oexm+U+U=x~nXkO^c* zJcxY&$9O1z^()(6GUsDhovD6J%whA!))2WRsea|#=IFZpLN@hV=m}%i5wSdv`o#F; zekQO8*<{L&jS!35D~3xVe(~X5IJ~3f_JvWnulUVGq!~2Pap|QCP(=l|CPauB16)V)L@XrgAXGE zd=G2GDmqe3A(@sMtj`Gux-=aweoIRhmPEv67C|1d-gyoKIBcArjN1x2`fvufwcl(D z;sb_Kd?E(R0W94UDibA8g`Z%p)%kvOp&ih^J+85 zpnx}MoO?n0Z0Z#VsneZ{Sy1->GgzI;eJ+Yjr zMqYW+H`U(B*{Ame)5BW*^lk%d|1~GVW2;waVqhCD0NW%Utc}B!c5C;iA z^iNRW4AmaNhs1>w)%=4Ie5yZzB=qwzNoqq@`fcRI3L!B*>W?fyI9e~yMI$5_;N|-W z@mxFqdHTFT#?Sd^XV$gLL#O{osh@E@yR%0NVyKM!{LVxifdUaTC(H0Myk@*Fa~1x@ z5ui*B63_bo*gFsSwyN{*A31R#At7QF3Y4mBS^}~&NGL;r7-ABFh{Gr?m1J4A1-2z5 zIfFtgMj(uUn595L%mSrUWtENCvs4BCK!LVqHq44mS$TiYd494j#oLC^&nqYAocq0J zKWAUvbM8ZSlQP^sv~)JOKGuR+*3<O)@@rv7)@bIO@=yD$J{T~vvaUs-hrS_TKXdNH$Je5w=2W$w{tz;{zK2VPwx44 zQ;)a1#OD!VRHm(~rLzT2xziddzUjEL;^+sg_^eYL+$xT&_{5!xk8=~1;R=}sQ-&|< zwUuE`udNL4$MwhB949W7h4LE*OA=05p0r7@4RrR5dr(GhiR5@)*xf0B=eJU@+v0M? zEBD)!(UaWLlvz)pg3yjI<<;*6C9q2jWx-!w)$aKZ?Srt)uUFASv_I(g;rl| z^&_o*l+}M}^`zC0wfgZ^Kf&tDtbVf9Pqq4KR!>>|Osk)5^>eL$p4HE{`h`}%$m(gU zUuyNst$wA|ud@0zR=?Kj*I7Md_3N#Eqt$P=`Yl$!&FXhp{VuC#t$wf7@3;DcR)5&) zk6Qh4t3P4&oYkMS`qNf_#_G>m{duduX!UkG8s;>AG^OHLX6*>f^1xw$+_hU)SpETm3s$ z-^l74TYXcjZ)SBl|8?b7n_GQLt8Z=fZLR)8t8Z`h9jxxQdbQQ3Sbdt+r(1nztM6j< z-K_4h`W{xFW%a$RKHKX1SbeV5=ULrr_4!s`VD$s7ez4UKvHH)f{&TDQtzK{S2CFw( zz1ixAS-r*TZB~z3J!bWU)fZZQvDJ^X`cYQ@rPY&GKi2BUTm1y+#>`#*y`{LAS+{bl zqp^KF)%+dYd;{TbDuQm)2ekb2``xtb?ecgfXJa&@CzT_RW4$kn}a zm6og5h;ZeDD5^W98}{xmqk&9(fXq*P~W8pDkCil4$<7TpeO<(W}1U zl`AW6YAXH7OkeCCZaM*%#k}JPlwae9ka&@d+ z&6TS&GkT)~x*ZSabY1xxRf|<$uSSOV|3y0r>TV?TpDzko%8Lz*_dtYj2Lrzpp(PB3*gG z1V?3^^F)UObxe4rW32-|Uh|8w=CQH$v>(0E1UIe4ep_<`+}_}DUSDAzc1*sn!Xzsu zJzZh`Q1M&be{|INk4BkiMtL>t(VI`L@8-A4%rRz8CBAX!m5TnJ!+GH-b3(=L_`czz z6_f88WxlMC(`)Y>J$}V#^T=ofqG?+5hm|{<9gz*h?=&Bx#(!8*dFm+h--_Ax-gvX6 zFeLq6%KQs1M^am-{|efdOE|pU>(Pp-OsE%V@%I$846uWWmeTZx=X%ehEyQr9O{p5IN5Ya7&`+27AOOw)-rvo>!R z;qoF!<--nhS&wDB(y_Lc$5@*=6_X>X^}il-6YwWCkbQAaWgu@7yCfv*`4+) z9m9@qmAdO1*Oi|OsvKKyGWL-Q$9CsdJYV6syJBx+P8d~r(CB7N!)=V&W)q*;1J7%$eYZL;j~Db$ z9s=l}EY&;j1-tI;DC=v}ldV|nXf3Q0>!r&b;t;R6Ti>Fs#u#OBh^rkn6LrZ5qO%rii+6FK!408tOx##{Ntb zZg9EACSrkx*w`ZyOUBlNk8%a#hYJ-f!VTlhRt;mfijNh&!MN}@wpcUpW!=!3fsgpk zuC3s6(j-mrBu(%nH77NOTSBf#G!c%pxniLs+QYF>+!b)i?Y2N`$Q6h+wYP@a67U}n zCEBBt5}|kkz7{9iVeO>1i)>YC&#nC)$$#nDhO5o&OWD(Vn{g)4(h>;<5|P+03wGOiXHsa}c=*VWFX3w2&b3Y3Hm=a(U?|iOceMr1?)!UO}}VIdV{s|Nf> z1&X&fHim;?)c4McAD3F^g40fq5@TO(#lF+Aq^vK;V&Ca_Uc_ZtVq|8vijOmkAka|4 zz*etpikM5WZwN&r@o=IuFJ@6V(cBOVEJDO8NlMSu%%8vCd}$KnOwHm@u-!KMNv;J} zVz#N6{bC}#+F8(Z;au`>x5_6_8w}^@1>tUF#T4SDr z>DXewZ#U*~nC1>+UWA#=8k2|Vd;|i)*;$@P zjd8*>j~U~FnR>w(H_UVg|}>I z7-nuKhiQhHneH%)g=aX-GMK5I9p*fk{#_jAaxw8Gk{e+r_jQg#Bf>ioCVm;qe;1~_+_8yqxHmBs9+*y4O3!8xf(zvX<=nzJl3Sp@!OWndCbu>Y zmm6i}hMOtiDX`zk7&F~CqPrWD+Z|!d1n*%S={>-EBJKmg2N_5H5QP0x`12d%3K~Z$ zh`QZi9Ii%`c_Y%$gz%bRVg{568;9p`r15b0!xG06!~I3DUxYL-MtDn%qvJ^U{{{U2 z3h7KDO~=5`X-Mm7@B=eZ$1OF5E|AlnC z0)~pd3%mE==RNrS0B%1(*dHS7k6?a*IKM<1e*TjM;di54>LO+qMG1v zBqyMJ*LFC(6H&esVQz@~8#x?N7wVY{?zTX^*b?rx1jBUw2<|629PUX7Z%2ezh488z z4u3W3XSKs&rosI*_(R<^ohus1w1>a^F4{NsVAbQTWl0AzI{3dV`nK-=u3|W8tiR=c zmZpKv@E136v#JmOxnoWeJoeP?kVh0%Zx5 zB~X??SpsDVlqFD>Kv@E136v#JmOxnoWeJoeP?kVh0%Zx5B~X??SpsDVlqFD>Kv@E1 z36v#JmOxnoWeJoeP?kVh0%Zx5B~X??SpsDVlqFD>Kv@E136v#JmOxnoWeI%yB;bwc ze)^0@_uEHlrq1U6|CwsKXr^eN#MuV2Ki`G(GQ^C&sqE>XN&o2+mA&Vy*>Rbg24^8y z|JSRT$5{}<{@?R{8%>-CBKPGS5;5hR5HZs@zd_6-{b%Suw~3}Fi!&s|K8mv?#Pr|{ z1u^|=sQE>!nq%73bkf|IX1OUak0xh37pc@g4n2l8~9d(fOqGxwFc z^Wgjrac^*bhnRk{w_e$cvoqv={`-uV_YY(^ewuk4mMrcLBPVG7lIAj+XVSco=9M&E zpQ`^1`8JyO(|m%aJD};1^Ijyr=oxCt`6R;Lh01a+jBp3e?hx}i`cLk!9Hr@@nfK~_ zId4VWCvoB5;BVkX~LckY?W zX11E%KkI!tf5p11QPb&B({r=hr|0wj^U57K_e0#vc{5^WUsTilUCrE+YG$@(xHyZ$ zx{v97IVVQg;H(aNe=E8>g8p$%jNJDhqwM+x{o(u_x$it)O>dHnvry!I@c=}7T>5znrAe;ngkpC+94`F9B2ZAP=|(^E5xBIT~m4NdDKR*=Od;mSqW)B~X?? zSpsDVlqFD>Kv@E136v#JmOxnoWeJoeP?kVh0%Zx5B~X??SpsDVlqFD>Kv@E136v#J zmOxnoWeJoeP?kVh0%Zx5B~X??SpsDVlqFD>Kv@E136v#JmOxnoWeJoeP?kVh0%Zx5 zB~X??SpsDVlqFD>Kv@F+-%4Pe%{Pi}8+Aw5ted(27RG;;W0rp-5ymEa%yU9LZ)s!H-)pRb4!EiI9tjl|wwP+OV+4a(jxj=IaDD?bF+}0{LQaYtR5;?pE zLR~f0(+8XC!N>SDXHF6{xit{2MG1rjrnH3OaiN-;I-eEClxQFvtDPebAOZR7Nfdj1 zJ)#(T`o3ntK^8rUVW+Q0429TM&6GB&omvBlU~?#5Gk;Eza(?JbFLJd|LkIK4g;Pxu1y!>d;5|LP{AG2(CGd|b_6;G19N4!6Yqag`uEyx>eIci$lToL^#ssi-n?*SVC-Puser?x*8i)X~_&EY4zcT)seKF8jz28 zxcBNQ{ZeUurY{O7nj2z)MSWGzReWg;8&tiT(H2_dvx8cVHa8T99rp%aB3ii2!JN)& z5Ntu(HO#u|LQ|qOilS$0#;rpxYTBx!Tj}7|y(-nzh>saQAI1ZYiNQ!~6eD{rDqh`G zAFMe%NTTP~SD{kkUibPnRqB__0ArCz!WT`%(CZ{!I?0$b_~dcy9YVT#sH>8;lB5ke zVUnWi`anD!#I!6HZfmLy%B?DNtT9Y@0^vj)v+fe<;D-G5nVXrtNO>n;ZQaZsggcxZ z=)gZ&2LA2^yQ=8Kp0fbB)?DZ zi)&R?RpLxEVZ*@rnvU!4zTsB>%x zs8agBv|=GBo0yhRV*)+4tVjDzQE>@jw9xE?o0^9fMD-M(FWR2KnmQo!t56KNJEA>= zxn<8?YE2EsSYOp-?R+B;Kq$~!yTG@=jp9IGcfI}aX1)hiUp$0;UFFs z6h<})43)sHdV;6}Qnh5Ds7H9{!WLBd5axoy0IWqI)xzeQlVD$Dz@hUf#0HOGjcp}s)@m)ixU6=wG6HGnAk?$OM}DI0M;ln1Xdw$A@qKMV8~~e zH?{jX|k}jt){aBg_Z69ik=b4P4u2EH8r!M`ypfTWtGE75i$^r*u@f-ZuS{e zQIg#4ZDDjaGEueD<(^W4q*vo1kxjaU;A_B2E!J)qTo{FF>-I#}@u$fhURv!Mw~0ba70@C>sySOs~37 zDz+rM#@~Lb&oE?wMJI|lvP5%Uh~CPc)wAEgdtNSoZLOp~IrovAZ(S4VJFVYX6X`n{ z-&_;vJsn?v6X`wfAvO^i2TGr~m(F~?o@Ww>)m9x$E(0y{Km!xWK04CA`kkpg4O^IF z?}aciZuQb@*Ug4?U9E4G;kwX2|If&#uMB<*bB7scOJory==G8IwgxSFk#%8Q?V6AD zQm~wlNY+q(gBlI%_O_FQ9*2w7SKd8#`AAM-J%Oiv@&ge5B#nJfk{~lo*Wj+#Nzy#b z1#0W|)d2gLCaqR^j6{Dv+lMy(?JDZYcobWhk~hm^AWnD>56KV5P57m6vJW%jUdp~k zegPbOL#fyLP?$HBPTSB^&htq>iS{IuX7{&DX7(A^@Vbd_S0(6ctk&i`UK%})LFkQir}xGAKt`RfCHJd;#2N8y$%EFy zXw&mR)4hOowlTy3W&{S05zqeW95`$>UOhiZ4zkBaN_%~xGqb0a6@EvNR@}$RYA&oX z!5r4w<9|nhy$yLHh5uC%418?trHXW4qwPD$HQF3IMhtllv>IzpkAo=E(`_L)!)9&( z3poh3--Vp~l)t|QILw9I>J{2ZjJE7Q zgqDP>Pq6(C|9y+-f3)lFYjLSv%5XZ?Z~7IbLC$4*8;a#&*Ko`8o6h>chu~Q~&C+la z!v`Ph-~rFz9+S%4rKWiA%3vOgqtSoU;_7MWt()P~UxTF+>U;UB;)1(gADi0u=H}^O zJG|xV>XFV!jIsOrFs=U|>OcBj0C%e)(|a39`)*zsNu_5Q=7ZC3zDo2vI`*CIVfCgX z`^M-9jS=$8(6=a81MmK)^wj<1X1DHt_8_}|`Q>yN-T%mzZ%;kD{6bP)6%B`ip+(rW z(e0(8geiIpR8CZDjHxgsPh>L0@ zy7|3*kk^pA`4P=hzdiWyYC>PnJo|1}Bh&AXsI2y`js zVF+P6CVC4#Dc*kn-3p6z~Uc9$3qx4Pmfdw+qDvR%7eHR8R77BSkH`Y(AmxLd*pTY^Iisi^pd7R2yNZ&t5D>`Mr+8)o74 zUTgY_x3la@UZrn|>pQ~5yKzv?J#9z`%I*+sAi&$*MSTYX8R$;2o`NmxbC`i2J60_h z#3#EIn5;2(WXPQfn&;--f%aINWNyl%qq4 z-TEbaQCcHywRYcy*d>}{kwrYBLC^Y-U0EicDhUQJ*mVEJZ@}SXi^G|QV?Y8ep&9L% z*EZtaeeAWBZTI%b5X71*c0D~DiQ8mP!!~gE)TBK}M{=}AOQZ?gBJB|-dsfSa8cBOc zmxJQ7ME0yII9bt$lg^Fas}?fOa9DNQrMvt7JiG5w5|J5IIB5l|ovKxX>M5ksfH0cN zjxkBJE!$g0Fw9mfs)t7+MBQUj5N&Q`gR~icZbZV=J%WWwG6F$jgl&@MQ@^C9)&5Dr zuNZ-VQBkqH!|qIkmmk6KT3Zn;_E#a;Pe&kFJRd$!jHaFQDryF;rm#LC@ zb)s3fez_vzfCM_@hI%X>0vH?RRm(8e2RQw~4kB6@>7M;h4PvKJtmZI@V%gY2 z#=1^)LP6-Tqjq(P8QA668g9cbQG5TEvGz!$`XfWJh=h@~?r`=~pl}WlHV-ZihN5yF zg*bRvJy-_`?8i*V&0Lo+yCcvSl%q_<=D98#+4|IZzoYAZqZ}<%6vv7#ODh2hD6jF_ zvK0PQx$7*a#z445ERy4pqhL!UZl@Q^gbK+_2{cBr)j!cFPS3L(4+h#SrUh{zQ?Oai zd5T|Ez*d|Dg>k2V(ItYn5K(x7S&KMyLEvEv?QO)IU<5lJ#qK$Qt|W8_VxLk_BUwT0 z%x0c9u)7+*?VrPE&hw5kxt|$R;kF^!b5y+8&>G*Xb}lNbT`!n1)oQ87q;#|9HfB37 zm$p)}^2DZ9w4bgcgnHVwY8zP5i9+Ul2h!AF%&01});#liexpZcj&UHFB?n|( z>nJ)4>uJa6(fOpf>wc(~x!%$Ja4hr3iqWG}S64`;OODC<%+bS{SXaY&@>m09bef!&wqr|^yw95^yu7;J$R6lmToHY z&;bt}55Z|=m3fJRGG~wJJVMBvvgRCf)dbzcZO+^X(qADmDLy>uv@u0TCfzg!sd!aV zk^hU-2)l=O3P$u;rBt?_j(SJ`ED@^%E_{gF=C$RS$Lh!4OdGI zS&*gE8*|@;K|T8Kek9OWh&FqS6h`h#8FdQ3^bPPxpySsoe(Y$zTo2*hg$7YkavIPR z>lL5)^9dX#AB4losw(sJdOYOkruFr~mpsO>NBP{o{xtK@`kfE2a33;nHE*qtI)rGD z?E9^LjdUhONBi8fez)^`UW5Dm-O}x39=>Mvs*t%?3UJ8B`JBF?O~as$?>PZUNMB+n zG?$|KuTf>*Tff?z`CU%wORGF)^o0riV2`0mZZgGu{=I4D)Y@*pdYJd;;1RgFWF9h~ zLFPwcN&Yn)|8wehu@z;wXa0P+@vsm2`D|k}oVTUGQ|F7!J6@9OS2_01k+bMyB{?4*qc zelQX*iRf`^kNp4*>U|Ojw??g5DIt6vwPx8CQfuDdLLNwb^R?#fEk>-?e7@Dl)tX}<^7L`G z)-2UpbJ`ZeuQeZUJ%C#Cg+zU}M4f!imbpDHmg}3xHZ;?}z9{-nAq0 zGLh@5eXGoSI?p`CBRQ-*2J$Z7(2m16^M@l**Y*5~fBy&tbP6&xy2?Dh?T~i+bmsOO zI{@Ou9r}Hlte5KD?X^?0e22aoB#$~c3ymq2l(kIuZMzD*!pf@KncDpd(>{ zuiEUf=+(w99dqAXIQnnutDZn`QuW9+^xR}r;ajE1s?25X{$E_}p0&Q-L+!hv6~Bji z{?w6Zx9O?qvaYw!My{~S;=hdUXRPaGE8So=ieEXkx2oH@k^1^+NY@KU%U~OYxpwNn zD}66{>DIAf6U^YYQ*lT0r#nfdKYlu@`)ji9?08D#x@x5_9_u>ydiK`_xj%Y zJiCdhc*pQpJB>sW(A~FB%|HP?gG^zpyJgyt#=6ejeq%dZKlpLKZKnS!VgCE$zQ#H& z8ng1pDEi0j5s)@uE93o-nxd)jh!FtI`9VG z|IVhN?w9=g?$W?t+Z{`ck8J~ADo?amY2e*97FV;}D^@G98%%M!qo&eX&Qs zm3DZt=xgfMcQF@F-9DS$Z&mL*IQuvtS=-kz#LY7&)S?@{$*#7~x3j#A)DiyhW{%xv zP(P{-XFttx`ye4JB_a6_Y;hH>`gF$zcFLTz50`D7cXIon{+bu}u|Gn3v7ZK8Dc+ug zR(`GIC;zT}oA{qBaz~( zjv0f*mhSF&c)!v;8z165y4>6HgzFG-xl#^Tdc8@9I~sMn z{Vtc=g+Dj$yE5aV9+$`M^gBIHXJ)k5<#xKgPOr-uO;^H&-|KdIa-+O{cgo>)dEwHH zyH5PK228IzQ{i_CB4{MR1uK8lk4v$H=90VcDK31vhyl9&tq79S$S{LAW&?Za-{2SqB1?*x?!fkv@0Scor#H094k3oKN4tNxdO14~x$mMk+ z*scuu;o9ZSz!d_tSw(oROa(-c9F>zG3sJkg9=H)Fh!B1{qep^l91^p{gJeO*9)yT| zM$-;=-jN)YTmwQ|!&AsIrK3Voxwz5}XNLn(c;&7KI_|h3I+u+N!AZWIR@&Z-1F4k) zf}JblNIJam4cn;5C+ToIQ5O)birPjB_j-r2McSkc22uzmWzb6z_>pNX1t|oVUfW9% z4ANF81XOaT--T2{hA0b&5($Rsh9edQu8~o>A(aX4q~1!3aqaTrp5(t{Ef+i{9iF_y znW{)tI9-sHM^Xo^vvd$I0<-_5Ss{>=BQ1V%j+9g@SfV(Sj?4y5kBvd@xe<;nWwZ^c z%}6UU03Fo=7m`>nQiGOgV6mGU0@s(UZ_OmdR^G&w{5&OCMBLH3cI)f!%s z>>@u*&Xc#^PyM?ltNUZgUh+h*+9%29kTc|s_gDMWkJW#OoFQLB&XGsYSNHy1)cqWC zj(ie1wX51+Np|k0oF{w8yVPlT8S*l)l#gq7b)Tlam;5d{NuIhu{dbU;kc~(E-v_qg zkzb^}m;8eR)ILX^PR`6!|NDTYe&xumWV5&0FDFOI6$i3@kwakXpPV5(XRH73AEfR* z@C;@>W${ypS#$bRw*rJ+{8w^{{JmziPm{ysEcs?~p6m>(dnf9pgzqOO$rqC|FBu+r{;!n%ZKiPwJBmNyHsJ)-O8#zfnj@&`Mj+`fNe4_eyp&dzhCyvr&y)90DSOb4B>Z>De)3soFg$YonaVlxnPh`@CjQ5s zrS@*}baILuBj?Cxlk?;o$xgIG3D2CZ;W^RHgk5A0`CPJ}Jn^~ix7Pn<1xCLi;r%SF_8IgO!V@o{fATG4gMLHon=Vy*H+i$m zl)dCT$Z7J=FIW34`3tf^KO^Dgu3&iNxmPOt$@h|z?D6oc99>uLEY!jk4kz@xluV!o_CY78~v!*uXVGs zmwX*LNpAkL+INsIBj?FKyG8At=vO7Yv9~IF$TyLbVD;xCV z65g5*D0|2qWH0&V2N@oD`-haXA#OGxLn#p=G9>?c1!j*{1YN8NkU>i#0KpIr5>+Na5P zk+bA2{-gGJ@?~W2B^ut;yxK>}myomM3Gb=B!Mws@j5&?$B5(Y@+PldIll|m#$Vu}5 zk<;Y)AE^Hv`3bTU^Aw5i&JWezLq78(gG%}**O6UUtN$~|Uh>{!)P0itB{@s>tfBVi8ufoJ*+q7&srDZ7Y_ga9 zCvu9s>sWQ4C0|O;liwtpYc;;eIEH_{@}J4(X62P+*PoS_uBGlf$eWB;Hn*t#O=LIu zM-$ZEPrj3!A|HgpmGaGypCFrCHN0IXs=bSRBiT4^7`udpG$;vX{Kx zhV)PVIoaHy{%;|7kjHGK?#-QQKM!o5cag88y@$Nkch!B0d>}bPK82hmKL?iZa^&qd zR?d@;2TOUn@6z}mCnw39Y@+sQattitWylZGK1ZIosk)Eet>JmW;yz8jpukzRf0^!G z_bBi3J@xM)A4B$&FD9qRcapQ@^*2-h9b`Y*+^gXqPj-@TB>TxvlT+le-`DUmB-kew-X7Z}0vGh9`i${hx~JLo_sdhJf{BtO7@aJB4@}u|475@AVl=?qnI{iPbJZgq= ziX0xIY&N?Y@XHd*Yl{oi+mZ`OR$SLxiJ=A@cd@4Cl z{wvu$r}1yMC*vn4$ZqnDWIy@sSqz`NeT{OC{1`d;4-Mb9m)fVvACo)CC+@BG=AY_5 zPj-_Nv(-LD9$%}RAulI)kSFY;_O5?vcxH~WmwXL5O&&W}?Q`S{$a(Tk`>MUOL&JNW z>?XI(Q~N0SU2>ZI(tc{6C!gX~HZN&-llND4lV2dG$Oq3?`!x9}atHZWbqt@p-2#U9 zvW9;c*-!pGSlVNjd^6pZ zhJ19By6-61lk?f0jIl z+(FKe^W-fZUjhJOTD^5Z67NA{B6 zD!9jUF_HHUQT6X8FCu%%caxLkiX+s0hP)@agM2DE`k{t@4LMETI;Q?R$W3JDN9z7@ zvWGk~uI{7co5?BiCJCm8dXT_L4s%J3mqThIS1vOTLPnC%;KHU#a^Y z7OHy}`DAjM`~cazQr+*nNZltPeUX2PoT*TLjGQG;U##xaqtyO)OMst_Y37L`Ilr%VgJB^}p3pb?+rNl9S|@$yxFiC#d^8xt^REr{O(L z_O7M8;6!!rny7pMIZA$loFb23rtZ_^TCnsdIr3?=cRMw_XUSf&`y}!}PvhJ4t$%31QPUn}RyW6o1{ZlU2VC%eh+->AKZ`~f*l&YrLK8S*I?DCfut+JQ=f8-?De-XnYZ*;M82l*Ycb1Mz+-n81g$xmIPoZedPZ@W}E|3l^dE>q6_ zNO}C_${pm#$*%3y{)8*k-b3E&>dG?=_Q{?x^Ir4-X)ZSDxJhGR3#Eoj7ByWF{a+>@eIZJ-zX0`7iANgnHJbBGq zl)aNRzFWyr^6XpHK1F_yoFz}VUG1Gy)PD!rMgG$r44-`Loyr;Vl)IGWxt6r=SIK57 z({ne&C!d;Sc;wyh(e|DqUrElAC)}&<%`^>fDcMQ>oa`Y-?^E|t@=o_Fr^v66)8uO& zQ2Q)-$%D!{a@9l1dGecN=T4fQ%)@H$CjayiWe<6SN0t5LXUIA7FCU}*bPdn*xN?&G z9yvok;V)`$W~loupHOy@|3QwDul_5;BZqS;?=*R{zo~t6XASR4a*Dk5lMMgIYJUz` z`hO33yQk=%{9AIKoF_YXQU5caR{w7D-@t35;&{oP|5JNE`Dw7&caTqdM%nDD;cfP; zvYUJx*+Y&zr}k0u_`fTs$Zg~d`E7ERe9ZIe-nE;?=X!zhk?$mX$y>gt_DS-W?SY!r`r3;JN`>KMSg~yA>Z4f_O6*4-Y;HKj@Br@O!n-heB{dvpS-~< z%4za77UMii~h;qeOuW}{w+CGaQ}|lXUV(2tL&Vs z;ax%YkbnFiwfB=>AScPE<<&k--uOM`4EZ>+b6*XA;`?gvCNCj-$zPI_tN~EIC8Yk$?Uv!`n~8dz&03pY~t1Pm#xerko~U zN6wND{#@;Iyxmu7?>KrP^o7$B;Y7_mQ0oH2eu;)V+(mFWF1}Ejda42RTDtZw>XIBkxS^AU{NQ9-#5f zTT|V8$ghyS>=Mnj*|aLPLVfVSHsJa>&bcYHDuS%HT(z3 zUh??$)PI`nCTGaUlZ{XP-%56opCL!dYpt*0<;i=H<+-}_?>@4Z{7Z6@{CBc5sP4Df zK*RHre@#x3*Z7XwcaZ0k^W+Q2?gkC-HFA_ZYeV&)B%ei2lV2rg$=hwD?sH@h*%{XG ze?rcZ7YdKYKAouAFC)()UqHT!d>#1~@;&5-$xoA?BmbK``UnmGGxGZ63E$QD=aOCI zgUOT0E#$q)N0EO@mgl%qei8D83@;DAvsU}5!oa(zq^w+BG-|(B{z|$kbgm*MLwN;F!?faGx^Wt#pK7x z%gFyCpGW?Hd^vfI?`eK+ByU1~nCvD$N3J2SARj{hlpG;%->&&To;-{E8}b73b!7S7 zLF&_e!j<@4ZK3jO;LXM*&9bEOf5m=0-qXN3S=_I=8F+#*N%H#S^T-u&GZ7BGJLvBZ zn-{oR`E1Mh{m`R)6FEwLnw)||i4Q-6AiN}Av{L>aZVJ1|KPIO3@|Rk}9<*h5#-v4{$L&>f-9nTYbbW7NOWphrn-+dDYuh7C}fDzoJsbtq5Ma3zE*jkvCJRe4|$2~a;yC%fg=z-*U2dq1wMd zb}m=m#;NW*qRPjSllv<_OOBE!t)uQe#MyVlTxVWXRo$m9RX&UC`kV3#Wbbpzo9?FW{nJ#wXOdIDQu{S`S9=fhQ$tQ6UTH7O z3ib$B_;cZLNpn?F!<*;6(9RhGNz@6O7d>03}@ zUteP1Ucx7o@P#FOwQ@xv|JRq;KU`w}dU@Wc|{sDxc5yln}) zOL%$-drEk(5}sGW3rhHBCEQTLZ6&<0gl`#b%&t(oLG2FZftm@m2h^TWv!H6A_JZ0Q zYBp3Y)ILyipyopD3pEdFKPWHM{!sIw>Yx@t9RPJ8)Im@OL;VEm5U5+BZiBiV>JF%% zLj4TtP$*dk_@M5D@P<}d!X)x3P9CE1)&LI9y zp&o&H6bfGqFponW1|^^3cmnFLP&uf>p<19?q1vD#P*JEOp#BCGgNj2XpxU7pK`n+_ z0(B(RFQATsIvVPiP``poLLCEjEYxvO$3rcJIsxiLsAW(mL7fbB3e>4k%b`w#Ivpwn zbq3U#P-j7%4RsFGxlq4`IuGhMQ0GHk0CgeMZ=o)Nx)>@AbqUm^P?ten4s`|8(@_5h zbtRO1W#U<=-$7jkbv4vAP``(|7U~aB*FpUeDg*T=sOzDggL)pS1L`HHm!V#PdKKz5 zsMn$X4YdO54X8Jv-hz4u>OH9Up+1265b7hSkD)$+`V{KFP@h444)q1pmr!3pt%S-# z-3Rp~)IzAIp#Bc^0@RC8|A4|@@?S9DhI$w3KTvrnQ)$dCFn5L84Qh8N57bPkJ)ri4 zngvw@wHMUhP_vHw$%p$>vN80sfbhd|v5 zbsN;}P4QBX%i{SxX|P)Vp`ppJz)4(fQQrBEk8od~rI>LjR>p-zE16>2%u zX;7y_rJ&A$Iuq(FsI#HYfjSrJ*HGs{{RZlMs0*Mjg!(PiMNk(*rJ*i?x)ka%sLP?Q zfO;D0|DdjfdIsuQsNX?d1$8ylHBi5Yx)$mWP}f2I5h?@qC#dV8o`ZTGssrjJsF$H$ zfqE6{HK^C2{tdMP>J6wjq27Xe2kJej_n|(3`Vi_PsE?sOf%+8czfhk+eGc^n)R$0S zL9K*x8K3WvDt9y%ZcF&&o9AA9$ThxK?Oc4q&Yo9p?W@&(QJ|$Il<4MSo_=$jAH=OH zJu@9&#H}iP5?4Nyw(9r3tpk2LZVJC!Eiulks%{Ci);9!v@kAgIs&Y4l68K1MTT`OB zW?>HwW{ACY+G*VyYK_E}`0P>LRqlom(jEyStQzmaFheMEGF5_T2qXff@pN}Jy)%@a z!kAtNqL2ujAs=cB_~6+o_!31`6+UQdzen5_X$aL$wck0Ej~LYyClsI8YSp9; zI-stE4l0Csb?#L^vgj@?R~}^FQ;Me#F2#e7?`zGNBu7unM`aY4(h`ctYwc&w>U=0Y z+$pK8IA_0yg4^rs5W~<@_q7TQpD*Z11Ur2lA}GXFnjvjMJGBN9!RAmLeHT8gAl-=G zpAnAx8pG(j8rU$WhZf@-@oi0^sw(>tR_)l}jqS7a+Yb^{H$T$M>jN!;wqU4NKd3V{ z1zp~z1R5HA_~85id}`;?<#mQlWhCYc#zN@AY)9Q|%*D}GYYw~o4l1wJRq^)vL@W?Y z_!?u8)*+;Qsx6a3$2Z-6@;M$#u+!6zyY~Ef;K}+S(S`HzHNN=^eDkZieSrkuhN$vQ z>*Hf6RlXTry)Hf&BHs=v7R*2r*7K){zvhJDD>2bXJe=sYfKjzdD#-Lj;Y4#oEU;)0 zezZ=>kl(APVu8(Q3oY{5p{hok6$-(QW&6Ph<&oO%8gIZMtt5O~2)>olv z>emlvN;4g?^bg{*H=U#UWX?hR$;2#Q-87%3+qU>!B*x`F8JB zp^vV!sOOZ=u-8m)4J`J>!$*c#%}Xb-p~Z<>`$aT-->h?5i?Jdes9s|1e@p)@&2J=_*X z5zGnN+B3tqZzvJiL&Se@JXVbb9p*p5XtZi4Ut=V;C=hG#g%hDzAb|zR0+jDm+vA|+ zp*^+*>RUp!jkT@OmRihf@mXH{@17YfUu+S_u)JD`@|D`!Td^-(rQD}uaTyB4g3Uh6 zEBfkKFsGbjeWT*&|L%!EFg6h_p~eLIU|Ayeo09JS(bH-s!cEOX37~q4&lhb^_@q8z zZWM|kS4XsmFdyu>o9y|sSPOg$+z>x{5bvDMrJhy<`7mBfXmL0gX^I7+&Ea66rE^4( z?_xpXc4ZPoiAyz-j=vtEp<7x|jNwa>{uV29xH(jpvOP7RL zEfsq8YNTb=4oU2}bgI@)HoUlIK2qAPTp-oPc$FJd^-z3CJP~RYIiv1I1Bqs-msZ|b z(Z>Qyq_RV1LE8z-ayll{d0(ilp{6kNR!I&yOjL9Yvp&=mZtE}9={_$Kx#xikq&GvH zfoK$I(Ga>CCLRVzHo}dAYM2Xarr3Vbeh_U)Jwy#Y!YAM1lXXllVkyc1Y9BKYkF>{7 zt8Le^a2N@&UqI{@J%rOTw6@YM6YO^eu$GWvtO~gbpw7((sQjO~56X<;MsT04|U)DW# z@u+%*fLjTDAvefjbZD*V?*$HNak{LaVRl zLmDH|gU|M%ZTBz-SZx`bjAu`U*>uFBjcN4*9+u^O($r<{`c|PeK(UN3R?EY3stlw|U_nr4|Tff)W*sRTVh}CuEpO_DF zT>hFypOMek|L({$^0Mf0)IlGlV~un+!yRetK(mhyG`%gkC7%A~o?lDeSN9k*;+c{s zq=oUN=b@#0;p!MO#35za!^Mbae)SC%wgM03M+#2odi{;F|K9}%*-Im(y-oyX_OyD! zvmt4{eXO45!WvV_VT`o@JL2nYkP{jFZwg@GqhT-Aqx(8+-$Aa!=Gbvzh%=tmSZjJ5 zHj$ogllB=lYXexUL9G2Q)^@^TZGR1LSc|pQE3%OoZRh&x<_>jzvifpAq-9@c4XW*J z+1GcA>}T1Bj(z@!Ec;fUSo^t(ZWoV)Zk_{w9f;g#h# zo$-MWy0dzkli?S?g8o8i;nai#O=dx@&Tg1cTH zhT50a=IQV{oF(e&kuJdmB6ZZde#QrAHaom@A9Yg)aB!5w=RG7AiI3|{d34&{>YYXPrbSP-cel@ z4TplEMd7%-<=uw&I`B)CFCh!4sfqR|UcZ$0lI*MU^YHs!?LLyDf&3Vzl9L!vt$O@1 z4BbU--G0OG|3_RwdY0LDiyDc(enchJZ#Uj|e!eYT zUSBH}ZIs=s<)B`@uSPEtUxZyD5qaG>91FI$;Klj+_Qu9gtj4~NiI+{|(UvfFq}iLb zcm+*%Ociy4c#cI3#;wl}EzDygO+gjyDA5*+frl!V=Hx6cWZ&L#eh)=wS z5dsodHMDnKrL&ZT*9;}$h;|UO{wj2*g>B1)X!jaQv}jeD=%SZ&yGa}A;v=_#mD*6k zDJry~1Tg$Eo7Ic(`pQ1+hFN62)s((s?JTjPH`rU^_PvFw;*BOKTiaA8>klUp4Edoz zYi&?AU*L^>yjs4d=SZ|~Kua<8@7 z7g`(&wqxgMb0~mb#OStqgZ*mZHh4OqZBZC+BFzuQ+gn36FWd1XpOYh+6@I_muQYf7V#_qUnmxflx*^oAD6oS5H{!l zrpb8(Euk6hm`Jm zn9?}}RTT%_EkRf-RIM6%Pl1<)jd4*nJxK;eYzI|MYe9m;NSAJ$=qA_^32OxM$W3fr z)nw=i!@$%et)qTPO{@K5#T$BvsESzh6mJq7((qphsI?X0aSy(}`8c$CR$5t0`*7)F zOPfN?WNZ$rDXL2Y@;0@xr9ECa;Dm`DkjH89P+KClMDmWQU-!ZojQ5hPuCjAVwpq#E zEZqt!y#r2nk-b^EE5U916m)|PA??7p(F~Ip^A>03V_MB3)J3USf zVlPar<}eC+1_IDCUQhsfI!#@o>t-QCxQAVLt>HH8R_X++h}OcZF&1 z95_$*N(UD&4%CMiR$+IiFW7=cZa2}Qb8L)QsV_LNr&tjIqjj>P<;n;!@Kem3!MbqNNzGx^GkF+7#i6y>;Zn=x&e}ac&i{RlHO~Wn4cbeL< z>s4Pp zVFl4S1(5pM>w;nEEvW_($qZ?3y(|~)$sBWvSBQ2hjtELtmP3ycK6zY#Y%HCJ8LUjP znK$g)#=b_GY9M7bsH@XtQV>S9Kppk9gyV_YI&99zP*Ajs`RkBOp_y}o8{>JLVBIS8g?Zz zn~Y%9?`y?)V9`U>(>L+)13R8X@Zk$HDr?|xJ{1kcXN;_#L_`ZUO3S6_XZPZVBO>@I z4WY(BdkYQ^4B>P{oY*7XLt&uAPg#W-p;Yprj_yT)gpL^S6QcT_rp@*dk$nb)b0?-1 zEfM*QSP18eAu!go1z~ZWf`OFf`GrJ~+-CzDFb~=z+=tZ?0ZfGdz z{Yuu&Sgp6X9`xBRuyhc693@ofzh&v*O9YzGd*f&i zZV!|-bz2kGsV!I<7nbkcO3E&~hn$S++5sk`aBj=oop^*(X6UPLNuWf2J`7;3r2)?kyLGvT`h&!x6pGJ1=}J+b;_NMHSkw(XX+0Ha zagpOdxv(rxai|;~iT9QwD~4i^a9z~h;{2d&;FSy@`Ji)Cl4X3*ZdT8~l z%71_<#ulFNg!>)qJ3C3RI+R#v_rRu=Fdv(T0DTZL`Frs!2Fxt%?djhxjGX6VN? zpw3lbS(GXA8@SgkxF;IY`tE4?OZPT4-sC?5M?AWGy|;9$qeyw@u$Ef-J*iG{aE4ib zSR?&)==Fqbw9x%x{x)C0mCN46^nM8k9(7rEco>XqdoConspgU3VS~|fMfor!>vRW6 zD5+LYZ3GuJ1w+?nYL#bNxuF3hI_+@@SnrC_ZINEe>}`wg2uS8>ZYEMRfZ`eIR+!=Dj?L2r(x(u?%U3H!yB@8DKJumZ$V!nz0y&&FfpViCm&L`h20yIy`1-t*R^u zPeM%}h?Brr**;H*i9DjEIV6(z7d80^EEsph7MTgf_#MTG>kiFNEh~OR>&q+mvn|@? zdWZ9mZ%@xX619|DdTqq>^4Hd!@liip#YgkU#un{D1%<9}G6{L$wX1NM2Df2UE-P0BK0|t^|>7F|tvupMJlT}LS7?&B^!&)mMqpAo2^?z zafCk1HAfz-lD#i3v=D@6;K)^ar;EFQe0<}&AcC)|AHb2lWTPWF0_0Z5KQ{VvEb-?G z#Uf~ZpR|RlG8mIPV?=3B$bCZkK72RT_pN^{jx~8Y4GzQeI+V*D??8=|P|g@Sw5crN zN7qhzWNonu3h3Tcx~LQ{zD~SXzN`!##g>z1=in+KhPW>rD0%>$5udb$spuX$UE#N=uJ*o~0t*f;kX;`eBT?7`f)6-GftsOl;skYsm6MI0z}x#_IO-QFJZGH+Oj&OXF6r**>dt}K#Ncz8`j!Z_ zi<}s{4tJz^jSEM6UX;RpMNw7zp{d8~S#pZ2mjae{=s;v9ejErUfl+n)?yo1s?>;xX zA-WMJC^E8ch_LUMO^4FBv6%)}$fMGicXThmIiH;%GC`;_$=N;9<{BU&>v;P8905Ae_Fm3jwcUGm3S zxD7yEhai)Ku*7*k$ySVn#;C*sG9xJBBxGb?f)(K~ll~IYEDn)nr)&NW-jV-uX|5!E zasJE2@AbpgQ{O#>tAdpv@T$hTx`Vuh=d4wG`8l_#X154)nN~hIrB>eFnLL^zCH@yd zi5Cb7`==R_@|4mBPbc}Q3;KB3Fm*p#Xse8vA0_SMAjdK7JI0_M zoN{cDwS?>O;z|a5u3A$}$y-U=x)FO0$=;xes%PDeTBmWJx2OA)qpX%sWxD`sgQafUXqqr^q8U^B z5zqrFbSfMj4+AK7+pR4;(5&S$ATKn;Y(Igs;70`%eHkc@n8js)J-EuF&PLC(sTtx! z!3(Mqjc+2UxUf)OkOehof6GO>k$=cLS zuW#1qQ?S^+?B;LZS11%#Wwn$gf@C;cDC&ifL47mB$3amNf2>ls5&jnu8#}r;a1B}h(_yGkvDn=ls@P2zof{qR(2>*B`yKH2^! zT6Z`rp$jXh>D#*$i5F$ASY99){B-A*McRCqi9(b)t(uLknx{^5;1*wa)+>F_Ix#6C zviTRPOCf&3-=I!#^Bcbw)rlkEp`IKVhUuHd+&$)8WrlX*;haeioPf14rY89?=(HD$ zKJ!Wis%XQZ+{B3S!l@=o#52G(rY+CIrHcpD_nTk8uBva#nN zVF#29)e|hDMhqLKm@9&vUI$ml&RlZ=c*YGjd*7`7`<_k68d2eLAn767 z%)g=8DKZ=Xv)@tw63ijOa3Zw3#FS`CRs1XaXQBeizhPX+#D0p2Bs!F>eo7Y}@d?;H zCG2_(7ny4ZJPm7E^1M`4V;aQ7N;6fZep2~zfK+jD{QqE4&oM>uGf^Y6j=20yl%&i` zHL7|6LRb5)+o+O4Is!cUH22OvY2kuANB1`xD*>_eP0wFKTW5T3CVu*%eAZ^24p%42 z*-*G5r5HO?m`nAGpqhVlTE_q^OgrE1CW>}xZvA+C69p^%ZvAHu{@o63)8~7eUt|K4 z7j=Zt&m6H1x`fUJh(P<+=Sd#rfBPPr{M|N#wUX|r-e_qs%EAdIN-uOWd$Lb7stWYw zvO2L5S5dCQBQ*$RsYYim*gzoal?z>iZ=>FK5-)7Rry^!sUbez*IoJ*cT(Bm^hFL3f)Vb_u;~JVr!R z|Jw)9^FjBF_fH|qE1&H-+JqA5_1Mx=$2(`xV?@;`XA-vpN(>?p7bWmQll7v29}MUc z^t7>E2U%Wi^SNZ-XOe%eZDm1RpMh1wm# zQ>v@mi%=todXWZExmuTwaMm_3b;~Y3Q|>N#>hXF?y*$v$sy6`Z@enRa+F%@H2bYnj zGv>Gk(VX>LFYYdfmr?yP&ia^Iykgimt_zxfbX&(={FQE|Uk<};U+|ZbF z&_|$#cd{#SfYM!$`$-cL7JtX_JgRSTZ5rRk*7js)iU$M2jo7xF$)`FZimI7eJ+Rz|8;skI(+)^al#vB?HCYrQ+b$^;WI+ z1`mnuvvdq$5#30N3N4lfL5y%(BUvv1Vd6#=O;tG)iy~Y6(Z=o9t|)a1OGmGQfIW_V z7C-Eb==`a2={cjNTqE@<7MAAsh8$AF6WX6O&bra)j96FFY{|TREuL!>>k(c-uPPe+~(u3_$lLeLv)l)CJCY^-7lV|@D>XR8FK58B;bc%UJA~}D|C%Li8ZnGu1<*q5& zvEa0D;cik`p@X1qjtLehPzb@=rN*(yTM!v zH7PQCKFk*1SL;9l0|Q1;pqN@G&NSPJ@*6)`*Mn1`q;sY|PRdUqYTp z$#{zidfrq1 zqIW7cX!{S3iu%D&57lP~|KMtwnIwly1y=~={=~E{d`3auPA6ON7M;%GKAS=_#IoQx z_lQGdfiwk(bR}`?!CEPjk(L?+A7*K4&>e=@{h05T6y-Su^imv#wq_Opl4~ixgl2}y z6GVVM7pnIde#Gq%aj}9A4ZE-itL54tUO;H&=Kau^_d!m4pfOz!-d5Qn`?1<*2pw*8 z9pCH#XiLm`WJyF?Prj~)p8^b)E`C>aallx*5bOaDN{ivf?sUU>aY`pRj%N(xtrD~y zlteZGr=t?bCLjfhonsYAzP|DYK|Ty-N9P`?7N6h9de?O6AiBU?7gCgV*q@%(%^(7x zAFspMDb96do590G37B4eo2bZ5rS}@fo%aQS)R_|^Ny8!jT^|p}Z9}H%SYF7Te#E!u zyWRXB*C&59uA-}y_HPF*C^d<{IA6)C^f~nv^;Gr~=+*aL)aQXI)Cp{#Zk0)8`oVFm z8$*U%oTw#iw=lE`bIv_`kGKyy3s_fjp(l-v?Y+>`paI64(|Y_G9Az(R1+Yj%qUT~2 zMOEqvrZ<^Qz7WCtmZn$iY2RJ1I!K@oHZL`9LQ%yvkEeTOR5W*1ugp1uPxQ*X6F7vnPSU;!hKfYczOOL~^g&`cw-o^Z+B3oD{;C8)`L+&K&D3u@FBo z+e^nt3E3@Xry4L^eyJ+_5}e=pdDAYOD5<{eCi*Upi%Ttw3ej^?uw6oLkT7R zFgy)(JAl?V)hWE86scA4j~6Za-kme?kpyEmaJl({#V0@mh>3cn`*j~0-t*SEDx3FTUc(rBoAlo)~{O-t)MNXCQW zga4s_Ar%EJhn0$AG?v-m#_mRQ@1W0EEi3<1tKEFkx{y+C$Z5gGM79AnG@;(0KCXNi`%;(U>q2tjx zADL>MI=IdL&KB>7)pmofcW>JrA=E=5-ZrS};q86@9kVYNf1!q-PkL>y*KGpE0(av5 z>-+kEVDe!y+U}Ow?*1Ek!_K~~mT?M)I?pZ0C)*t;m)9Id>q+uD^Zj3m>-2&XiZGh? z3dVX!3Gs2{(~}hgL)27cBsQQ3$VTTVAS_M}i?cR7}ZWnACtrC7Z1!^Q|OiTmGY$eA7y0;OCRUh zH-#KKhsPCL0Qq^(8%zD&-iU19^`qg!$;29nk)J`^F|bY01EZobqo=(s=6tsIZIVT# zJ@Ynob-T%C^TP}>ZSqB1Odl#s*W>Uu-W|hOB`D1j{1YJs8*}E{Y`@JDa?nKJ3^(? zl!S|ME-#Z=n@FwPM38OU%9>Dcp5T)5OHe!t6;AHo;sCd(+#DZJ@x06_edY#lB2|o( zgABLuK-ZcwG0^7CgoR~EERpo3U4~=}xaF2(eHBJVrQNaLXUW_F+;aQ3HHt#Ny+1!^ zJAw2mhV0=_Unm~^>nrHOXK^)`a#U-@ZY|kEVta_jb+DSSiI+draS?! z0sJ0y2@J)Z-vD6`E!ZX%B`W70X1zk0%E?~duL1$?=Vj;h%u$jws zDTq=YVTkUQeXXpbHWfgpr8#Ga`c_&wpP)}Qfm324X&MmiKHqG%hxvg99j>#3brI`R zPlu3c&JIz5IcoJZ`>`UG;_pTFrUH5|?{gSHhYTV3+WOuu_VL+rNNe zrA-jh?E#TeVGLJJL?{@GL+B>^VboKN&9tSif%?@3b=0dR-43XHW_@9MF8kBgy@C4d zK*Zf1Rxj_{_dQ+nVZPdAyYb`K4`f{E|E-UTA;6w-jwj{QDFL-|+iz6pW8 z(3+Be*Qm!HSv-EcvcIBPgUc7n&`lF00moUWgH(fjgSfD}LRs^W1c`c8; zoMz>+29PDhMk=&-J}&{lUd71{6(sTyt2zxfDO-jO2x*r6Azz-&kqg2WDWOy>O#Bv) zhVY`gx2RWw?&9QVfnJmobRIB@$r^u%P7vgn(~aKjO}9v@_Owf`tGX~Odm_g|`Q->r zP9{)^s($fICs3tE*(0bNSLxtd0wO%&Q$yH}JvA}AwWOLU%4!WX&bKXTBRizF&dC=@ z;pM{BcehqliojH+US(pv(HPrRof;|Mzh z5|)8kesz8V4HimWT7%3wVO48p6@W$Xt{SBT8rS{c4s3jADRbX&8 zd@`zAHd;J~DFt%6a&g)-q^95HRsOs<+u41th{MIha{IL%&8-R%llE3W*V*hq9H&sP zl9Qa{*RCAnQ0SsOXZN~miSlA3ID>#^N~P$Ot)Jg}^qLxag{GtQ;T&ro`|l!e`1svB z4cjUzA{m3e1JO(r&$SHjo@3`~D^vLRv68iV-QUi4g$BoqQJ|qH(Vp(s^Y;yENG7Ej zz2-1Yl7jsuTFC~kfZ$XEB}Q=1FIz`^sr6xC#|q9PqIS!CDNamZl@Hm9**mR~oCa(z z!svd2Z>pJ@cl@4Dkwt5u0D^i>pDh7IPMESx)6zzgU*b6OyH1!bh9IvfL^_<+kF0u@ zVkDa_y0DImp|^@npusoi=oRf@d+62-VY}eq%He*CEJfzLNVS0Nnzc<|e*tdu_RHC^ zyD_aWGI90acZ4G;e@wY8!DAl0=rYBY5h|E(5b1`?XK_%jQS?zqY#E;rM^X-aRMo1_ zT{Ky>$|H^*y?k7XV0~GN9K-f9f#~1Sjwi^0$@4c1ZWD8AHLwI$P5Tj_26~XW?#RNQ`6N;)KJwM?}~D>fwXIZbyMie@$ zrdf!llY`Dm2!4vOYIGLBC7Q76$tW*?YTYW#)jYNU(Q?58iV&f%{{DyN7y7@i-G6K0 zB1cI}gRH-EACJ63X`Hpv3MDYmA-JE(q<90-*3WaiRhDYXSB2p+Td?~2RCBBF&p=K5 zzU-(H?*|6j*QYctjkl?ijQZ7=QJyrFKz?=o%*Y#ZT>i0)m^5_8rMGF{3r$+|GfG?r zeEwVZvf3!4nq@5nJDH^eUjH8eg3v`J&Z;CFH8n^E(*k(B^k zPcN-^CtO%>*gHV3O+3pHKIy|&t>T$3FI4b#;M*JDsVLy~A1`0sda-@ywO1y0BEVQx zAjLHv;TZ92{*IWRK|Jo*U)%OOhHqH6Z_5cPlpMltS%XEauH_y5=$)GEQ#_88xmP-a zqqKd3G#@EP&B=rFKv+p|UXzGyQIt9c{0wj_tdF|_jE;|-jBDR;Oc`fwfQFRYwSP@R3;U6{0ORu5iV?@e>*O0hCwddqn%E=_`f17rNWOtSgqpNX+ShDO2l~x|8b*UE`$ZPrY zV)k0;^J0n!fKQ`_VDH3_Eg>84K-$;%>!|!CZH3m;XFNWZYnL$Hj5-O$gmqnTYIc|f zq1WLF4!pTW++8G%&4!&u02*{(U&oZ>QuneY$pw*iWcP{%|AC(nYml#VU5(yRi$Dbr zT!|a3d)x|kcrvT8FIFpp(sQfKrxHK5JC|HV@zzy&MezzEuc!r!Ko(_cbur@}saOTm z1?2lIUcxJ(GiRYBXO$5PeE)2nhNI# z&1LqP%Hy@W2k;Rb#lZPWqeOSb7!r_N8%2mZ`mfv>*nl0(7xlKjt06LqkKO>5S17Pw z9$#@Sj2xywxuo! zKt+e*bULBO64bHxqf?Ku=y?36>*{N`A2E5gHnlufuhMOXdO$rlK!1c z4kA5PY^J7>X%ka-@3H6bA4VCEgz4*Dv~M3b>KGx-CiFG6mk5;2Zq~VT%30TiZp2NUv3T~NA;tZx5DYyO(kd#lzQLkPu zkbex8odAW&&B;A~kN64c0C?rel>k(hMDxkV)Xx27yIsz9)Y5O4JOKwN_owJLP{9TayTVTI4|mnXu?bPY71vz zrN{Ha`0O0PV;jq){9fulH!65VxT&hsynPTT1GEqXPqvorTo5 z9>xCY9NM(oD1B~3I>qV5xVh?wYZEH%B*GkQYCe7+<3jR^l_56`HX|;QoM34?l;4Rv zJygdqO({_?z0y$|N}FdM3JHN;$R_FNag2q*ZI!!IupH)Fv#yltWdk|GbFYydMOzgT z?ph~4b`rfWiHnN$4;2s6rM?}+GdfjET>8w=H=WuNuPQT!8Hcjptk^shyjQ79c)k!# z4XF!s?Ym1leHs^w&Yt#p6F-ZzQ?ZwlnmBah21taX2HVG}#x>YJJ}Zmpq)kBxc}A@% zL#-?#jS{E@4G9a|<|1s-KONk>?Y0X{^8?kqy&sb@W;+{Q&*Eh zf}tP$52TfrCipSEzBbtSJ6pV~X(+qwZM!=-#Kd5DcsjmO;0H~^3oZXT|0`3z&Tvq{ z@x9?S;dxjUK7rGfrEX>a?f52!G?JBToY(jfX147QpwpMhLfts1-F0qWD0ithr~yA9 zcYvQ{BdK1rP_4D0+JP#_9gRXX)x#B0f@StRe_z87ZS$Ov_gU3^Z3U9+R7eWdLV&}u z=@>PzO0Y`D^_~IyIJ^i5q|J5%=lben1@G7DSvA>+wu~;Y)=j|*{CR`^9gLe5boZ@& z34{`_x#w^2Lis7lXy>dO648+`Q{$E>1V_iv!yTq?><<&F?S_MncRLqr8?Y1S^pbBQli<)pHgS|qR`dsRrXT5uP) z;0YsQCoFzIKj6%>;M%J2FSK(f#RLDC#0*jnOarN7stAqulsR1iK%9M)n_PU&hB%E9RhE{eKb0LrJXib@?Fw!5b=a8E(!NQC+$=tsMkow6)z zkKICf#i6XDsCElrh{i}K7Chr;$VqewfXqqq*pxQq>&wy(cwkwC>)(kHuCwCq-g~5k zqp=?+Gr^DEH09v}qMh09y@6tsb`p@3vO$ANf~-~gjb)?puL9iy>YlO$k zX^i_|6Z_iO8DO?(l?m{FcJPy}Xu8z&O-Y`4VL-VIy~Tsu#P2GTSmzgwT4p5et;x1l zWKdOMf>lDAu_xxMznjw?Dm526I@Dzl7^%4?+N8UtD-KscWbma358l!N*cGnFxGBgh zLpeMCEkg$vQ%Lbuz#iMZW?OuP};j9GhlvN$nVd_RB9&`f^ufxJ9w4gU)c zG*a3s^2?ya*wNw>->(#?G0tt%CfhAdxN(3f+#7aR9y;&(28dB$kHTR3ZxDvc^+}8& zG0FCGU4mX#UrdM)P)h z&l$?SF~(E)JlkHyQH>V&)~#OYkpa<2bmb6EAP-x4W!T;sVtC0znwOy_un@u7YND^N z%vhWbH>d`pIMf-DfnyVb+HpC&Bm1%Fg?8B=}Gw)u{{GddK z2`NdkA!TxjODfamf2UQZP4DK*k2xsgTwlj}4QzZoMMoxbfGqkz0CjfQ;*lJ(m)(3l zUVB1o3eVx0A5Wi6e!Fld#&4IH*e%i{SG#OMxk!{Qfr;fb9m2!(Oj>tx}@C>Y?6?ip7rv+EUJO2>e*=4T~dkb#=V zav$NJB_abePc8xc6#~6}31F|+=M@wJ4(stji4>)|QGMYT)E5$q!yP}iJu-;!T`K{M zd<)% z#&79~=g`HjKqT<^#53l*bWTx_lT1;aPT;5QPVd(9_suff5nJf)tTwgGn!lGPkXd^J z8`l6Et=Qk-6v~B@0fM0=S-ky7Dqy07HG8QUsRnMzs;9F)N*KOyE0+OFgVXGzI7*$ccO5E>0_t@4PFfR+)fb8fdaVDzkEk$Uq%K4>=F8} z4^*6G)j4~h4Q$d`kpG8*)(gr1L&LeU{J-3_LZ^iiqSB&mJiqg>c&udp;bkS2wDJ?} z{T8ZWfQ4>z2lL}m-vu@~`7-pqKoIs;22~A?!4*mh4!if)Y;(ZfdOalYU!2hy`(~e!Qi#tCXHicHA)n!;I6J=D;y~0No zHJDMe&Vd3pdar;K{Oyyk!0S*!H5}BT;+IApDtu^g43ROyNL9J<7^zB@9uVLJ;K}+paN2Q<=X5O^H~{(kBo=5aWz%$l-XA3L?|)vM z6(b_g=(+b(;7E42?1Hzx&$ZBe$K7y&#g$VcU!X#FFenI6ayTgDh)Z4#jEt!;8nFWa zPS)T+I{Zm`7x0bcC#Jg*$WJWS(VKT8r~pe@e*tN%Y#G7Ing&oHDcOv8@koxt>d`KB z40!MZX2uKOg;G+v8GwI+{N72c!+-I&6l1>8>dRN*!kaX;~NizLWgpcZ0&|_c#{_)&hrvWpyCO!hQ_xmMX zvwFEZ?guP`OMDn&B*IZ=7?!)!JR<)}tgknmm_$pa=?pe)StwxFLy(BERViR6hp8)I zhupIT?9BNaNWQ`dG$-%UY#q0i&r+JFEprHtCv*AS-!|gxpxV3*usSLvZv(W@u&w34 z3;-#9W+aN3aMbijA9S;^lY+XA`*X*2+?5d#baOln$1j?4sm9^7SZiGw3(JfJk9!v= z%$0RQm7$YT=cBja-bRDsWi&X}V#m}@jcnY*6))p2;sQuta-4+r+b>5xie9T)z&aQC z8*~rwLi_A&5@}1Nu1BGBmtRzy+g{miby(n?Mv<_>Rzydzn`1h{pPr(S_UH-hT{kF= z<$DkgL?3fnh=EkolUBX*Q)u_tI4=gGGCe;e-DOId2#Tsz{nT=;YP=KCrL`E!Q^2j} z>X)J3*Dgb)zGc0Zp~k3yX)C8bgZHjR!gRANO{wlxQ!s?MSi8LtVl3B?FD_E{ z2$4hQgSD01<{&}7oT$t(#tk`B;lENx+-0xZkBlZU>()s$L`vH$zuP1Tt$0h(?ATpc zk1T3j78NHx%wSVV@!~UsmFf-)VfEaPZK1Q&H~HD#Z{WLaF`GN4I9C^IMU0VYs=iC+Z%Apz)j+_e#|dPp(kp)Gy$&cZcbTDwp^}z#}+u zEfU|qo(aVsqGnwEzQe}lH*H`gNI^ai6Wo>i-1}*ICx7~?l7~ghPH4p4$wfNku`xwD z%2(ql4JQPSmANRd5j0TW+U-CkV0)4cjnP8*s4xJG0zh(Qw ztm1U|S}Ty7t{|bgDB7q&ixuEM26fZAbOnsZAnR|PnyTe(U4p;jsr4)lUTX#M21-^c zriLhq?^wV6qc=GQ^H$eV0#7k+B6tSFw=H!pc4Mm_ziJT1gDdx&E!=`^-nQQb#s0l+ zT5=--M?B`3^LeEL`NeU=p;($UKq4{H&1R}GF0~+@{6TqWj0TLp+6glS)WWl~qED4c z1@7Y%7TPLKM5;EpvCfVfvlV0v4C^u;($RSGVt25ma;6xzerO5`6%R@DMpF?#*l@3=kRM#H=da(E^V$9|KV-D(aG5>N-`593pw`&|?N9W=u&UPO# za3r5>Rj>rljp)Rzx*qpA8cK~&!dDwBX8=1>vG<67TIP%`Ttm7fzN}aF#ypeuJU6=2 z&=#fR+5B~~pcTUr_G6%8bJ+c}`1r=cwiKIun=fbc&2qMVKfJvk3cgpFbq{8bZ|~1; zi~<6ED6+)FZdhVpq0d0&!~Z@3i2K!cKcf*HWBl0D&IjT$GT4+wMCS?52o=u=UV{a< z+30yaf7zQunqNL>3;~{k(+!_j>oxx-1gKRlP9)%5o+wKe)+*MWwqNcle0t>Dl=}5xjV5#l z<_kOFXTSy0QGoB`+z*5BZ;Q_^*7M}2lRo52lYv&!nnyZuEp153+p_|?39&Ji$Shc> zO9XfAuEbLtW{bc7p1rKM-!KX3W4=RG-|B!%l79R@BmCmm>F=LEP4TMVzs)AI?C-_* z`Q|12AIw_&*RMbQL_f&hFj8v%ZJk|3Ke-;pKe~&4G#bP|8bv?4y@`Hw7cYMoe|Yy0 zeRv;#IJk+S7>ur?PY1#dgNGQl>#O+N>#N&nz3cnMa*9iMk7;BPpL_ZZ&Bco_oV)kML8)ke{vR&f@YV94 i^>X&MTYbRZr$wf>hwWe4X0QHzFvuHxkLiN| diff --git a/exchange/exchange.cpp b/exchange/exchange.cpp index b7d4ce0..b2af32b 100644 --- a/exchange/exchange.cpp +++ b/exchange/exchange.cpp @@ -24,7 +24,7 @@ using qty_type = int; using trader_type = std::array; using id_type = int; using request_id_type = int; -enum class side : char { buy = 'B', sell = 'S' }; +enum class side_type : char { buy = 'B', sell = 'S' }; enum class exec_type : char { new_order = 'N', // ack new order cancel = 'C', // ack cancel @@ -42,7 +42,7 @@ struct new_order_request : request { id_type id; trader_type trader; symbol_type symbol; - side side; + side_type side; currency_type price; qty_type qty; }; @@ -68,17 +68,8 @@ struct new_order_response : response { }; - - - - // Supported tokens -static std::map tokens { - {{"brl"}, {"0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef"}}, - {{"usd"}, {"0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef"}}, - {{"ctsi"}, {"0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef"}}, - {{"usdc"}, {"0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef"}} -}; +static std::map tokens; // Trading instrument struct instrument { @@ -87,26 +78,25 @@ struct instrument { }; // Supported instruments - static std::map instruments { - {symbol_type{"ctsi/usdc"}, {{"ctsi"}, {"usdc"}}}, - {symbol_type{"usdc/ctsi"}, {{"usdc"}, {"ctsi"}}}, - {symbol_type{"brl/usd"}, {{"blr"}, {"usd"}}}, - {symbol_type{"usd/brl"}, {{"usd"}, {"brl"}}}, - {symbol_type{"ctsi/brl"}, {{"ctsi"}, {"brl"}}}, - {symbol_type{"brl/ctsi"}, {{"brl"}, {"ctsi"}}}, - }; + static std::map instruments; + +static void init_data() { + tokens[token_type{"ctsi"}] = contract_address_type{"0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef"}; + tokens[token_type{"usdc"}] = contract_address_type{"0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef"}; + instruments[symbol_type{"ctsi/usdc"}] = instrument{token_type{"ctsi"}, token_type{"usdc"}}; +} // Token exchange order struct order { id_type id; // order id provided by the exchange trader_type trader; // trader id symbol_type symbol; // instrument's symbol (ticker) - side side; // buy or sell + side_type side; // buy or sell currency_type price; // limit price in instrument.quote qty_type qty; // remaining quantity bool matches(const order& other) { - return (side == side::buy && price >= other.price) || (side == side::sell && price <= other.price); + return (side == side_type::buy && price >= other.price) || (side == side_type::sell && price <= other.price); } bool is_filled() { @@ -143,7 +133,7 @@ struct execution_report { trader_type trader; // trader id id_type order_id; // order id exec_type type; // execution type - side side; // side of executed order + side_type side; // side of executed order qty_type qty; // qtd executed currency_type price; // execution price }; @@ -167,7 +157,7 @@ class exchange { reports.push_back({o.trader, o.id, exec_type::rejection}); return; } - if (o.side == side::buy) { + if (o.side == side_type::buy) { auto size = o.qty * o.price;; auto balance = get_balance(o.trader, instrument->second.quote); if (balance < size) { @@ -189,7 +179,7 @@ class exchange { reports.push_back({o.trader, o.id, exec_type::new_order, o.side, o.qty, o.price}); // match against existing orders auto &book = find_or_create_book(o.symbol); - if (o.side == side::buy) { + if (o.side == side_type::buy) { match(o, book.asks, instrument->second, reports); if (!o.is_filled()) { book.bids.insert(o); @@ -276,8 +266,8 @@ class exchange { if (o.is_filled() || !o.matches(best_offer)) { return; } - auto &buy_order = o.side == side::buy ? o : best_offer; - auto &sell_order = o.side == side::buy ? best_offer : o; + auto &buy_order = o.side == side_type::buy ? o : best_offer; + auto &sell_order = o.side == side_type::buy ? best_offer : o; auto &buyer = buy_order.trader; auto &seller = sell_order.trader; // execute trade and notify both parties @@ -292,8 +282,8 @@ class exchange { subtract_from_balance(seller, instr.base, exec_qty); // subtract sold tokens add_to_balance(seller, instr.quote, exec_qty * exec_price); // add balance at the execution price // notify both parties - reports.push_back({buyer, buy_order.id, exec_type::execution, side::buy, exec_qty, exec_price}); - reports.push_back({seller, sell_order.id, exec_type::execution, side::sell, exec_qty, exec_price}); + reports.push_back({buyer, buy_order.id, exec_type::execution, side_type::buy, exec_qty, exec_price}); + reports.push_back({seller, sell_order.id, exec_type::execution, side_type::sell, exec_qty, exec_price}); // remove offer from book if filled if (best_offer.is_filled()) { offers.erase(it); @@ -368,11 +358,11 @@ static void setup_test_fixture(exchange &ex) { ex.deposit(trader_type{"diego"}, token_type{"ctsi"}, 1000000); ex.deposit(trader_type{"diego"}, token_type{"usdc"}, 1000000); - ex.new_order(order{0, "perna", TEST_SYMBOL, side::buy, 100, 100}, r); - ex.new_order(order{0, "diego", TEST_SYMBOL, side::sell, 120, 100}, r); - ex.new_order(order{0, "perna", TEST_SYMBOL, side::buy, 110, 50}, r); - ex.new_order(order{0, "perna", TEST_SYMBOL, side::buy, 111, 40}, r); - ex.new_order(order{0, "diego", TEST_SYMBOL, side::sell, 112, 50}, r); + ex.new_order(order{0, "perna", TEST_SYMBOL, side_type::buy, 100, 100}, r); + ex.new_order(order{0, "diego", TEST_SYMBOL, side_type::sell, 120, 100}, r); + ex.new_order(order{0, "perna", TEST_SYMBOL, side_type::buy, 110, 50}, r); + ex.new_order(order{0, "perna", TEST_SYMBOL, side_type::buy, 111, 40}, r); + ex.new_order(order{0, "diego", TEST_SYMBOL, side_type::sell, 112, 50}, r); auto *book = ex.find_book(symbol_type{TEST_SYMBOL}); print_book(stdout, *book); } @@ -410,12 +400,12 @@ static bool process_input(exchange &ex, FILE *in, FILE *out, bool interactive = if (4 != fscanf(in, "%s %s %d %d", symbol.data(), trader.data(), &price, &qty)) { return print_error(out, "insufficient arguments for buy command"); } - ex.new_order(order{0, trader, symbol, side::buy, price, qty}, reports); + ex.new_order(order{0, trader, symbol, side_type::buy, price, qty}, reports); } else if (0 == strcmp(cmd, "sell")) { if (4 != fscanf(in, "%s %s %d %d", symbol.data(), trader.data(), &price, &qty)) { return print_error(out, "insufficient arguments for sell command"); } - ex.new_order(order{0, trader, symbol, side::sell, price, qty}, reports); + ex.new_order(order{0, trader, symbol, side_type::sell, price, qty}, reports); } else if (0 == strcmp(cmd, "book")) { if (1 != fscanf(in, "%s", symbol.data())) { return print_error(out, "insufficient arguments for book command"); @@ -479,6 +469,7 @@ static void print_help_and_exit(const char* program_name) { } int main(int argc, char** argv) { + init_data(); //unique_ptr state; std::unique_ptr state; @@ -547,16 +538,13 @@ int main(int argc, char** argv) { // create master object at the start of the arena void *root = arena->allocate(sizeof(exchange)); pex = new (root) exchange(); + if (opt_setup_test_fixture) { + // setup test fixtureexchange ex; + setup_test_fixture(*pex); + } + } else { + process_inputs(*pex, opt_interactive); } - auto &ex = *pex; - - if (opt_setup_test_fixture) { - // setup test fixtureexchange ex; - setup_test_fixture(ex); - } - - process_inputs(ex, opt_interactive); - return 0; } diff --git a/exchange/state-mgr.h b/exchange/state-mgr.h index 3fd39c7..2748eea 100644 --- a/exchange/state-mgr.h +++ b/exchange/state-mgr.h @@ -3,6 +3,8 @@ #include #include #include +#include +#include constexpr uint64_t LAMBDA_VIRTUAL_START = UINT64_C(0x1000000000); @@ -56,7 +58,7 @@ class lambda_state { lambda_state(const char *file_name) { m_length = std::filesystem::file_size(file_name); m_fd = open(file_name, O_RDWR); - m_state = mmap((void*)LAMBDA_VIRTUAL_START, m_length, PROT_WRITE | PROT_READ, MAP_SHARED | MAP_NOEXTEND | MAP_FIXED, m_fd, 0); + m_state = mmap((void*)LAMBDA_VIRTUAL_START, m_length, PROT_WRITE | PROT_READ, MAP_SHARED | MAP_FIXED, m_fd, 0); if (m_state == MAP_FAILED) { throw std::runtime_error(std::string("mmap - ") + std::strerror(errno)); } @@ -69,7 +71,7 @@ class lambda_state { lambda_state(uint64_t phys_start, uint64_t length) : m_length(length) { m_length = length; m_fd = open("/dev/mem", O_RDWR); - m_state = mmap((void*)LAMBDA_VIRTUAL_START, m_length, PROT_WRITE | PROT_READ, MAP_SHARED | MAP_NOEXTEND | MAP_FIXED, m_fd, phys_start); + m_state = mmap((void*)LAMBDA_VIRTUAL_START, m_length, PROT_WRITE | PROT_READ, MAP_SHARED | MAP_FIXED, m_fd, phys_start); if (m_state == MAP_FAILED) { throw std::runtime_error(std::string("mmap - ") + std::strerror(errno)); } From 6d62bdb6959cf233cf64245428b0d4997b05131e Mon Sep 17 00:00:00 2001 From: Marcos Pernambuco Motta <1091485+mpernambuco@users.noreply.github.commits> Date: Fri, 20 Oct 2023 12:15:17 -0300 Subject: [PATCH 8/9] Isolate exchange from cli --- exchange/.gitignore | 3 + exchange/Makefile | 38 +-- exchange/exchange-cli-emu.ext2 | Bin 0 -> 8388608 bytes exchange/exchange-cli.cpp | 252 +++++++++++++++ exchange/exchange.cpp | 550 --------------------------------- exchange/exchange.h | 344 +++------------------ exchange/state-mgr.h | 2 +- 7 files changed, 325 insertions(+), 864 deletions(-) create mode 100644 exchange/exchange-cli-emu.ext2 create mode 100644 exchange/exchange-cli.cpp delete mode 100644 exchange/exchange.cpp diff --git a/exchange/.gitignore b/exchange/.gitignore index fcb8fd3..18e684e 100644 --- a/exchange/.gitignore +++ b/exchange/.gitignore @@ -6,6 +6,9 @@ lambda-state exchange exchange-emu exchange-linux +exchange-cli +exchange-cli-emu +exchange-cli-linux state.bin diff --git a/exchange/Makefile b/exchange/Makefile index f355b51..5580ce8 100644 --- a/exchange/Makefile +++ b/exchange/Makefile @@ -3,7 +3,7 @@ LINUX:=gcc:12.2.0 CXX = g++ CXXFLAGS = -std=c++17 -SRCS = exchange.cpp state-mgr.cpp +SRCS = exchange-cli.cpp state-mgr.cpp RUN_TOOLCHAIN = \ docker run \ @@ -30,49 +30,49 @@ RUN_LINUX = \ RUN_CARTESI_MACHINE := \ cartesi-machine.lua \ --append-dtb-bootargs="single=yes" \ - --flash-drive="label:fs,filename:exchange-emu.ext2" \ + --flash-drive="label:fs,filename:exchange-cli-emu.ext2" \ --flash-drive=label:"state.bin,filename:state.bin,shared" \ -i -exchange: $(SRCS) +exchange-cli: $(SRCS) $(CXX) $(CXXFLAGS) -o $@ $^ STATE_SIZE := 8192 STATE_FILE = state.bin -$(STATE_FILE): exchange-linux +$(STATE_FILE): exchange-cli-linux dd if=/dev/zero of=$@ bs=1 count=$(STATE_SIZE) - $(RUN_LINUX) ./exchange-linux --init-state --setup-test-fixture --lambda-state $(STATE_FILE) + $(RUN_LINUX) ./exchange-cli-linux --init-state --setup-test-fixture --lambda-state $(STATE_FILE) chmod 777 $(STATE_FILE) init-state: rm -f $(STATE_FILE) $(MAKE) $(STATE_FILE) -exchange-emu.ext2: exchange-emu $(STATE_FILE) +exchange-cli-emu.ext2: exchange-cli-emu $(STATE_FILE) mkdir -p fs - cp -f exchange-emu $(STATE_FILE) fs/ + cp -f exchange-cli-emu $(STATE_FILE) fs/ $(RUN_TOOLCHAIN) genext2fs -f -i 512 -b 8192 -d fs $@ truncate -s %4096 $@ -exchange-emu: CXX = $(RUN_TOOLCHAIN) riscv64-cartesi-linux-gnu-g++ -exchange-emu: %.o = $(RUN_TOOLCHAIN) g++ -exchange-emu: $(SRCS) +exchange-cli-emu: CXX = $(RUN_TOOLCHAIN) riscv64-cartesi-linux-gnu-g++ +exchange-cli-emu: %.o = $(RUN_TOOLCHAIN) g++ +exchange-cli-emu: $(SRCS) $(CXX) $(CXXFLAGS) -o $@ $^ -exchange-linux: CXX = $(RUN_LINUX) g++ -exchange-linux: %.o = $(RUN_LINUX) g++ -exchange-linux: $(SRCS) +exchange-cli-linux: CXX = $(RUN_LINUX) g++ +exchange-cli-linux: %.o = $(RUN_LINUX) g++ +exchange-cli-linux: $(SRCS) $(CXX) $(CXXFLAGS) -o $@ $^ -cartesi-machine: exchange-emu.ext2 +cartesi-machine: exchange-cli-emu.ext2 $(RUN_CARTESI_MACHINE) /bin/sh -run-emu: exchange-emu.ext2 - $(RUN_CARTESI_MACHINE) /mnt/fs/exchange-emu --interactive --lambda-state /mnt/fs/state.bin +run-emu: exchange-cli-emu.ext2 + $(RUN_CARTESI_MACHINE) /mnt/fs/exchange-cli-emu --interactive --lambda-state /mnt/fs/state.bin run-linux: INTERACTIVE =i -run-linux: exchange-emu.ext2 - $(RUN_LINUX) ./exchange-linux --lambda-state state.bin --interactive +run-linux: exchange-cli-emu.ext2 + $(RUN_LINUX) ./exchange-cli-linux --lambda-state state.bin --interactive %.o: %.cpp $(wildcard *.h) @@ -87,4 +87,4 @@ linux-env: $(RUN_LINUX) /bin/sh clean: - rm -f $(OBJS) exchange exchange-emu exchange-linux + rm -f $(OBJS) exchange exchange-cli-emu exchange-cli-linux diff --git a/exchange/exchange-cli-emu.ext2 b/exchange/exchange-cli-emu.ext2 new file mode 100644 index 0000000000000000000000000000000000000000..f061e5389d18b059411686e4191e723785360032 GIT binary patch literal 8388608 zcmeF!Jx&5q5CGtTg+j2PFvbpgBUca$Pv8msS$`750!%EuhBxqX#>B!#6CE%F4E8Jf zO)}Zpd6T@yx7lQg5CjPPTY*9T@?OM4En=`8@vvFvVU?l3PFGX z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk 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� 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 z_pkjOKVSPhrdX`&fjpq|FPE`P@x%Z8vP1m*vO`R9{%lRj-)8!MXFPw;1kTAl6PVAl zR6xFunf{k>&!7GcgZ%srgZ%s^Em+}UrvEMABvYyz^f|bTpFem$KX0bTs8^2n;u)&q z`uUgT`IqH+T~CNNeKbG){SdGj_@|$*yPVUn`%rlL`Z@jmB%UQo{rntxevUl<1n&7i z`Z<1 zqXy(#r!URWy{p;jZ&H`~w@ZW{%OwAM{2+d7xoeozUD)#nI3KYU_xJne3M?Lbo6(vq^Hx-{Pzl-W})elxolcv%T`bi!XM2~U+eFYY;RKkKI0|o zvG}9kPhacr-ZV~9(H9}#q!%gw`g>nQ{)YwEEHs@z|2Hr9@~`=6dj0LsKfSM(&m0g? zKFkmCU*LPlyf*2nxe%XW`6i=|t|O{d>;MXi?%yHw`r0f%&DTv&_|mmkN4(sv0NyMA zh(^EXu#q0!(;u&_JU(5xNo7mC=%e{86F&MquaRq_iOSC)?lltuKAKP7d+}}cH0R{uXj=PiC153BC153BC153B zC153BC153BC153BC153BC153BC153BC153BC153BC153BC153BC153BC153BC153B zC153BC153BC153BC153BC153BC153BC153BC153BC153BC153BC153BC153BC153B zC153BC153BC153BC153BC153BC153BC153BC153BC153BC153BC153BC153BC153B zC153BC153BC153BC153BC153BC153BC153BC153BC153BC153BC153BC153BC153B zC153BC153BC153BC153BC153BC153BC153BC153BC153BC153BC153BC153BC153B zC153BC153BC153BC153BC153BC153BC153BC153BC153BC153BC153BC153BC153B zC153BC153BC153BC153BC153BC153BC153BC153BC153BC153BC153BC153BC153B zC153BC153BC153BC153BC153BC153BC153BC153BC153BC153BC153BC153BC153B zC153BC153BC153BC153BC153BC153BC153BC153BC153BC153BC153BC153BC153B zC153BC153BC153BC153BC153BC153BC153BC153BC153BC153BC153BC153BC153B zC153BC153BC153BC153BC153BC153BC153BC153BC153BC153BC153BC153BC153B zC153BC153BC153BC153BC153BC153BC153BC153BC153BC153BC153BC153BC153B zC153BC153BC153BC153BC153BC153BC153BC153BC153BC153BC153BC153BC153B zC153BC153BC153BC153BC153BC153BC153BC153BC153BC153BC153BC153BC153B zC153BC153BC153BC153BC153BC154+|FuI00ssI20D}Cj2e}Y3V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA vz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*2A%@}3f#LL literal 0 HcmV?d00001 diff --git a/exchange/exchange-cli.cpp b/exchange/exchange-cli.cpp new file mode 100644 index 0000000..03ce1fa --- /dev/null +++ b/exchange/exchange-cli.cpp @@ -0,0 +1,252 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "exchange.h" + +#define TEST_SYMBOL "ctsi/usdc" + +void print_book(FILE *out,const book &book) { + auto b = book.bids.begin(); + auto a = book.asks.begin(); + fprintf(out, "id \ttradr\tqty\tbid | ask\tqty \ttradr\tid\n"); + while (b!=book.bids.end() || a!=book.asks.end()) { + if (b!=book.bids.end()) { + fprintf(out, "%d\t%s\t%d\t%d", b->id, b->trader.data(), b->qty, b->price); + } else { + fprintf(out, " \t \t \t "); + } + fprintf(out, " | "); + if (a!=book.asks.end()) { + fprintf(out, "%d\t%d\t%s\t%d", a->price, a->qty, a->trader.data(), a->id); + } else { + fprintf(out, " \t \t \t "); + } + fprintf(out, "\n"); + if (b!=book.bids.end()) ++b; + if (a!=book.asks.end()) ++a; + } +} + +void print_wallet(FILE *out, const wallet_type &wallet) { + for(auto &entry: wallet) { + fprintf(out, "%s: %d\n", entry.first.data(), entry.second); + } +} + +static void print_execution_report(FILE *out, execution_report r) { + fprintf(out, "Execution - Trader: %s ", r.trader.data()); + fprintf(out, "Order ID: %d ", r.order_id); + fprintf(out, "Execution Type: %c ", (char)r.type); + fprintf(out, "Side: %c ", (char)r.side); + fprintf(out, "Quantity: %d ", r.qty); + fprintf(out, "Price: %d", r.price); + fprintf(out, "Text: %s\n", r.text.c_str()); +} + +static void setup_test_fixture(exchange &ex) { + // // setup playground + execution_reports_type r; + ex.deposit(trader_type{"perna"}, token_type{"ctsi"}, 1000000); + auto x = ex.find_wallet(trader_type{"perna"}); + print_wallet(stdout, *x); + ex.deposit(trader_type{"perna"}, token_type{"usdc"}, 1000000); + ex.deposit(trader_type{"diego"}, token_type{"ctsi"}, 1000000); + ex.deposit(trader_type{"diego"}, token_type{"usdc"}, 1000000); + + ex.new_order(order{0, "perna", TEST_SYMBOL, side_type::buy, 100, 100}, r); + ex.new_order(order{0, "diego", TEST_SYMBOL, side_type::sell, 120, 100}, r); + ex.new_order(order{0, "perna", TEST_SYMBOL, side_type::buy, 110, 50}, r); + ex.new_order(order{0, "perna", TEST_SYMBOL, side_type::buy, 111, 40}, r); + ex.new_order(order{0, "diego", TEST_SYMBOL, side_type::sell, 112, 50}, r); + auto *book = ex.find_book(symbol_type{TEST_SYMBOL}); + print_book(stdout, *book); +} + +static bool print_error(FILE *out, const char* message) { + fprintf(out, "ERROR: %s\n", message); + return false; +} + +static bool process_input(exchange &ex, FILE *in, FILE *out, bool interactive = false) { + char cmd[1024]; + std::string error_message; + symbol_type symbol; + token_type token; + trader_type trader; + currency_type price; + qty_type qty; + execution_reports_type reports; + memset(cmd, 0, sizeof(cmd)); + memset(symbol.data(), 0, sizeof(symbol)); + memset(token.data(), 0, sizeof(token)); + memset(trader.data(), 0, sizeof(trader)); + if (1 != fscanf(in, "%s", cmd)) { + return print_error(out, "missing command"); + } + if (0 == strcmp(cmd, "q")) { + return false; + } + if (0 == strcmp(cmd, "buy")) { + if (4 != fscanf(in, "%s %s %d %d", symbol.data(), trader.data(), &price, &qty)) { + return print_error(out, "insufficient arguments for buy command"); + } + ex.new_order(order{0, trader, symbol, side_type::buy, price, qty}, reports); + } else if (0 == strcmp(cmd, "sell")) { + if (4 != fscanf(in, "%s %s %d %d", symbol.data(), trader.data(), &price, &qty)) { + return print_error(out, "insufficient arguments for sell command"); + } + ex.new_order(order{0, trader, symbol, side_type::sell, price, qty}, reports); + } else if (0 == strcmp(cmd, "book")) { + if (1 != fscanf(in, "%s", symbol.data())) { + return print_error(out, "insufficient arguments for book command"); + } + auto *pbook = ex.find_book(symbol); + // todo: return book in standard output format + if (pbook) { + print_book(out, *pbook); + } else { + fprintf(out, "No book for symbol %s\n", symbol.data()); + } + } else if (0 == strcmp(cmd, "wallet")) { + if (1 != fscanf(in, "%s", trader.data())) { + return print_error(out, "insufficient arguments for book command"); + } + auto *pwallet = ex.find_wallet(trader); + if (pwallet) { + print_wallet(out, *pwallet); + } else { + fprintf(out, "No wallet for trader %s\n", trader.data()); + } + } else if (0 == strcmp(cmd, "deposit")) { + if (3 != fscanf(in, "%s %s %d", trader.data(), token.data(), &qty)) { + return print_error(out, "insufficient arguments for sell command"); + } + ex.deposit(trader, token, qty); + } else if (0 == strcmp(cmd, "withdraw")) { + if (3 != fscanf(in, "%s %s %d", trader.data(), token.data(), &qty)) { + return print_error(out, "insufficient arguments for sell command"); + } + if (!ex.withdraw(trader, token, qty, &error_message)) { + printf("ERROR: %s\n", error_message.c_str()); + } + } else { + return print_error(out, "invalid command"); + } + // TODO: convert the execution reports in standard output formant suitable for parsing + for(auto &report: reports) { + print_execution_report(out, report); + } + return true; +} + +static void process_inputs(exchange &ex, bool interactive) { + while(true) { + if (interactive) { + fprintf(stdout, "Enter command. Format is: (buy|sell|book) symbol trader price qty\n> "); + } + if (!process_input(ex, stdin, stdout, true)) { + return; + } + } +} + +static void print_help_and_exit(const char* program_name) { + printf("Usage: %s --lambda-state= [options...] \n", program_name); + printf("Options:\n"); + printf(" --lambda-state= Where to read the lambda state from\n"); + printf(" --setup-test-fixture Setup test fixture\n"); + printf(" --interactive Interactive mode\n"); + printf(" --help Show help\n"); + exit(0); +} + +int main(int argc, char** argv) { + init_instruments(); + //unique_ptr state; + std::unique_ptr state; + + std::string opt_lambda_state; + bool opt_init_state = false; + bool opt_setup_test_fixture = false; + bool opt_interactive = false; + bool opt_help = false; + + // parse command line arguments + for (int i = 1; i < argc; i++) { + std::string arg = argv[i]; + if (arg == "--lambda-state") { + if (i + 1 < argc) { + opt_lambda_state = argv[++i]; + } else { + std::cerr << "--state-file option requires a filename argument" << std::endl; + return 1; + } + } else if (arg == "--setup-test-fixture") { + opt_setup_test_fixture = true; + } else if (arg == "--init-state") { + opt_init_state = true; + } else if (arg == "--interactive") { + opt_interactive = true; + } else if (arg == "--help") { + opt_help = true; + } else { + std::cerr << "Unknown option: " << arg << std::endl; + return 1; + } + } + + // handle commands + if (opt_help) { + print_help_and_exit(argv[0]); + } + + // map lambda state + if (opt_lambda_state.empty()) { + std::cerr << "--lambda-state is required" << std::endl; + return 1; + } + if (opt_lambda_state.find("0x") == 0) { + auto length_index = opt_lambda_state.find(':'); + if (length_index == std::string::npos) { + std::cerr << "--lambda-state must be in the format 0x:" << std::endl; + return 1; + } + auto phys_addr = std::stoull(opt_lambda_state.substr(2, length_index-2), nullptr, 16); + auto length = std::stoull(opt_lambda_state.substr(length_index+1), nullptr, 16); + state = std::unique_ptr(new lambda_state(phys_addr, length)); + } else { + // dd if=/dev/zero of=lambda-state bs=1 count=8192 + state = std::unique_ptr(new lambda_state(opt_lambda_state.c_str())); + } + + // initialize arena + arena = reinterpret_cast(state->get_state()); + exchange *pex = reinterpret_cast(arena->get_data()); + if (opt_init_state) { + printf("init state....\n"); + // initialize arena + arena = new (state->get_state()) memory_arena(state->get_length()); + memset(arena->get_data(), 0, arena->get_data_length()); + // create master object at the start of the arena + void *root = arena->allocate(sizeof(exchange)); + pex = new (root) exchange(); + if (opt_setup_test_fixture) { + // setup test fixtureexchange ex; + setup_test_fixture(*pex); + } + } else { + process_inputs(*pex, opt_interactive); + } + return 0; +} + diff --git a/exchange/exchange.cpp b/exchange/exchange.cpp deleted file mode 100644 index b2af32b..0000000 --- a/exchange/exchange.cpp +++ /dev/null @@ -1,550 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "state-mgr.h" - -#define TEST_SYMBOL "ctsi/usdc" - -constexpr uint64_t LAMBDA_PHYS_START = UINT64_C(0); - -using symbol_type = std::array; -using token_type = std::array; -using currency_type = int; -using qty_type = int; -using trader_type = std::array; -using id_type = int; -using request_id_type = int; -enum class side_type : char { buy = 'B', sell = 'S' }; -enum class exec_type : char { - new_order = 'N', // ack new order - cancel = 'C', // ack cancel - execution = 'E', // trade execution (partial or full) - rejection = 'R' // order rejection -}; -using contract_address_type = std::string; -using request_type = char; - -struct request { - request_type type; - request_id_type id; -}; -struct new_order_request : request { - id_type id; - trader_type trader; - symbol_type symbol; - side_type side; - currency_type price; - qty_type qty; -}; -struct deposit_request : request { - trader_type trader; - token_type token; - currency_type amount; -}; -struct withdraw_request : request { - trader_type trader; - token_type token; - currency_type amount; -}; - -struct response { - request_id_type request_id; - bool success; - std::string message; -}; - -struct new_order_response : response { - id_type id; -}; - - -// Supported tokens -static std::map tokens; - -// Trading instrument -struct instrument { - token_type base; // token being traded - token_type quote; // quote token - "price " of 1 base token -}; - - // Supported instruments - static std::map instruments; - -static void init_data() { - tokens[token_type{"ctsi"}] = contract_address_type{"0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef"}; - tokens[token_type{"usdc"}] = contract_address_type{"0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef"}; - instruments[symbol_type{"ctsi/usdc"}] = instrument{token_type{"ctsi"}, token_type{"usdc"}}; -} - -// Token exchange order -struct order { - id_type id; // order id provided by the exchange - trader_type trader; // trader id - symbol_type symbol; // instrument's symbol (ticker) - side_type side; // buy or sell - currency_type price; // limit price in instrument.quote - qty_type qty; // remaining quantity - - bool matches(const order& other) { - return (side == side_type::buy && price >= other.price) || (side == side_type::sell && price <= other.price); - } - - bool is_filled() { - return qty == 0; - } - -}; - -// comparator for sorting bid offers -struct best_bid { - bool operator()(const order &a, const order &b) const { - return a.price > b.price; - } -}; - -// comparator for sortting ask offers -struct best_ask { - bool operator()(const order &a, const order &b) const { - return a.price < b.price; - } -}; - - using bids_type = std::multiset>; - using asks_type = std::multiset>; - -struct book { - symbol_type symbol; - bids_type bids; - asks_type asks; -}; - -// exchange notifications -struct execution_report { - trader_type trader; // trader id - id_type order_id; // order id - exec_type type; // execution type - side_type side; // side of executed order - qty_type qty; // qtd executed - currency_type price; // execution price -}; -using execution_reports_type = std::vector; - -using wallet_type = std::map, arena_allocator>>; -using books_type = std::map, arena_allocator>>; -using wallets_type = std::map, arena_allocator>>; - -// exchange class to be "deserialized" from lambda state -class exchange { - books_type books; - wallets_type wallets; - id_type next_id{0}; - -public: - void new_order(order o, execution_reports_type &reports) { - // validate order - auto instrument = instruments.find(o.symbol); - if (instrument == instruments.end()) { - reports.push_back({o.trader, o.id, exec_type::rejection}); - return; - } - if (o.side == side_type::buy) { - auto size = o.qty * o.price;; - auto balance = get_balance(o.trader, instrument->second.quote); - if (balance < size) { - reports.push_back({o.trader, o.id, exec_type::rejection}); - return; - } - subtract_from_balance(o.trader, instrument->second.quote, size); - } else { - auto size = o.qty; - auto balance = get_balance(o.trader, instrument->second.base); - if (balance < size) { - reports.push_back({o.trader, o.id, exec_type::rejection}); - return; - } - subtract_from_balance(o.trader, instrument->second.base, size); - } - - // send report acknowledging new order - reports.push_back({o.trader, o.id, exec_type::new_order, o.side, o.qty, o.price}); - // match against existing orders - auto &book = find_or_create_book(o.symbol); - if (o.side == side_type::buy) { - match(o, book.asks, instrument->second, reports); - if (!o.is_filled()) { - book.bids.insert(o); - } - } else { - match(o, book.bids, instrument->second, reports); - if (!o.is_filled()) { - book.asks.insert(o); - } - } - } - - void cancel_order(id_type order_id) { - // todo: - } - - wallet_type* find_wallet(const trader_type &trader) { - auto it = wallets.find(trader); - if (it != wallets.end()) { - return &it->second; - } - return nullptr; - } - - book *find_book(const symbol_type &symbol) { - auto it = books.find(symbol); - if (it != books.end()) { - return &it->second; - } - return nullptr; - } - - void deposit(const trader_type &trader, const token_type &token, currency_type amount) { - add_to_balance(trader, token, amount); - // todo: notifications - } - - void withdraw(const trader_type &trader, const token_type &token, currency_type amount) { - subtract_from_balance(trader, token, amount); - // todo: notifications - } - -private: - - book &find_or_create_book(const symbol_type &symbol) { - auto it = books.find(symbol); - if (it != books.end()) { - return it->second; - } - return books.emplace(symbol, book{symbol, {}, {}}).first->second;; - } - - wallet_type &find_or_create_wallet(const trader_type &trader) { - auto it = wallets.find(trader); - if (it != wallets.end()) { - return it->second; - } - return wallets.emplace(trader, wallet_type{}).first->second;; - } - - void subtract_from_balance(const trader_type &trader, const token_type &token, currency_type amount) { - if (tokens.find(token) == tokens.end()) { - throw std::runtime_error("invalid token"); - } - auto &wallet = find_or_create_wallet(trader); - wallet[token] -= amount; - } - - void add_to_balance(const trader_type &trader, const token_type &token, currency_type amount) { - if (tokens.find(token) == tokens.end()) { - throw std::runtime_error("invalid token"); - } - auto &wallet = find_or_create_wallet(trader); - wallet[token] += amount; - } - - // match order against existing offers, executing trades and notifying both parties - template - void match(order& o, T &offers, instrument &instr, execution_reports_type& reports) { - auto it = offers.begin(); - while(it != offers.end()) { - // ok to drop const becasue the set is ordered by a custom comparator whose key(price) won't be changed - auto &best_offer = const_cast(*it); - if (o.is_filled() || !o.matches(best_offer)) { - return; - } - auto &buy_order = o.side == side_type::buy ? o : best_offer; - auto &sell_order = o.side == side_type::buy ? best_offer : o; - auto &buyer = buy_order.trader; - auto &seller = sell_order.trader; - // execute trade and notify both parties - auto exec_qty = std::min(o.qty, best_offer.qty); - buy_order.qty -= exec_qty; - sell_order.qty -= exec_qty; - // exchange tokens - auto exec_price = (o.price + best_offer.price) /2; - add_to_balance(buyer, instr.quote, exec_qty * buy_order.price); // add balance locked at the limit order price - subtract_from_balance(buyer, instr.quote, exec_qty * exec_price); // subtract balance at the execution price - add_to_balance(buyer, instr.base, exec_qty); // add bought tokens - subtract_from_balance(seller, instr.base, exec_qty); // subtract sold tokens - add_to_balance(seller, instr.quote, exec_qty * exec_price); // add balance at the execution price - // notify both parties - reports.push_back({buyer, buy_order.id, exec_type::execution, side_type::buy, exec_qty, exec_price}); - reports.push_back({seller, sell_order.id, exec_type::execution, side_type::sell, exec_qty, exec_price}); - // remove offer from book if filled - if (best_offer.is_filled()) { - offers.erase(it); - } - // find next best offer - it = offers.begin(); - } - } - - currency_type get_balance(const trader_type &trader, const token_type &token) { - auto wallet = find_wallet(trader); - if (!wallet) { - return 0; - } - auto it = wallet->find(token); - if (it == wallet->end()) { - return 0; - } - return it->second; - } - - - id_type get_next_id() { - return ++next_id; - } -}; - -void print_book(FILE *out,const book &book) { - auto b = book.bids.begin(); - auto a = book.asks.begin(); - fprintf(out, "id \ttradr\tqty\tbid | ask\tqty \ttradr\tid\n"); - while (b!=book.bids.end() || a!=book.asks.end()) { - if (b!=book.bids.end()) { - fprintf(out, "%d\t%s\t%d\t%d", b->id, b->trader.data(), b->qty, b->price); - } else { - fprintf(out, " \t \t \t "); - } - fprintf(out, " | "); - if (a!=book.asks.end()) { - fprintf(out, "%d\t%d\t%s\t%d", a->price, a->qty, a->trader.data(), a->id); - } else { - fprintf(out, " \t \t \t "); - } - fprintf(out, "\n"); - if (b!=book.bids.end()) ++b; - if (a!=book.asks.end()) ++a; - } -} - -void print_wallet(FILE *out, const wallet_type &wallet) { - for(auto &entry: wallet) { - fprintf(out, "%s: %d\n", entry.first.data(), entry.second); - } -} - -static void print_execution_report(FILE *out, execution_report r) { - fprintf(out, "Execution - Trader: %s ", r.trader.data()); - fprintf(out, "Order ID: %d ", r.order_id); - fprintf(out, "Execution Type: %c ", (char)r.type); - fprintf(out, "Side: %c ", (char)r.side); - fprintf(out, "Quantity: %d ", r.qty); - fprintf(out, "Price: %d\n", r.price); -} - -static void setup_test_fixture(exchange &ex) { - // // setup playground - execution_reports_type r; - ex.deposit(trader_type{"perna"}, token_type{"ctsi"}, 1000000); - auto x = ex.find_wallet(trader_type{"perna"}); - print_wallet(stdout, *x); - ex.deposit(trader_type{"perna"}, token_type{"usdc"}, 1000000); - ex.deposit(trader_type{"diego"}, token_type{"ctsi"}, 1000000); - ex.deposit(trader_type{"diego"}, token_type{"usdc"}, 1000000); - - ex.new_order(order{0, "perna", TEST_SYMBOL, side_type::buy, 100, 100}, r); - ex.new_order(order{0, "diego", TEST_SYMBOL, side_type::sell, 120, 100}, r); - ex.new_order(order{0, "perna", TEST_SYMBOL, side_type::buy, 110, 50}, r); - ex.new_order(order{0, "perna", TEST_SYMBOL, side_type::buy, 111, 40}, r); - ex.new_order(order{0, "diego", TEST_SYMBOL, side_type::sell, 112, 50}, r); - auto *book = ex.find_book(symbol_type{TEST_SYMBOL}); - print_book(stdout, *book); -} - -static bool print_error(FILE *out, const char* message) { - fprintf(out, "ERROR: %s\n", message); - return false; -} - -/* - commands are in the format: - buy - sell - book -*/ -static bool process_input(exchange &ex, FILE *in, FILE *out, bool interactive = false) { - char cmd[1024]; - symbol_type symbol; - token_type token; - trader_type trader; - currency_type price; - qty_type qty; - execution_reports_type reports; - memset(cmd, 0, sizeof(cmd)); - memset(symbol.data(), 0, sizeof(symbol)); - memset(token.data(), 0, sizeof(token)); - memset(trader.data(), 0, sizeof(trader)); - if (1 != fscanf(in, "%s", cmd)) { - return print_error(out, "missing command"); - } - if (0 == strcmp(cmd, "q")) { - return false; - } - if (0 == strcmp(cmd, "buy")) { - if (4 != fscanf(in, "%s %s %d %d", symbol.data(), trader.data(), &price, &qty)) { - return print_error(out, "insufficient arguments for buy command"); - } - ex.new_order(order{0, trader, symbol, side_type::buy, price, qty}, reports); - } else if (0 == strcmp(cmd, "sell")) { - if (4 != fscanf(in, "%s %s %d %d", symbol.data(), trader.data(), &price, &qty)) { - return print_error(out, "insufficient arguments for sell command"); - } - ex.new_order(order{0, trader, symbol, side_type::sell, price, qty}, reports); - } else if (0 == strcmp(cmd, "book")) { - if (1 != fscanf(in, "%s", symbol.data())) { - return print_error(out, "insufficient arguments for book command"); - } - auto *pbook = ex.find_book(symbol); - // todo: return book in standard output format - if (pbook) { - print_book(out, *pbook); - } else { - fprintf(out, "No book for symbol %s\n", symbol.data()); - } - } else if (0 == strcmp(cmd, "wallet")) { - if (1 != fscanf(in, "%s", trader.data())) { - return print_error(out, "insufficient arguments for book command"); - } - auto *pwallet = ex.find_wallet(trader); - if (pwallet) { - print_wallet(out, *pwallet); - } else { - fprintf(out, "No wallet for trader %s\n", trader.data()); - } - } else if (0 == strcmp(cmd, "deposit")) { - if (3 != fscanf(in, "%s %s %d", trader.data(), token.data(), &qty)) { - return print_error(out, "insufficient arguments for sell command"); - } - ex.deposit(trader, token, qty); - } else if (0 == strcmp(cmd, "withdraw")) { - if (3 != fscanf(in, "%s %s %d", trader.data(), token.data(), &qty)) { - return print_error(out, "insufficient arguments for sell command"); - } - ex.withdraw(trader, token, qty); - } else { - return print_error(out, "invalid command"); - } - // TODO: convert the execution reports in standard output formant suitable for parsing - for(auto &report: reports) { - print_execution_report(out, report); - } - return true; -} - -static void process_inputs(exchange &ex, bool interactive) { - while(true) { - if (interactive) { - fprintf(stdout, "Enter command. Format is: (buy|sell|book) symbol trader price qty\n> "); - } - if (!process_input(ex, stdin, stdout, true)) { - return; - } - } -} - -static void print_help_and_exit(const char* program_name) { - printf("Usage: %s --lambda-state= [options...] \n", program_name); - printf("Options:\n"); - printf(" --lambda-state= Where to read the lambda state from\n"); - printf(" --setup-test-fixture Setup test fixture\n"); - printf(" --interactive Interactive mode\n"); - printf(" --help Show help\n"); - exit(0); -} - -int main(int argc, char** argv) { - init_data(); - //unique_ptr state; - std::unique_ptr state; - - std::string opt_lambda_state; - bool opt_init_state = false; - bool opt_setup_test_fixture = false; - bool opt_interactive = false; - bool opt_help = false; - - // parse command line arguments - for (int i = 1; i < argc; i++) { - std::string arg = argv[i]; - if (arg == "--lambda-state") { - if (i + 1 < argc) { - opt_lambda_state = argv[++i]; - } else { - std::cerr << "--state-file option requires a filename argument" << std::endl; - return 1; - } - } else if (arg == "--setup-test-fixture") { - opt_setup_test_fixture = true; - } else if (arg == "--init-state") { - opt_init_state = true; - } else if (arg == "--interactive") { - opt_interactive = true; - } else if (arg == "--help") { - opt_help = true; - } else { - std::cerr << "Unknown option: " << arg << std::endl; - return 1; - } - } - - // handle commands - if (opt_help) { - print_help_and_exit(argv[0]); - } - - // map lambda state - if (opt_lambda_state.empty()) { - std::cerr << "--lambda-state is required" << std::endl; - return 1; - } - if (opt_lambda_state.find("0x") == 0) { - auto length_index = opt_lambda_state.find(':'); - if (length_index == std::string::npos) { - std::cerr << "--lambda-state must be in the format 0x:" << std::endl; - return 1; - } - auto phys_addr = std::stoull(opt_lambda_state.substr(2, length_index-2), nullptr, 16); - auto length = std::stoull(opt_lambda_state.substr(length_index+1), nullptr, 16); - state = std::unique_ptr(new lambda_state(phys_addr, length)); - } else { - // dd if=/dev/zero of=lambda-state bs=1 count=8192 - state = std::unique_ptr(new lambda_state(opt_lambda_state.c_str())); - } - - // initialize arena - arena = reinterpret_cast(state->get_state()); - exchange *pex = reinterpret_cast(arena->get_data()); - if (opt_init_state) { - printf("init state....\n"); - // initialize arena - arena = new (state->get_state()) memory_arena(state->get_length()); - memset(arena->get_data(), 0, arena->get_data_length()); - // create master object at the start of the arena - void *root = arena->allocate(sizeof(exchange)); - pex = new (root) exchange(); - if (opt_setup_test_fixture) { - // setup test fixtureexchange ex; - setup_test_fixture(*pex); - } - } else { - process_inputs(*pex, opt_interactive); - } - return 0; -} - diff --git a/exchange/exchange.h b/exchange/exchange.h index 37c3e83..ecdfc32 100644 --- a/exchange/exchange.h +++ b/exchange/exchange.h @@ -13,8 +13,6 @@ #include #include "state-mgr.h" -#define TEST_SYMBOL "ctsi/usdc" - constexpr uint64_t LAMBDA_PHYS_START = UINT64_C(0); using symbol_type = std::array; @@ -35,55 +33,40 @@ using contract_address_type = std::string; using request_type = char; struct new_order_request { - request_id_type id; + id_type id; trader_type trader; symbol_type symbol; side_type side; currency_type price; qty_type qty; }; + struct deposit_request { + id_type id; trader_type trader; token_type token; currency_type amount; }; + struct withdraw_request { + id_type id; trader_type trader; token_type token; currency_type amount; }; -// Supported tokens -static std::map tokens { - {{"brl"}, {"0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef"}}, - {{"usd"}, {"0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef"}}, - {{"ctsi"}, {"0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef"}}, - {{"usdc"}, {"0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef"}} -}; - // Trading instrument struct instrument { token_type base; // token being traded token_type quote; // quote token - "price " of 1 base token }; - - // Supported instruments - static std::map instruments { - {symbol_type{"ctsi/usdc"}, {{"ctsi"}, {"usdc"}}}, - {symbol_type{"usdc/ctsi"}, {{"usdc"}, {"ctsi"}}}, - {symbol_type{"brl/usd"}, {{"blr"}, {"usd"}}}, - {symbol_type{"usd/brl"}, {{"usd"}, {"brl"}}}, - {symbol_type{"ctsi/brl"}, {{"ctsi"}, {"brl"}}}, - {symbol_type{"brl/ctsi"}, {{"brl"}, {"ctsi"}}}, - }; // Token exchange order struct order { id_type id; // order id provided by the exchange - request_id_type request; trader_type trader; // trader id symbol_type symbol; // instrument's symbol (ticker) - side_type side; // buy or sell + side_type side; // buy or sell currency_type price; // limit price in instrument.quote qty_type qty; // remaining quantity @@ -122,13 +105,13 @@ struct book { // exchange notifications struct execution_report { - id_type order_id; // order id - request_id_type request_id; // request id - trader_type trader; // trader id - exec_type type; // execution type - side_type side; // side of executed order - qty_type qty; // qtd executed + trader_type trader; // trader id + id_type order_id; // order id + exec_type type; // execution type + side_type side; // side of executed order + qty_type qty; // qtd executed currency_type price; // execution price + std::string text; // optional text }; using execution_reports_type = std::vector; @@ -136,6 +119,15 @@ using wallet_type = std::map, a using books_type = std::map, arena_allocator>>; using wallets_type = std::map, arena_allocator>>; +std::map tokens; +std::map instruments; + +void init_instruments() { + tokens[token_type{"ctsi"}] = contract_address_type{"0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef"}; + tokens[token_type{"usdc"}] = contract_address_type{"0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef"}; + instruments[symbol_type{"ctsi/usdc"}] = instrument{token_type{"ctsi"}, token_type{"usdc"}}; +} + // exchange class to be "deserialized" from lambda state class exchange { books_type books; @@ -143,34 +135,34 @@ class exchange { id_type next_id{0}; public: - void new_order(new_order_request req, execution_reports_type &reports) { + + bool new_order(order o, execution_reports_type &reports) { // validate order - auto instrument = instruments.find(req.symbol); + auto instrument = instruments.find(o.symbol); if (instrument == instruments.end()) { - reports.push_back({0, req.id,req.trader, exec_type::rejection}); - return; + reports.push_back({o.trader, o.id, exec_type::rejection, o.side, o.qty, o.price, "Invalid symbol"}); + return false; } - if (req.side == side_type::buy) { - auto size = req.qty * o.price;; + if (o.side == side_type::buy) { + auto size = o.qty * o.price;; auto balance = get_balance(o.trader, instrument->second.quote); if (balance < size) { - reports.push_back({0, req.id, req.trader, exec_type::rejection}); - return; + reports.push_back({o.trader, o.id, exec_type::rejection, o.side, o.qty, o.price, "Insufficient funds"}); + return false; } - subtract_from_balance(req.trader, instrument->second.quote, size); + subtract_from_balance(o.trader, instrument->second.quote, size); } else { - auto size = req.qty; - auto balance = get_balance(req.trader, instrument->second.base); + auto size = o.qty; + auto balance = get_balance(o.trader, instrument->second.base); if (balance < size) { - reports.push_back({0, req.id, req.trader, exec_type::rejection}); - return; + reports.push_back({o.trader, o.id, exec_type::rejection, o.side, o.qty, o.price, "Insufficient funds"}); + return false; } - subtract_from_balance(req.trader, instrument->second.base, size); + subtract_from_balance(o.trader, instrument->second.base, size); } - // create order - order o{get_next_id(), req.id, req.trader, req.symbol, req.side, req.price, req.qty}; + // send report acknowledging new order - reports.push_back({o.id, req.id, o.trader, exec_type::new_order, o.side, o.qty, o.price}); + reports.push_back({o.trader, o.id, exec_type::new_order, o.side, o.qty, o.price}); // match against existing orders auto &book = find_or_create_book(o.symbol); if (o.side == side_type::buy) { @@ -184,10 +176,7 @@ class exchange { book.asks.insert(o); } } - } - - void cancel_order(id_type order_id) { - // todo: + return true; } wallet_type* find_wallet(const trader_type &trader) { @@ -208,12 +197,18 @@ class exchange { void deposit(const trader_type &trader, const token_type &token, currency_type amount) { add_to_balance(trader, token, amount); - // todo: notifications } - void withdraw(const trader_type &trader, const token_type &token, currency_type amount) { + bool withdraw(const trader_type trader, const token_type token, currency_type amount, std::string *error_message=nullptr) { + if (get_balance(trader, token) < amount) { + if(error_message) { + *error_message = "insufficient funds"; + } + + return false; + } subtract_from_balance(trader, token, amount); - // todo: notifications + return true; } private: @@ -276,8 +271,8 @@ class exchange { subtract_from_balance(seller, instr.base, exec_qty); // subtract sold tokens add_to_balance(seller, instr.quote, exec_qty * exec_price); // add balance at the execution price // notify both parties - reports.push_back({buy_order.id, buy_order.request_id, buyer, exec_type::execution, side_type::buy, exec_qty, exec_price}); - reports.push_back({sell_order.id, sell_order.request_id, seller, exec_type::execution, side_type::sell, exec_qty, exec_price}); + reports.push_back({buyer, buy_order.id, exec_type::execution, side_type::buy, exec_qty, exec_price}); + reports.push_back({seller, sell_order.id, exec_type::execution, side_type::sell, exec_qty, exec_price}); // remove offer from book if filled if (best_offer.is_filled()) { offers.erase(it); @@ -305,243 +300,4 @@ class exchange { } }; -void print_book(FILE *out,const book &book) { - auto b = book.bids.begin(); - auto a = book.asks.begin(); - fprintf(out, "id \ttradr\tqty\tbid | ask\tqty \ttradr\tid\n"); - while (b!=book.bids.end() || a!=book.asks.end()) { - if (b!=book.bids.end()) { - fprintf(out, "%d\t%s\t%d\t%d", b->id, b->trader.data(), b->qty, b->price); - } else { - fprintf(out, " \t \t \t "); - } - fprintf(out, " | "); - if (a!=book.asks.end()) { - fprintf(out, "%d\t%d\t%s\t%d", a->price, a->qty, a->trader.data(), a->id); - } else { - fprintf(out, " \t \t \t "); - } - fprintf(out, "\n"); - if (b!=book.bids.end()) ++b; - if (a!=book.asks.end()) ++a; - } -} - -void print_wallet(FILE *out, const wallet_type &wallet) { - for(auto &entry: wallet) { - fprintf(out, "%s: %d\n", entry.first.data(), entry.second); - } -} - -static void print_execution_report(FILE *out, execution_report r) { - fprintf(out, "Execution - Trader: %s ", r.trader.data()); - fprintf(out, "Order ID: %d ", r.order_id); - fprintf(out, "Request ID: %d ", r.request_id); - fprintf(out, "Execution Type: %c ", (char)r.type); - fprintf(out, "Side: %c ", (char)r.side); - fprintf(out, "Quantity: %d ", r.qty); - fprintf(out, "Price: %d\n", r.price); -} - -static void setup_test_fixture(exchange &ex) { - // // setup playground - execution_reports_type r; - ex.deposit(trader_type{"perna"}, token_type{"ctsi"}, 1000000); - auto x = ex.find_wallet(trader_type{"perna"}); - print_wallet(stdout, *x); - ex.deposit(trader_type{"perna"}, token_type{"usdc"}, 1000000); - ex.deposit(trader_type{"diego"}, token_type{"ctsi"}, 1000000); - ex.deposit(trader_type{"diego"}, token_type{"usdc"}, 1000000); - - ex.new_order(new_order_request{1, "perna", TEST_SYMBOL, side_type::buy, 100, 100}, r); - ex.new_order(new_order_request{2, "diego", TEST_SYMBOL, side_type::sell, 120, 100}, r); - ex.new_order(new_order_request{3, "perna", TEST_SYMBOL, side_type::buy, 110, 50}, r); - ex.new_order(new_order_request{4, "perna", TEST_SYMBOL, side_type::buy, 111, 40}, r); - ex.new_order(new_order_request{5, "diego", TEST_SYMBOL, side_type::sell, 112, 50}, r); - auto *book = ex.find_book(symbol_type{TEST_SYMBOL}); - print_book(stdout, *book); -} - -static bool print_error(FILE *out, const char* message) { - fprintf(out, "ERROR: %s\n", message); - return false; -} - -/* - commands are in the format: - buy - sell - book -*/ -static bool process_input(exchange &ex, FILE *in, FILE *out, bool interactive = false) { - char cmd[1024]; - symbol_type symbol; - token_type token; - trader_type trader; - currency_type price; - qty_type qty; - execution_reports_type reports; - memset(cmd, 0, sizeof(cmd)); - memset(symbol.data(), 0, sizeof(symbol)); - memset(token.data(), 0, sizeof(token)); - memset(trader.data(), 0, sizeof(trader)); - if (1 != fscanf(in, "%s", cmd)) { - return print_error(out, "missing command"); - } - if (0 == strcmp(cmd, "q")) { - return false; - } - if (0 == strcmp(cmd, "buy")) { - if (4 != fscanf(in, "%s %s %d %d", symbol.data(), trader.data(), &price, &qty)) { - return print_error(out, "insufficient arguments for buy command"); - } - ex.new_order(new_order_request{0, trader, symbol, side_type::buy, price, qty}, reports); - } else if (0 == strcmp(cmd, "sell")) { - if (4 != fscanf(in, "%s %s %d %d", symbol.data(), trader.data(), &price, &qty)) { - return print_error(out, "insufficient arguments for sell command"); - } - ex.new_order(new_order_request{0, trader, symbol, side_type::sell, price, qty}, reports); - } else if (0 == strcmp(cmd, "book")) { - if (1 != fscanf(in, "%s", symbol.data())) { - return print_error(out, "insufficient arguments for book command"); - } - auto *pbook = ex.find_book(symbol); - // todo: return book in standard output format - if (pbook) { - print_book(out, *pbook); - } else { - fprintf(out, "No book for symbol %s\n", symbol.data()); - } - } else if (0 == strcmp(cmd, "wallet")) { - if (1 != fscanf(in, "%s", trader.data())) { - return print_error(out, "insufficient arguments for book command"); - } - auto *pwallet = ex.find_wallet(trader); - if (pwallet) { - print_wallet(out, *pwallet); - } else { - fprintf(out, "No wallet for trader %s\n", trader.data()); - } - } else if (0 == strcmp(cmd, "deposit")) { - if (3 != fscanf(in, "%s %s %d", trader.data(), token.data(), &qty)) { - return print_error(out, "insufficient arguments for sell command"); - } - ex.deposit(trader, token, qty); - } else if (0 == strcmp(cmd, "withdraw")) { - if (3 != fscanf(in, "%s %s %d", trader.data(), token.data(), &qty)) { - return print_error(out, "insufficient arguments for sell command"); - } - ex.withdraw(trader, token, qty); - } else { - return print_error(out, "invalid command"); - } - // TODO: convert the execution reports in standard output formant suitable for parsing - for(auto &report: reports) { - print_execution_report(out, report); - } - return true; -} - -static void process_inputs(exchange &ex, bool interactive) { - while(true) { - if (interactive) { - fprintf(stdout, "Enter command. Format is: (buy|sell|book) symbol trader price qty\n> "); - } - if (!process_input(ex, stdin, stdout, true)) { - return; - } - } -} - -static void print_help_and_exit(const char* program_name) { - printf("Usage: %s --lambda-state= [options...] \n", program_name); - printf("Options:\n"); - printf(" --lambda-state= Where to read the lambda state from\n"); - printf(" --setup-test-fixture Setup test fixture\n"); - printf(" --interactive Interactive mode\n"); - printf(" --help Show help\n"); - exit(0); -} - -int main(int argc, char** argv) { - //unique_ptr state; - std::unique_ptr state; - - std::string opt_lambda_state; - bool opt_init_state = false; - bool opt_setup_test_fixture = false; - bool opt_interactive = false; - bool opt_help = false; - - // parse command line arguments - for (int i = 1; i < argc; i++) { - std::string arg = argv[i]; - if (arg == "--lambda-state") { - if (i + 1 < argc) { - opt_lambda_state = argv[++i]; - } else { - std::cerr << "--state-file option requires a filename argument" << std::endl; - return 1; - } - } else if (arg == "--setup-test-fixture") { - opt_setup_test_fixture = true; - } else if (arg == "--init-state") { - opt_init_state = true; - } else if (arg == "--interactive") { - opt_interactive = true; - } else if (arg == "--help") { - opt_help = true; - } else { - std::cerr << "Unknown option: " << arg << std::endl; - return 1; - } - } - - // handle commands - if (opt_help) { - print_help_and_exit(argv[0]); - } - - // map lambda state - if (opt_lambda_state.empty()) { - std::cerr << "--lambda-state is required" << std::endl; - return 1; - } - if (opt_lambda_state.find("0x") == 0) { - auto length_index = opt_lambda_state.find(':'); - if (length_index == std::string::npos) { - std::cerr << "--lambda-state must be in the format 0x:" << std::endl; - return 1; - } - auto phys_addr = std::stoull(opt_lambda_state.substr(2, length_index-2), nullptr, 16); - auto length = std::stoull(opt_lambda_state.substr(length_index+1), nullptr, 16); - state = std::unique_ptr(new lambda_state(phys_addr, length)); - } else { - // dd if=/dev/zero of=lambda-state bs=1 count=8192 - state = std::unique_ptr(new lambda_state(opt_lambda_state.c_str())); - } - - // initialize arena - arena = reinterpret_cast(state->get_state()); - exchange *pex = reinterpret_cast(arena->get_data()); - if (opt_init_state) { - printf("init state....\n"); - // initialize arena - arena = new (state->get_state()) memory_arena(state->get_length()); - memset(arena->get_data(), 0, arena->get_data_length()); - // create master object at the start of the arena - void *root = arena->allocate(sizeof(exchange)); - pex = new (root) exchange(); - } - auto &ex = *pex; - - if (opt_setup_test_fixture) { - // setup test fixtureexchange ex; - setup_test_fixture(ex); - } - - process_inputs(ex, opt_interactive); - - return 0; -} diff --git a/exchange/state-mgr.h b/exchange/state-mgr.h index 2748eea..a3f7498 100644 --- a/exchange/state-mgr.h +++ b/exchange/state-mgr.h @@ -6,7 +6,7 @@ #include #include -constexpr uint64_t LAMBDA_VIRTUAL_START = UINT64_C(0x1000000000); +#define LAMBDA_VIRTUAL_START UINT64_C(0x1000000000) class memory_arena { uint64_t m_length; From 60dd0090153bdce010568ae2d11ab48b7dcb5715 Mon Sep 17 00:00:00 2001 From: Marcos Pernambuco Motta <1091485+mpernambuco@users.noreply.github.commits> Date: Fri, 20 Oct 2023 12:43:39 -0300 Subject: [PATCH 9/9] remove init instruments --- exchange/Makefile | 2 +- exchange/exchange-cli-emu.ext2 | Bin 8388608 -> 0 bytes exchange/exchange-cli.cpp | 1 - exchange/exchange.h | 22 ++++++++++------------ 4 files changed, 11 insertions(+), 14 deletions(-) delete mode 100644 exchange/exchange-cli-emu.ext2 diff --git a/exchange/Makefile b/exchange/Makefile index 5580ce8..9541175 100644 --- a/exchange/Makefile +++ b/exchange/Makefile @@ -87,4 +87,4 @@ linux-env: $(RUN_LINUX) /bin/sh clean: - rm -f $(OBJS) exchange exchange-cli-emu exchange-cli-linux + rm -f $(OBJS) exchange-cli exchange-cli-emu exchange-cli-linux diff --git a/exchange/exchange-cli-emu.ext2 b/exchange/exchange-cli-emu.ext2 deleted file mode 100644 index f061e5389d18b059411686e4191e723785360032..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8388608 zcmeF!Jx&5q5CGtTg+j2PFvbpgBUca$Pv8msS$`750!%EuhBxqX#>B!#6CE%F4E8Jf zO)}Zpd6T@yx7lQg5CjPPTY*9T@?OM4En=`8@vvFvVU?l3PFGX z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk 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� zf90+h);q22c!yef_v_qBF-v*ikLJp0S(m<*2YyAZ{4%xjQPs+P^jPrPk;_CYmvJk9 zy5pg>luxXe30i&sl&x%8HDayP%G~#;mEZXN`i@`GScmb~#}YRT``__Ukjq+Dl zMBvFr^x+{;qKBl^IeQ|cPSPqK!uS=2rWF*f6S8Z+`w?d`?uLn5C*C?`+mt(J6y)bT zP;kn+4F#t@x}jh&=)w@tg`uDeXYGRJCuf70XHd;owyCnZA{RZqd_1*?N?ucPUkCFR z`Fn)mEnU~ZO0~3baaF(KK2=ML7gvH`RJ*y%gB|zu+qHk`#KeB0($~F0oa?C-g9eo4 zC|#xF1FWxK^?Q8rL-cIhC_tzgfaNa*+SoJ`v#OkB*wRV&B@&@B8G% z4@2Nk;C0=gv)zlwV|*4Bl;-ThsCAL&R_Z*qCw*cv$Bk+v`E8$s~ztflP13l{Q zbNb@bqnCVk3~186&RobG-M_fK-_ObNxa<@0{@(}TFO>G-xhq~I?K7{nO+9;K%OJq1 zZLlK_1hy82O4fJW`z)2U{PeHDx=A&l{0lzoOC?J<)h=uM#qF!3)J}mXT?bxyhH)z>Q_rAZr(>2_r2#Kg>~N;k^5}k1*8231^?KfTaQS$_2R`mIf%6@Wc6V8zUaKCLI2rwpkQR_*RsS{p zsN8EFD=1yJ7xS@i--XdZpY@e*b{s8hxceTxhNtgeKK{!a(7JuAR=j-xE&CKB`0*hV z%pUl|HTYYM z;ZOGuy-t>P((P2*i_58;O%1?cE@x35@SAKVTu#@O^o+{s>PJvf;+H^A@m}HSLputd z_}fO%0HS4~t_z{}?pZorEg{{@Qjoj&(3o%kwj>+<(C8x|AQ6(fAp$K22S?$-M{?iI4Vq#OrU{9Ibv z#R@p`!^Mu>z3ZIr!=)A=W_-rZFRj7YVAiQ;E&E`*msZIBe+ zT0MIC2d&c+4t_JbDfCz^zHc+zJBu@1$rXXflXHhS!5 z0|zbdvw3IN(>DxS(P!f-{Qc4#(CWW|etvgV$KuTe8*@Vik0L#R^h>0TxfsjbzF0Gx zcZTu~m2WLpboy@0&n*gT>C*Be?LH`LAK9T6PyC*=;pCNFu)br|8sG}}*iE2feL|y`lTC&!GWMIS z-96j^$y!>ix?Xv9=nBlzzR?}fPFd&c*eGV=&7FDqg#C6oPXASlS4XK=cSfV_pM|Ig zUtUAMoqjl4CBX~U^&E1)@jed2bH>rBMZLdz z9OYmAEVXI%9P#(t;_oZO-|vaPTg2Zx>EAo&^rQSTPn&>$3<(o0?LsuGQHVX;z>2)t7wM%s?WgCkFZU(Pc^VR%$lZ0*qfYKi=dIYjwrld< z>AM#VBuZE?@KLfUkeyaq9P{#Lqj&p=y5oJq65>1b_ug}_d+NIXkGZ#jkE*)%{twAW zkW!fnRa&VW2?E!PlG;=wr7&UyN-3mBky?}i!kZ!)Au3pI86^<(Qc0C+v}s8(mr}}= zRH;%+&8SqVa%HaNX{qJPXsM#*nkhFzfWSQ8wf8x5&Y8?xYVZH~^8tSI@;iI)wf5R; zuf6s@XUG%Rj#&Nt>dnFKm9v+>xO|oxyS7|fe>G>h0=t&_MM_5!npTrNnLoXb^U-BKX^&1#P`ukUewN9+?c>TD0$NgsPC&!+1{rR76 zjZLn%N)Y=wUSCC=(C*l>BJ>R7)?Y5Q5N?b`p6D<(gy z+qHV!Ll@5Z1iqYBHjojbeJ@EXC*LQnwBnkdb47G?N9R&npHgcnrJ zjSiv%hyzsLMOPls-q4N0a>& zUHMm6KSeiwV7-$TL|e{E@6T-2{j%@-s-L1WKeXQSw9Bo*o|W%bk6r#1SKJ_@*3~z7 zAN6i^?GD-}y>qs{O8#%SO-29Fnd&nw#rhvO{?YAi3uUf}4>%=Jj(QzUe3;&sH{51> zgA_ke<$UgVX;qeAo{Qm>=6oxyL=XO0an|pN4AOtEOK;?91ldXt4$k_0O6j)Ww*C96 zS8BVBs+El4oX^V4U32!pWNiBE!O3%OI8h+)ZAQsCbNZ(+cE3kFC;OX@ZtU_^58Ys| zgY55@-{JPlj6!B3pQ^Fu%)!Y||Af;xtjI>K)}A^Cd&mh7`_p%<`R`5dZ~n`xZ->Qu zAA7Q8WlZg)lkV0_{b2HpHUft z8&3FW5xX7y8_7S@*REQ0T(#)9)uQ97Ma)a8MPSWwyG6m_|49~3*Bk!4u6Nbo@-yDL zgY&=9*ia!6q0N=meV^K&a8}CQM&moQ(aB=C+sJ;2ubnow)5cS(jqR$9oM}>8YgcWQ z47F$tloL)`Yv!frB-M2#~DXY{|s#MmIF(0L#65T%mDp^h) zoJbZ|Bsyi+6uwwn1>*~ii;NN*d3wx;{dV-ZzsP56!n~L~T2bNEzGKg?nXqQFti|YQ zV;~+bekkf>p?DDyauQYjhv@Mr=hCokB{!md@ylH1&U(!A6_5Nt~ z?^C>W=kn|Lt%Xdpf!GRtV67L_`ImTtb09YV^LKPVGw|f#kHT_JhF#SiZAjgQR@y|mYR?d(aL?67;cvzntA2B%QTXzFW7W%d8-=gb8mnG;)F|$;`@|DHDvuYR+xNs1 z=lV_*_iQ@;L{IjzKC%1w6Q9_Bytvolq?`ruov?M0cwgR)S|d_2!u)3SWwoqJ*imLA;3HMG%pc)=jmV+6XmH~P z$!xZYP&dA>BGl-{`$w(*AT*(RYxO^+L@c)b7H3)=s~jL>_&{#UJBS)o&6n`ePHdyuXyybUTt4X3(QL z@!29-CRQ0ztJ2{jONaD^?60ZJpTBWjQiuAS=&_^@_4~hR9Ztq_^w}CYSM#|$)*Rh* zWb@%yV`0Bq#g?&ySGxNYV}Br?{EIcGRF=mdxeclC()wLk+iFK2eZrsc`t*Ouy3xIoiEjS@iB99m$+E3{UujLUou~NZ47R;!Ywd>X3Wt=R z`cmz?fo?oIJRaa4nCS2<8k?tU*6)l3yepB}#>Z@9or3a5`1G-t?j6^S zy)3m(@rQ5a)EW__Iw4@ttD^F))=r&gPoY9u%dVgeP z*6(wT=9HX~BY~>j2un^xW*s9|n7$s(OP_g4pNo;4r}K?dqaE)P!PxWuMY{HM`V+P= zg`vh)eC6rPY)cA%w10XjtnYJa%U^fV$GSeA5I-ncGx3A*0TL5QrqMIw+Ut{~K3*we z)q|v<#M*LVr1PppPTJ{wEAtGRAr=wMJo-eT5BsjRbTso69?;s2lwGBov#X0_th~@7 zuie>Gr(as5leekS38Vg{)@T*0f60!f*971HRI&s2{Y;_I;1B`5EDM2~DVMGmp% zBztM(Z+)j)BP-v>A2zCtg{&eA=A3)NP|-0b4_BUWPQczzb{c-P>R-{t8S!|Ob@H*- zurleVlcIOYjQLKIiz)TVxk){1#O+zcdf%#Nk=8o*EaD!!YRp6uucg(A%CDp8In*lvcHlDI(+OuLu^oWjuuTowk(()Vn>NLLjj6}z(MbWC&-3-T*I(DW; zwB)g4lXZ^D%IczjvfYlZzIn%*woUQPM_)bi`r)u-P?fDbRm%=;J2BoV^ma<^l@cFb zcE9t^2)({~0@=7jkEj-pJj``!)g`)%3^>t8ow%(zEf&Qb8gGfy!|J=42hr9kMy=$! zBP(|x2X>Ws{fl}xOJDz{>h%a`wrX7L*noePy(#%bu5EcyvqraW4t1}7w{q;l%?sx; zGrRiJTEP%ubRdoB>`ZH9^lv${d{s?{?!B3BAk~@gy@tKAgHrXrj50Fnk6yw`j$PXe zRUD+R^qV)xnFr}@>W?4#gH``~POqo#xX9{c6}3|OS^D>{GCwg=-eQ)QH6@?T{JCJd zHH!M)-*^-CskKV%Tk`71MU)Wh{ejbmokoK{cvH4-4dMfceySSg*3T__I}d=iDEw)NSJ%Rbz0vtbg%eDtdIsj_D+e$vP}4 zS>%)HBnz{mwj~Q!+4ThO=qy=mN_NQtAuXACgIlu38`4Xr)`+ytuF)ix`>97Vw=LRp zE?QRh8@?w~bY|O@pVKw&2roIerTFo5vvz9D$VH4AS?O3=D8no(wQCESl4@FUJNj8=VnT)zv+39gZCobsqSfksbg zt1Y>fbC&lOT_K-{ZC1!V2;@P0$2r+TG;n__c4oidHV~7 z?Qz{&iP6)2U!(SLCF7{(>a*V~(zABW8D2@gj57P+wM7Hsz4aY~iT{>ZK=1pZpBu>D zbddQBsPjlN*ZdCtnbgnugwK7)CHGuI?)jG+?;Uc{A5L`p<;EZU;lhCA@A&qkK5KrW zw0v+ft1>CI;NBt6%a|2!e4JCitY$S!zUSO%8qV;?gd^WSw3abbJnYwp)lXfhq3$Q6GmlwaksuFpXla0SzOT6{zL&M#S3@0KT*gjUf<#NC*<_5 zL@3wk*sQ|G305L9)As}@Iwdm(`Z~zNN~G4VJZGEaBGF(+7us@~ww$6Zr)kS++H#7v zoT4qKXv-(`u7ZDFLVwtyw)&=yY9s^qCkd4+yD z!TXQc^PZ;AsOYV&|Ju#nF>{Z)=5ySm&VO#Y zQ5WS?_o$1FFHVlSeViP3kGg#y{J$P`8=v`qHtJ$6ayN+@n;A!4?9ki7=``wMiKE`n ztq~PF^j79FZO-WT;hgD$rT;IEx|Mj9|G$j7mO4G^s$TJqI^%LZ>LQ#E!jm7*chogr zo^I3`gVDZg)TPe0;>Q{BYMu|U% zUuS9*63EC*w(iT`viQVz^oKnq^4%3doUyV)bn9}ae*%Bv{3G|&NzdZV~2PlUKxiNsGYu=DG zpFeP|wVIVXC&?rDWHs$Mi)7~^-&sE99*K+H(poYYb-f%JS{`>==H_Y{BHVFlYo_sQ z4l_R)8oyx6Am=-68G>K`I5MQ#USlwq9hl@x-FBSK_EPg!ww&o!6=8NfoK;02?W)3X ztt!m9%NH*XCU?YK)024)_vs8Y;{Vjf_HftA4f{7eflh(mFdddJ}t3YEvMa0u>9;DmIvaT zw&P3Oc46^cJ9zGI^&jdMx=h}#dN1o`A%|(esf;u{H-zH&fkXd zJy!nKZ!Q!WJLhj5t5&{;=tlKa^Kgm(tvf!_Tbb>vnDZ>1h37hb>b4S_X~jM)##6<%#%)E*=-7D$R+9TZHwx3oj*K3 zyo`{FXu`2@XSdENLzj@$R&p)uJF}X*LS*~|*dbQ24f`xDl1=8b z@T_9=x=QCmcyG*>HcHm!kI!b(sr$U6BfDiav$C}}Tk9Ih#-_F|c8j-l!I^(=>r%#u zKX$XbhjhDa??WBxJXCCEH)F8M5!fEakyhHF=YR<9c1B53LYK9!vUB(TpyJwD2d6)! zv~)Hgt=6N{o#{4biLRY-XWM|5k$jn+G5%~@iL*b$?u?xJx6VuO6a#kj4!2VpQ8yWV z_N7#Ydgf*K^VvzPgJ>#wc1>b*-b-$eZ?ToS&mp))$x^I_NvY_%(r5cGxhI%Qr~?Q-*;45 zfbgdY-`W@VSKNeDd|JZkIXmjn5t-ZGrS;aXsJ}Vu+D7>=+`S`eXD| zYW?N_Z~cv`*QGb|izDs&wf5|2INhiAiR1}?oAlr8laAz6av9HkD&5WgsP7}rMVwX^ z!oJq%4(VCtK|kUdVloyahbXgy8NS+*fp5Z}vqma+OYp>;t9>VaDW`Fc7xId@#Xivl z)8Hy*rS{e1c>ctxhr3tHX#q~m*0fvq$(gayT*=)Gs+^PTleVkVj#4Yv2gejrE_{8u zz%-2~3W=yxZQS@v zX6DAxzg9DIW6KM2zotHa+;jN{3)AnHIkpuf%beP`jbAGE*p@kxw*4KpC0E%|ZmwP& za43B*O20Y17-U~UwN`ZdrF?raHZ@l-M&zVQ#$F5r=?kY9{qc%Sy%_i=<>b|i!#{L- zF>n+8_e1H$Lyfu@XZ~B~Ud-Sj<5mA=d&n5Eq1QtOzKP^HVk~O*##p9WwIt_*-cNlj z4{7)pXghFXEN4DQiPz1DM7PN~LHop%c-@R}PATUqjfd{KOLE6dsdXARrdz>&thnCb zei^;CG8=EO;(8<66Wg`#3nE?!vhyGjFC+O(tLgV!vyxt0nStrbx=V5C$-(}BldHztuoo%%7|@q zp}wg$7v+;&HrMh%s?Ejm)=mtvkMBQ5TyOf%&1`e>jU9v3(biOZb8@EjoRYHgmu9?= zw?y}R%{OP<+>%da=X%y4X2p43VTV59WxFj~zOf~XV{Q3KR?*X2Vya}`)`p6_?2Pqu zf4)<{n}xlfZ8hU*Ph3mcl2cX4vjh}!FTEY5WQm)Yv1H7uvy;T|-+N82<;12s4a+LS zj8lr^gVIGBNy*)1*%@3@&iQw~K9iqtS}N_ZXF<0f^ykDWD>7-yVi@}QG4+x3#*jb7w!(f37vd^DL}&G_h$%v9Vugty$$- zIyD3QhKtB8Pv%Y6ia^TVqccz1wqj;vpeaUGm=osdJJ#h`=RdyAfU8c^RcB|5R(2CR^st(x$f8t?Q?t|=C%@9nCw5*%_PN~c z&NNzW-x{oTYuO$b6XKJOVgsd3>W(N{z^Ws%)Sf5JJ0%YA$x39&R_j%ajLq|FCg~iJ zY3kiiH7*L4zq3$ViMwCyc6F9lvQL!GSQ&6eB4l!7X7Dce=yl}Nwv=tfm7eR#^;lBk zZOJb0mlM@mGAp7%&iH_nN_Os>J9JXX&Z~{5(42ar_bMHQh>m2>RN@Zq?Xq(_m*3I- z!+{?Res{tausF7@i~8^_Es{3|FpGM_6qG?w%H{P=KnrvF2wuh>R%jrRG3@4v=9qQ@-$U0c_%T9c<|9J5zz z#@)1;ry94(xwijdwRUXQwpCxO`A}aGTc%>Sk%!~*&9Apf-SFfoTmELrBNJQKd`KU0 zpT*YNIctji@-6<(k;aU3T0-xA+VcERJSp;2^iq1|Rr4p*`Rle3ta(KzC7gQk@jL=) zRSoy)4e9% zM?cNxBU=NpdDQihRo6#S*EhF5+}-y#cz>h5<2ElYXMg2X{yAnDS76aS5x#}sZVw}&{5d z2v77Wcegm}{}64Gm80lM*8j&Ill>CQq9QlA_4LI?MRlR;03X7HAyH>>*4 zQDU?0En9vOQi8FPEfAp8HU$sGS;gs)5QEyFO~-clkey>}3t;2Dq2PM^8G zC8s4ic}sH;ZO-T|!*kuX?eUg|Nh@9B@2B{HwBAzg67l)~+grw#DZSze0(fPtCFv~# z*I+GKyrtN^mOL`TEqU)ByS?RPqTk%!(&$TFd3Z~s1Wjf1ma!>rO?kYf5iW7Jao;0o zDy_FPzLu&fx3@IE+SywM*z?KeEltioXgviybKCj{-QIHFp%gu(^_FtCb3WcO{5jf` z(OU)sZaro8mWJf+Keo3tZgP9e@V9K=AW>yDFMy=Bw=^1iX7!dv%zmj)fYhhl(->ZGY_)LD^!SRLqxd6_Z2`|g@yhi^; z`Xl?=SR+BlWj|%*a>xR6m#TCZ5(qMoa$d%$5~79x>4xhL|Ru78jBXS`CWr$C;p|Eu$>JMwIhWZ$v& zM&>iE(d{RcHn|g;d+X(iil&?|N0WRad%Ha6W*p4TDayUk;ZRSdu0uUwFH^*Xsh(_Defv2 zFDLKlXL&8sM5J|+oj=J6qIvSaZ>{C&r}{fXp5k#0XCM^Q2;8ho{zeNCr|euwFLv0G zsd+7ZBYW{u7f?k&nq8!ir-_Dh*F+mD!CQWNxbE_#7vxOGGpu)Sr*^C{s&%9StzHS;v2CK zwTFbZ)&8Cyk*7To=PBt^N)ET|5sf4x&eIZc)~KA0^hNk8(VaJEp3`3bUCO4ljIwZP z(q1mf+g`T1?Zy0JE_(@=y6t87cir|Pw&d7LP{s*Bz`+rN;{=cAe|9dT6&cb$ajx_v5?m4nIIg<=? zq(4$z?97q=;3e|TGe;U`cUqWSFL1+m+A@gCKaRGtok;!|`CEU*cUC3y zw`R9=`CI9ak5fa`RYRkzhV-!_wnZ+`EMPp^YvSmk|FYJ^(T#6OoH1DPX5u*&Gu5u| zxTE_=1OGPozbCvu=`Y4->~kWpKO)8;x5qfw_t3`^2b7;X&Z&+fiN-kp!3;`vil@CX zv&gT8$zAkDKz0XZru~SSHoE?Wt+k3jj?-)MTT$v7;f2^e5HG5)^2-yhsB7-Ch3eFR z@3=b47+)D9pP{b&rDXEB$GKvqlGeVL-{KAUBYUH-klm4Aa*+InolEljS5k*MV}k4_ zX>I$j<=0;1w;W7zAG+o8F5ZHVV@!OcqwLmSq?Bl9o&53TlqeAfcajrnP$H|P63H$3 zB)25bzO!>nezO9uI++6Zv~UZp-#>H53tK}yt3RlmuyE_buceF5{L$sE)snwL?N@B- zT5c(x*p+p)#IGDnzvJ?jP^ z_f~{B>qu#5`^~AB=!NIU9QueJQO}X8Ia^%wo@X!8S+gh~YL82QXi;*E`YWpbH^yk( zRYTNOLzXe>uLvot)$6(F#wYAC+7d|_qcG7yQfD&vWE-QCU)AGAjg9!Bf8`zHv1?;= za&4wDTJm}K7>!<`>q;G?GapVJqoLcCv?*gWLF>|w(Gu=+$}mR#bye;$y72+m7>%@? zPAM@tM&X z=`k8f{59V(x^I29F9x+Y{2yc3h`@oBNc2@?+6MVKv^* z@J!^XTT}Al<~M9hvG1ShoELY;gLcFy8f4b;hbCsyUuq1U&iZH{`wk^!sgn^zY+tkG zo#LZUTUqtk>UseZ{RGZ8i*^mPGYm+MFq??vGA%=RmV$)guFTY)zk4_eW=?=8CPXy1yi-^vbSl-AwTn z$*j5&zm74OIjipX-(pMd$*MPl8U(!vVC9(h@_>Y^TB|h`TnNxv1;cM^!e>p39u;?K4SfBX{@H94%lWYDOy=;FZH+Xgy{A-Y&sU2{KbSwb*m2F!EWSca3k)`<{E< zI9j8C? zdB%P>`d2C*2({oZtrG-thd=M#tV1=QZWI|>L&HC^_>Z@SRyJ`aIy7L5Iujk*xJ{oY zNEJ*pL=XRgylgY9NK`C-?V0W2?ee8K`{J!Wx z`lNz$wVRS>Hr+ML*weK)lVv$)EWM~~)ctD#IcthcZvV&BJ;)M1|Z7KF>pIGxZ8%l%3jebLAkU5zWT)9=w=kY4?9a+&@=kxr5l~TWb zwq%pK2eGrhSmBYOl0I3J{ujrkiZEvcft+bpS~qr;X|(L~sKW>K`|UL>l0!;$bF>mH-f zq z?si6rd+g}5mO68uEZvo7LGI*z?|L)@s(D7X>}aZI72CCC$v8A0Vt3TZ3ikdt-sR3X zL`SpZmdpx9hKDm`9HOn{Gm=@s==wdnu9S>Jbo4W+83z+P=VC9{If8{1M!OlBM+Xfe->gAw8Gg|22CocUOK>uttt=6+@@ z5l@7tCHq$A)BJKLSm)k$dlh9}%$%*Es$b}pzS>{L67BJop1r;)Jv*Hh>ee+*Ot$6E z)Qa_|T48EU)=6T1htKQN>=B^jB=OH$Gw$oPw=^!deTFgFT}GFDhL8Qt=hP_o8$&Ih z5gGot?K4_;**;_YuWg@E^}N?-M80DCjNbP;K4a#_)=+QO-mRhSPivnsd}mjDM#~>W zgCECdWE=ORce%!WH1S4$<9;LaOLE*dOSUuZZa{Q9YgcF7%P+mB*$s$p{B7#EH@=i+ z+&2#AY;O8YV}w<0rg3k4!Zq%rhhBG&`vJd5DKRh(;4ahX^-PWBP zwZQ?W(vQRR?9uP%$F@hF@z3s2?<;k$?SHLao>iW__r;D;yzz-1k@D-% z)+<&+U*Kdrb#**_wf;pr`K<&_MFd-T){o@98k1~ept3mGzj5vYtQ&ny))AZ4FRSV+ z!UL4X&dm9%IxR#Qk&CQPmdP(Ss8WgWKO^T!Jh?;d2|MKmBZ+1?8-!1k=jHQSXGA(Z zz07lR)`^8|&Fee2@Fk3Yo?+B)YpwpJG23gW^TTAHd0NCOPU#Zst2@4EKl6rhq4csH z3nZ^}J?~<}oI-lgK56uHQ9SU>qeKB``w+j7*V0eoij4j-y3gp3Y%iT!zLYGw`*D$a z?sYKnY%vkcDq2SCNr`HeU_s>`87>e3(kD2+vBzyk<7A~=m2IG z9WO@=yIpp~?41`=Pm#FgRI8&Dy|3iFyj$=49+Z01>)r7LqT_73Tz|x^%Z*RkZPqca zW7k>}>e&Rz$RoQZRuW+*TFc$D>hk zYjX72A!|y<3QKObt#I;hy;ew;1}khmt*vlnIDab~{Y1W282@I{ z<}52TS0q2-*Me+2c5BPA!r=$IW`&`tZoN9T_VKK+b)1 zu2aUjy|2`Hbk_}VkLk|eH)s4_%R=mw!m#U=@9n)`TMkD$`;(O4NAI;;o~eIUu9efi z_OGZr*X5%@Z*+*S(EAF8|1*vsOsi4%+RUiv=bj_nQrT^HYfE|4WKGQ%cBQ703v$<# zuKsJ(+CSyF4ki0L)S0xitTsDXZ930)FhZYJeVyhB57K&NK|Bi3wr)p)R5`n;y%{|_ zsORD&*9}foOUA&JkKoC!+`(~}T{a@wNY%a83=kQ9pFIP#-Y4GvRdt4zRkExwI8KMQPf#!=c zjUYAhT)NWxk@ifSm#&&yKD1}cm93Vpnn%Yw>#73VcIzrBX&S8@`qzB5(%e6(14}Cj zJbd;@UTeiGtJ{Kf-CE;hP>hn#c=hMDboB&N)&*(r&`OhgPSv>IQ+9H^xO!hQGyFmn z&jU`$%@`GG_t<$Jio0F52XJdSx$kL|pf$p$^+s{W-FUDtofrTOYVF6CQU znB10H!ZWoU{d+a-NMAD8U3;GX`e924(cW(*{q^@LCuMH)56RnKM@Mh=j`pVlMJ(%F1yw64|PlH_6m9|gi_8-Ia<@-M?KndUoSPhP=v3q*tg&5B{xGx zJ>HUxY)gm3NGqp`dLJly?$L+HTB~a+s@`(?()QBIlNs9Uq$`Iuoq0T2!sIvY64G%! zUan$2zQxJeYpd|?kH}ebqF9MWI%MY3Cxm?J-c|LUJNnrDP-m9Zy*EMmm1+G%G11iz zU!g|H!^^W4<%Gj==7NE3XZfANv-b|+z8>%g{IaCn<#Xzq z^AL0Hc@pLM&f3>J_EKv_?`;x!KUb@DE4|hF%GO$WVu-Dq)E<+zs%zxwK1N+nr{|n| z&tE^v-RGrEto8UsM(fwQi%Sp7({E1ly!IG92yTB{a@E`?E+xfVPCk6DI^EIEv-RKR z2}-9n%L$Ug*5IK(@_Wr=YdR*aS#^EQX@0BOh-RCE#2D6R|o5(S_f7C z>DIx@_Z=M!|4*%h<=2zH{cWlS!ryi@u=2NB1Cw9-2WWsfR{yF`5zkVVXhvdkV;Q!{ zz3SMnx`W-aUosK0I(952oyIfkwz0aiZhNoN_V}QFa)8+5kGvYb#@hRw5bwMO(yfhz zlsBf`Jnu*Dz?SFmvriyvBkS%CL;cQ>^+f)H<(DXXN%3uQ`E?w10?G)h9S?h^$=Y)M&<&&x{@z%dsZHaGx*J?{-Up>A=-(_M1?_m5`PghIdiq>Q+^l#&Ir4^$$ z>sD-k*KWmRJwM5Mtj=kL{Blj!Rv3X>-SfoFcR0EdpX-nHJ>2g||D(kvzQW?tzJO zs1j~eCFtGFmKWXa&eU_VQdM@+*xF*vQ~}bj~YE%gDbzcRXzD%yq;N|s;_jG zpP!Z@_jFB5ZW$ddwd``VlwZB3wO5vJ?_8*KJ1(VnM*qU8H+7~+?Hyf$yLS$4>00mf zR?nmI5%mveH_RSy2IFl#bE*6;gY-_U)0q1EdndfCYrW%^(dnH-o4Tqct!Hh+D<5%d zDOJnf`8Zgm+j|ZkEzh~A@esc(&wL!2`ILJua?Qt$E05^8=vwBY)>!IX6uZrti?+wq zTol;&&fh;5rJtkSa_bqL-)EWc)r{TGdIqZ{q8)UR1xtT_c$*;;Y6v?q0Ura^}V#uJX1cpR&YvI`gXI zZFNn-P&T=Xl5(flr1pYoW>4#cLb|+*!~&xAIWyx%A!z5I#m1HV9j$?xdpzF|Yu0o; z_b54s47tZu$;@eRu3H|D#+hB@>B-1_rnPzWzrmwMJGUF-x9A)#*&3I2+8TE>kS-f8 zbCm-ejm@TB&-ddm9BAIPo;99W^@>qk^9SPz?rN8EAFe6th7EPJ){W+Tkvd-z zA8?Eoxw1pfC=${Ao^Y*OyJ~5%>$LW2X`f?h>wl2GzJHXZ{lCYkCcNbYvUF4gU7 zIrhKTuAdftecXsO_g;@S1H+?E>pG9dmi1m;JG~*JCp8*%uQrs2sz@Z<*QXyT%7-*> z-({b%?Q>3`ptYi9A3NYra?19Ja%0t&8cy5pHr9^cJHBq>{)zP!#f|u=P4kW7CVbRp zPTjt?_qDox`}fuV&N~Y1`Ab^s%vN3b)R9=*7qRdsJIj>S(t4>Lt*dJN-|JCyz>`Lt zsKAy`+AR45d)J_|G>tyDG~Usa{Ys3KFOVgprzelDtCj#y7 zx68;%`F?Bd6}82K+lZ!$2T7)H_t}eTi@5u6&V~GT-;f&h?uGehE}S#qgwbd9y|1$FlO|4VgAFbPbAK{p6AM)+!QRRytbQ+ z=7H@K;ukg%Ko^`zCSefK?jiSN&!dF-tA+VUj$F}H5IRlLM~VZ&HjU3KT8MTT+v?XyDW z<))2yE}pwAG2sIcgC$uM|4LOYKVxT}>-|rEzQRvzstT)nV*xqV&5l7(}GKvn8bXzr55v-C^#f91lt^Q&C%<)y=Mv^a*(MN%!T zuy~!k*5Td2=gZ_fAy|Jhl_&bX(k6kKc+$S1E?%a3F{5O8*H4);c?xnbwdB6kGQisx zE?v5C@qBYm6&Aa=(zwGaclMpj)hl!_e=GT`-Y;Cd^v-$n7S35XcX72jYsvgOZ|B8Q zb6(XFlS`7t7)$5MC=h$f$QMfTg4tD7x8>jqCCQ&uWvcg5@zUkD&#qdeWxIRUqD6D7 z4TJCXOVuV)!nA>Z27%f zGz?lV>ZIX|=9*f4$b8403-P_?EE>CL?&4Xu&rO=JQ%+~8d zjm5VuuDW}%Rpkg%xbnx_J`BcgjpZ0h#7T7K-F_#UojuoFxL9=-)-L8&vTUSd9V12} z%KYjDqtx}%O5K?l%N2%k7n4rak`W_jer+aQzGzX^oS6*Cxl0%#>d)+1OBc?WxwLu- zPC&8dU}x1!?wnI?E@mP#7gtrAYDTd5&))v0XXNiggT5kveUIrs-K?(-la-|W>CUr) zLAdwh%sbK6N!-n3}fQ;i9`ro0oH?0eKnET3-+CuNVI`V!1yJU{q;m* z*SBfYltkhPxCGonJr99I~wt+pSCKBca zd=HKXw}6YlJ>UlLIJgU(@Qp;`D7XalUuYN)fTiI1(-Mgwcm-Gkjt94Z7f(+lV&Kc) zq&@u%^>urSOB)&l1Maw!I|hE+zlQD&w_m~GK{hy`T?hdmEbaP9asctL2Y47X zv4igO=znl1xEmY`9tG!ted+%-f~H|?1_R*h-~#X{SO=a3cYyuoQ$IKsG_aRya45I| ztN?d_%fS6$BiIJ+0WVtsZyv4YU;|hU9t0ae|Lv3yUI88jXM_DNW&D5va0j>mJOXY2 zUtF9>M8JkB_~6T6-@$wjjs!0VVUJ)rxE5RhHiPxxesJ$n^fSaT&Z|alaLnEGCs+fn z0G|Y#z$myEJPXFbfy-zYfy+cN04@d>fDPa}FaquXkAerm3zjDmJ^qRE!4hy0I0JkW z+yHjJhj9g#fJeX|f#zk5J8(Ss0T=@NeH*^K2P0tL74X5UK>t7ESHMzmEjR<*3f6#o z!ENA&;C`_Gza$dv;3&`>hMvLkU>z6&p91T_{a^$v_)a2m7%TyMU2Ygt!BTJqI0Jkf ztO1XL&0yI|_~2}?7rwg=ECt^HgJ3&Y1Ny`G2XG#^AAAJt03+a_;q)Uo5xnwV>;#+w zHh|v&cY|BOqu`rh-xB;BSO%VdAN7Ex;9773xD8wc?g#G!+rdY`{-4LLz;f_qZ~=G# zTnApUihcygf(O7#Py*4rz(L?%a3XjZ41wp>pf|7-+zn0#kAgK|-!Gsiunc?^41!0& z8t~24^grlZgWkZ)Kz}KI0xSbV;0*AVTKXSs2P5F%we&wY672Ow$^}P)aj+8Xdp~l3 z)4(0z8{lEE4eW6hcJl!C2tEY{!HNG0AG`0l$c0z3{j zf#-b}KLVQIQSdIXZy9{B3~T~tfX{(pu;W4G2B)m2UEr-?k82Dg3=RWdtfN1`8Q(*0 z@BwfaxC1;4z6ttAFfPF|aPULO4UPxbf>%9^p1>%06g&&|{Sy9b19}20z)ElhxDMP3 z?f?&f2f?$TZzTQkecA&~2d9GH0at(xU=#QPgnGVAJzyC)2@HZEum)TM zZUMJ|QSeo;9gKnfM=`%Wiamm3z!3O2*Z{r(?grbyqhQZ^ko2e=h9uf<=3<3aOr#wAz^ z)`K^J5%3wX4crU%8)F#858#6rfQ!IkU>!IH+yOob9tJx7A_Z93241k-#O7LZH9rza5 z3?2vfgG0B|e_#MKCr}Sq4n6=b0^b4a!MlEroq$bXJ2>?z=EbjKe_#c;7hDD&1{=T* zFalojH2ndt0sBrwf4{&lg5$wzupMjyM?FJ-fFZCATnqO58uP%jv7V(;LOeno$Pd%=2e#V+&&Hh@RL9iV?Q{_)rJA23-kvV1P9%~xCSf0W^fr81slO*;2v<= zi^u^!01lms9>5ClmY0wld;r`5ZUPU0yTA^x9USxx;_u(!N5Cd94899)0sFp8`@u0_ zJNO;YoCXgZ4?Yhr0*`$8$8^Bk=-C#R-6ukIV z>}fi750-(CfR*6H*BGzz9^3`K3LXZ1dl^sP#NUFYU?n&mYzD*NL2wJ$2JQt1{s(pl zR)YO+qCH?axC;z{2f+>C(ATL441h6kG1%i<%xho?_%b*HJP3xtV_*|FY#;K2Gr)H6 z5pd89_~1k^4pxI}qQocQQ{aBE4eS61{wMsK8Asqma5fkMmw_9=r@#pK4tNCY{|5TH z1^s{{!Mngpu-EUiP!0F%`Fbr-6w}5-VDEKbe2DXF!=5YNVkq0aVgWv?P1`L7Qz#oD8!5v^b_$Fvp zQvaLSF?cb!2rLEbz$M^LumOyLFM~biGQa-`y97soGr)OZ4Y&o|2JQj(gU7%Qu;L(k zn8$brr-ILeE5NtFCa}kUVVB?tFb-CN{pO=rFaSOSR)VL%b>OJC7{}mL@BnxZXe?k{ zgG0e6SOLBZR)Za2JvitPb^|U3kAgLze<9--ECcs~LGTo~7WBuE2P^~kgY&=+a0O`I z%5~s)@I$Z~^u0|z;2pHA_s`e?I2POj&H(p&q_feXNAz&h~!BghSo1do9AV80OU0t4U& z-~zDZefVGq+zIXhkAQE1z3xEoA7KCBG;jvE7OVkZ2e*Oe{gwUz=YhT@^anT;d=jhx z+rVXD=~3hWZvpp!AAr84=>NargBO4k!C_zsoCMZ`3&34q6L_Ti`*kN1XQEh2H~*flI)t zU<0@UYzLdbb$_ED!6(6Xa4%@yO*vpWc=0j%9UKpC0GEKf!0!KpJm65!zl`>SW#D~a zCAbq@2fhwAgK_Wx*u4$A2Y&<(T2B9dgxl0S+g)uhIgo9d)-S9pOy2`3>a~k;SIXD-1ITLM;)ED93HaH_R zrzBb5B2{0B-L4~iFYOwi$}1R=B$|BZ?}k0VE73e##(C~KOW}L~XRyUd);ZmgQS>K& z3h$|ys5D#jga3NKFfJ1P4&`%`e|sq-0QzR)yxqE5;*=vYHc?*;E-ul_E0~cantZhv z-oR0b#8np0>YqjKw#VU=!V$iw&MC>FR6q7Bpugc|>qoJN0K6;VP1WU9jFEQP~OOh!E%w)qX; zb|&^Q=QVay0^i^LAti8Oq?@X{u^W}YA+{&i^`ic(0*qO?F0QVtOS$eLeO+DhI+3xQ z>o#ADZ|1e{LIMJ}jTDSYc9_`69@_sZTwAY6o4hGWQ~HlvyiB?^DXXuKu|ipyI8t93 zoTuPi%xh1(DxCU+7lgM3o|(!^vA4DG8uQ>a!;}4wT=gD+_h2678Rrlu=HQ7hh@!U- z1||~oqz~86(S7eSy27cho~PeM-WilVfwF_V79Cl3S719#laIqG^{4t&;WWXyk8-TB zXxne4+kW@JS(k+)G8~2T2%HbGE7}uFvB3ics_SA&8yp19?2b<_XCC1-*Es&Q;1I`d76eI0>!G!LG?ha2;o0+3a-7e0#+`f@MqVkeLhN~ z5AoQ>k?V8ovJ_q{58e!T2XgSFt;3Kh3hywleNP0Xtzmat3*Jz&g{`I8^RobB*Z4JeRqHYr?#yT@^`v7c5cS z3X~^4emuMqlQ>n6t#G#qdO~`r$HP5kQYxIJN0$;pPlw7!gt_ij%Fh<#G{M;gXP|C_ zW8+g*6HL4R_QLCnk9tV+0!~|N6ft0p)i!t!<|uC{W%TdKTuphKba^E%^C_rPC6*}T z5j~BEJA*QF`Q;G2Dez2PrXx$rc&&#wAqP+TbOEwVrHwoA&%PtKNFT)uT@5YVRH#}S zFLdm@jk5P&ntKfGrtE|8u3{|two-Qad6AwIb-$KNpZ4wkLOD)2(zE=x<<=Og_yqCe zKPM8iQ{^jgI!oe^W$^k9OC%^&+U)3ox1#$1ZM+rxHhJxvsN`}uDZ1KCS+~HI>pW$- z=6>m;qZaStRGw?jHuB2iAD+}BwqfZexo(rOaTHDr&NR*OtQpEx)y|rsUvKtX@ITr7@<=!xl!qizr)zGQ zq)L;yLF(;Ay(N?-eebLIme+RYDXJ+xT)r;@%i!)8?oh=IrA#FSm7$~0tMH4JWu z>-KZq3g`uN+>s zeiB`XUPoBv`F?g&)-oF?b4(s}?}j%ikGeNdx3p39!xu8wt=jo1@=tKz)N%)1Q%b=e zrAvt{bpMvaJ(UMn^b~@-AfD_R(RRwe3LRF@S5OVVU=guy{rwC zO-Y@H;XLW$B>OPM5BI|1?|>)Qc=}q0@TxqMuS(%H!z;0P>Bic0IJ@AKGA~nBq+7Dm z!ohk*j&!qatOoAxiHXD*U7ll$)k@LI7Nt+N!Fvl{K4l(&`|jlIWhy!QP;f=={um0c z0A8;CsDRf&z1jMs8cui0%BE-euEDA^m#yrE=gXsQN8z2#(Kdfyav^!Ntqh*jDZa;J zD|%U|Y(@I42X#t$B7^TGJg?h_q}cpA$`rliDsu*9_O#1fnz>9F=P^s3#k{8OpcTGJ zSiYf`$`X82M<*^{CEvyJs8e`7F4T2qYn$*&;PuNxhUxIm&mqGKIQ?^!C3QBz zyC4r)_omdDbh#;hz71Y38KmC+1al%oHl3L86sQ9h&$Cnez_9ErmN#xQVX|x5N{^ z7hGjcTsjFXvMl%v@dVdczTBDPv=22f4lNj!VAND2wtu^ZVS8(@N)Hc)Z$IhZFJ(Rf{{us(uY!SJG^Ho&rIc|tR>Bh zh@IeNo0Fux@$jC?gBOA)^;&vy`d8~k^{=$49^Uita9{5J@a%oG0~ZlqL18fO8)lrf9c}6KuPbwl~6A0w>$}HR0`nw*Vet zpSvti&f+MXX<0Z@pZ|0CGdPxwJN;8I-WpbVAFB+Wv@6qik+NpMnFl9V+iT#>$kDDX za31!KMh|D&+;2?AET35I{l}{liZ&o`WLzJN6xrQnUCdu zg-UqVcyjdXY$vE(N4-^ER{Mu@6J=%dF(%D93~x3(dz@IlZMtn|5}P%n6Y*^y^4d2X z&pzh7kjJMN9x#*v=w&yaRj-c&1DMyQUnzqst9&&xe~$mnQY^f_EOgY;vtd z_Fiz5T#tS=FS%6wM+Gl(-Q(1QEDMx*~;7o#(X*@}rK##Uuf-LiT(ooS2iuT{uaQS2QQoc*1@?6P9}Mz zt<#ZbA{^D$arw7ZY*FqJn{s1*<3R2si@?n_4&*+wm*M4_OXWVaJ@E4K|8QS~OLL_! z($1wKPbGxs;mK>?x5s+9u62;f_eUu6IkN#aka45VuJloDK`w7}Hl*#22;Yi!E`P&d2 z>4&Ryea`%%_sE>}4?NLFCSM?Zy2~odYLiozYfUZfIt=e!%F1N>!jbzerCr(T8wTh1 zu5yxdqqDWEV&SRqqB(d{=L&eQ=BTp~&Mr8%-jj8@a;J!A?1A?@Jn@k-Z@cmVIvBBH zb>X&I^-kAZPi!|fCAO3MN~KTja+CGz4W(q>Lhd{5{!K^6NuEnLCiTgEsRq1kdX{@u zrSI+j%2d`act_#&({k8(jbzS3>Wje<|B#6zcI5kK_RiqQIsn}TlJ#lL1?+u_Veq7^ zZ0(ZrrowwO58eu^UQ^fW_<2_jLcVK)x0muVjVs~of%6=kOmYh6D4Zv=aHQ>i9O))F zSMu63_f#swFhv(8UzNezmZMEG;5?qCJ}D;*=fNx-X;TxN`*O5N?0PS}b@0l0P21gL zz~0qVXPr#GZim|hH(TzZ|K;SI;AHdNvi2;8_Yk}pyr$kj>VB=>d6)H)a}IVH*GPY5 z8V5AbDCa-XvDl^W(5O_I?2J)TroEKeoTW^Ya^i5Le>2r9oW4xXB6lW^w5<%z8aRu1 zjm#$`;CMV;;Ey7^A8zB$E5?t%9lyi7JLe&i^eZE&vA^*Zr_EB1h5^!>apYYpom+80ha zCmYf$p|Izi?0Bx}H9Jk-prBMqBon2yAp~zQJd@Xyoz~|IuO8mT@NC;l%AMR>(0dUP zcq8EL(dBhIEAphOJ>>B{ZCvv@*N_5NZLn^U+Jm)!fz%k}JawKgdWlS7|*G^fcx2&X(6FZYb zM{O=nrm}{@I|?tGoD<>1;N&CcGPom=A)A~HaK`2#=WckTT)fnN6*=X(7b9GpOmh0a zNG=3kCOJ(}8JxjcI8xtqIG=@s$$7_lN*oo2Hz-S4CYLwC>6e8g_3eSvD@T1p;l<%y z0B<_4Q+=3$i! zYIyy0Uv^r%iM|@(EP#{CpD6o>yBn@)m6vXOEBlAH3tqYAWnClmzlL=o+`d+smS6Gg zPX^#fy;8PkK2OQN$#ZFhcY(L8ms1Y@1`k?_zw|#&v^l&ut_9 zN06(AmyeB@w0R=@ZSdu_=pxk*%jY3DTi|5t_YH6w;N;Wq^1PmQSDoqlUF_osym$_t zw9o$~xGr9*3{qApoWm|ox;mw-8SoCecp_YcHJV z;aGF3;~!mqS9opkcEiiIt`%PYk;LBca^*Y9;q8KFa*byUxZ)8hZxK9sCY!wW@LYSu zCSPrU*9U0hBJ!Sw7bMJPuXh+>wZsJKXjnq z2jRzf?fYjIS>82H;p>K)uJl9;NA$6lIz}wcu0s=EGrTL|W%46Z)_ypHa+D>!4tV`@ z@WihTLh!!u7(z;Z*Luy7{ycr(N;^6q2v_vr`!<&7UgNmV{z$niD0gt4WD3LC2?w+B*0(qr(y99*w!qs9uPgD8 zNs%$G8yd>oPHBVhTE+pKF}(K3?Ar4e-Y|Gq!L$6Uvv$}1)wFX~Q{j!wgSP_S7&o4(_4Ccw#MLy-XX3{TlmE9@@V&{P!p9M|Tup%w6+hnLNU z8sR(zCzDJvZg#`j0;j9C(ZO}TC7J6N-J91DU)+(q&&R_%n+GohPwLFom-76&0(hC^ z7T>YUYTGTmrhh#9I1|P>L&R?2+ z9y|!g2WMhxoz`~#?JRKPLeSU$q>pD8ieGI)dGVS-tG zP9wYkJX7-={krBd>EAu@%HWCr#}?durhB49E$fx;+TfPE%1jrR_G6JP^=8wZNmT)O zmGH9Zq!P|_IJtDP4&E)Ub|w2hMb;hgroqcc))?H`a5KeAB7<)nelrV4^g9&JSU9%* zW{QEt2Buo&NlZXrIDM8H|G=A(XPH~z-U>HcnNoKY-V%7({JV_RM)Xn*?-5@6uDev) z*(qLGk@O2XUXk+Uxsz{jUAD0zJb5nV@8RXL?=ZYLyj*kY7I??u4W?|5PF?3gOumZ3 zYlD}`Zwg1AiTMGXOg1qTjyx~(Ae?;qyBw~Rm#uH4%ti2y-aI_k^eVyS6y*{+8!|F5tRc{XHJuB6zv_I|OeHyj=Y)&lg<>FIRs@;5`5@TYn#h z6NZzmzk7U@aRVox{w{?p}=2NNDH;LHw&fL6V@Q%Y9m|9-S8K0@} z;_xoEc$VEyb)OYm2Im7fnetgC*EYa80LStH_H&QqzNMrdB5>Y>ldW$K!`YjKBRc3Y znYD;hmosO(<`?0Wz}p4y3SOgAr+-}Woyk|z;k}rn&J}QW^q}wmCNC+CviFHj9_b_w0waEKA!=%4&ym zYZi{w*MBN8OpbO*o69ZU1YXmAPaZ<=%<4RZ$=4yc_vEN|1Dr*0gzwQu${5=PuQEsb zM2^E2FPGkWeIvI{O5o(uiPSmW;^nGSo|is5hd!F%OwA#u^uu0@mrp;)^Vr4avW=Pk z)3km~%FfmgFIzk$@>Igx0?*`iHa)I`*O&)y2fX?`>OBbWp*(oL>CCaYg508Pv_c9dNL_< z8JxSaa7334a2CL^#0B;?yeV@0cr((LJ60*uU2Zx233-&e2%h`~Sia>pz+VR6)a`KM zf|Pl1H@px$Yy2`s&Rgr}*)}D5{8rfU`cZiIz#FT}bNVQm)z^CJO9SiS1ybwPHe^b9 zqNkDYn&IW6e-r*9_y^!;8W+;{b#PvVlS`JJ@b<&YB})w6u{_G_aWnhjd6ZWI@3YHu z>t;Hirll&&_*ajz>gA;}GViu0b(*|b;oNV*9)YpF| z^E=v`&3DQDYl%++aGKzZ)ExJ|i+zWbx<5neT?AL^y~^Sy=Q8^g1>?%(yAAMi z$*?nzvZT(KRhE?N>0_4MkJG&$z(ENG3M2Q2_c!C8Dk8QOHWTv(l9T& zd-6a;L`A@Wh>>L#F(R^vidjS!Sr!oyv!Dow$g%+=A|kq&jp(v23;*w_bLu{-@9o!2 zWdFZUHDtQ)_nv#I?y0I%r%s)!3XJhCa(hHB+iuX_2HHaHi)3>?=xzbsT;}QNA7kz5 z4WPRLbcM=oA84)u%`%ghQEmr8cQfdU$&bzj`g##M)&4<8?@)?d`ayf-2aC&PH|Xj> zS4b|D_FbTx0J>6i&-0RYv369~3w;lsh1z%vXo|f@J@U61bo3sDcwGpZYS3K6<>u2D zmr1SSI&~B1GN8LIkM7C<-NT@J9(0s`l)gI-w_XO_0njZo>3sEtWL%#DE$D`sE>Q2; zh3NS<)`Irr^P}Il9z2FY(@=zFH)!e$&`|#G0L?7W9LxFg+K$f`Pjm-BHx+cce!BXs z`eIjZ^`NWmgRKd=Il@o+I(IEC@uIV+`irDVyy&c|z9PJKfM!z>UX*&sNa&aYH9FmKR=;Ap1nTv1r*?0+2je4n*1#cyf3X|!$IT7hrRIL-cx(?f z0YB#AkN++u_0=kB=`OlMF0LWuVf=dt|8ArUI_zdIz7NvHmDT*rZFF&`T&O$yY0<|;sD*b4i^XTt?o=l)(KP}dY`5EMWuQ-A(S`&U3#AuE!bT| zae+|WN*5Q)#U8r27XMV=PZxOZ9aP7ZVL`x2_;)P+ok`z5+POI^3&SFOj*)A!W$E)K{))XU_unknG+Lw2 zQT!FFyPTgtTCVl;+Hkv&hOhYi>DAYU=zGq1zQ({xeV(u5YYYwf8fW~{XR`W>@9F$w zid^gT-yqle3!^sv(9jSc{tLT&BEz%!D<+q*H_G*#V>msHZ>;BQ{T`Rdk4c(dzF&Qf z-{+3EGW~0Et@CkEt`E_u=dbWV`s$;TIxvsZwcl0_R44wg)PsYfFLXUE^sQS?osURk z1QA~4wsawy&lIPuTzOLcykur5o6QXk_0L~-N_|s9b4x>GL(`HaPH%5>V=A@io%KzP z4b2UWc=Sa4W1YbbzES#*HeqXik-n>rHQ=w-6hR8U{~FX__Q&ty%>7sjuQ$y8T)FtFEe@fXnLYi3$1| zH*ppys%s}sqpzw7wE%10h2K@jzws?ZUOoO=eARp!f2!skeH{HJFI&|+XP<-Lqq!A?(MT~#n*(X#iqoDVR_Hh63qt-9HhSBg%UfNPp|-Q1zMAxlRAM0_ktv zFY#yUT*}+TL$wXKIqiGM`NWqbZ{Gzn@lP{;4ua}w2S7XV&$I8s#kgs+>CS&2v02s6 z>A%OV8MXAcj>J0ac>FnfVpUb`XNYVi{i&&9o)h;|0^_Qf>BQ}HHNI*(71g+j>xptg z)f<)*+lk+zdlUKIoY?fGxH+Si{?=WCKQljo+ta_SK>Azv4FYc@kj_+}QA>a8?j^8; zz#l7+{?`4Rz!wR8MuGIV?)L;zxlR8s1=8QTD!lB>Tk&i9RQ#GzOMmN*R6nUC>yA-B zzd%1vR6lQ}pNrMcAJWei>gRs?dAj;ZLay7Wev)wNlIrJ8^m9=C{1^JUQ~i9Dett~- z{0;s5l=}G!{rsHzITL^DzJfnB7XzF)SJn8bRH)-7zO|N$ZQ99ntdWUNO*w{ea(GXCdP)<1$0mIae+X4|az<$?ZCrz6Q8K18ZzxU+?@D}NxxE=m_$mUUz1LR%Ba2&#BZptT`~Oz zqW(GV*RGmQZ8kRTx5!X!y!HruO`WzD3~EfzHISJR3YF@qyxxuG~71Owdba58Q z#>LK2&wmxvQ?HQcO}+bd;>Y@{<|5EkKk~*no*&nOKcXYYGh?klSaVDu{YU>M#%gOb z_*PnA@>=|wOqxgi!L7^jySA1TpD4#ELzMaXGZKKN?8IwVEl|Iw{ypJmRgL={azy0n zFQ99u^%B*pDxLL>?w#qI)SV+KRr*ZNsq42<2A0tErNnbpBVAKdnc>j=_th=K??>>j z?lI|wXflF6Gt;rEjWg)oU&6mxzn9xbRBfvMXzYlpGpav^zniOx7Z}Ziikw+BtEy)D zo2S2h`Vr$5R)t?v2&sd~U42|^%9N$JMDZLMtC@b%l)ss>WJ>!H5U|`qZ#aGih@e!D zsG2eb1ml-XsRF^oX-tpH_9NPGzg8G10P?P?YCnPqCm$1QKVkt0rnLA{cn>Pe)FY5J z#S@7V=``V~@<2SNACG4t7s>(ss9UVAXC47gCxgQ*mxJW$h&OU3g&|Is^}o~`Q}K@Mv5+fI5z z)jQs#L^xi(wjn?gz|@A=d)}m9@f~lX#Fx$ayA`-It)VL7&h+s=}jJ*gUht0vW|zxhGgVo#T-~(BNX* zg8ua2h)13tOyw5fAAS4j)f+At9L_=U{ek#v9Wf-TA9f(HJnUaGZaeiFr&%BJTlQOw^mIKrf4&1WH> z9`#H#F&ujLD-IEF52 zK1?-PQLKud6!`3X!~I+*P$_ex&-+33MjuXQxxtw(QsY*ovQV_=p-)(DP=ugTU-uAh%;`);%Z zJTkuz-)&1!rO`f8xEx4jwxs4K`upc6hXx`1!CV$-W@uy(%3uqa<+c(PzUHSgnZY4k z3=V-|B6-gI;SAb$GB=a~hz34?V5m3M|88n6=|unh)Q(hAiHGtZ8%zwO_$_;fMtb^F zv1~%*h8J?*Ik`2V+j$%b+E_%&L4N+alZOx<-y-t=C?w~`u(xceXyhy#CTf$tmz>5&# zrQgtdCP8&UigaPKUq`xd8z@kMPA;*m8-Hosnz` z)iamKrIYhBss5oPG%Hoabk0d+GKrlagQ~moQ-j-v{mRa9sF^uvVNM^OdA;jg zNBhb$YhEI=g{t3qDZI4%D)ja-+}ReCL~5{?l#}|9)k>eL*e3l`E4y*AKUQt}BHzyc ztEsDEXXu}+g{mq>dkCqIpVt{B@YaiCDx`#YQBfyWQn;WxBy-gyD*e~oI5|@ zBS$vJ$DWsYfgnC1rsofW_{3P4-@OLDHtnwu(oc$Mzkd*)9MkgyL41nqPYvQzW7@n7 z;?rWaGK>r2(__mHDZA7U<9%nu?jaYQ@u|V6`G&zTd}d6~QktiPe$U#Q4-;BtIteU9;{|pGZq~%!8o1UMHL-gAGw@v#J0@^V7gVa_V*mM?d4udR z@>%P4Q7;6LWGFqk63B|v^PTDvfA+w3595Cx?uFr(M&P@FSA+lAK0h*`*wupXGVreo zZqBcM7kCxQv28b(uddY(Dm=fw9TGlz{uY<&^D6#Uh1A=(fMM8sodBHDU1p@aMB#6Y z-68c*=jVNb-(%n-g6}i%zZd*r1OJZTj|q+ellmMG{0YI?yN?)O!4DYtOo)r}f2!o4 z<|62GwBS1od_Hh0ug9fa`oNbyJ&bs+=SGaSna{)FJSq2AEvYQc9cW_q3OZGzt= zc%J`XrABA)Xe`qD+`vhMjxSp@qEtWi{Vdbmk{JbG& zUG6uDd^i=%bKyr7^v^*<&N@GB;=udHR2!;*;OMJfrY@J^VYxXI7p*e?@Rp|Ia{0t%BaZN#rBN5_>!FV^Ln`UBHrT zkQ<*7{QB=RPI`(yuL$0eVSEF_u_f>r5FZoYCinv%WqO*=qR*p(Z@h}}RSd^gq23Xn zCog5ZP4HcUzev+5`1Gsy#6B1B9ufW8=NZ@eyjbwrpJcpVJq1S)8Ya>29%fuyP-_Ig zm?{!Jx(E8C;CqEX=}r1fz<8VZT)CO)wH(e6{I>T8)BT~~yKi7zTU|#X;DPvjJ;%7t z|3<;DzKwBh)qP6vRpemDXO8+Ci~XzMPjoU~FZdhb-6Z~f@?IL>Ab7Lz?-lw>1poRu z%x6&WndrcX&;H*qJ}meI#FY@fx}WhA1RoUqmbHw}6?_(4z(jxiBaG|!{fx$GdJLa> z^%wrX8BBk|=|OzE;AT1AA^533Vftp_^St1H7F^f2t#!=5Me4~cq5r+$6D0o~f>+OE z`n~_o{Ix!rg$L=q?)xs|y53$P_+3v0^K&A+%tU|wd5m8n{Ii1Z_yOZ91fMdS>AQax z;E2y$ znj^!fS@63B?=jlr?*+d|>Xoi1C&AfEe0Kem`7{WhhXvo-#W+o+(q}v>Jkh^Ivt{^b zJ{tr-bv5H>tGlt-hXrr_65~3be-OO?F~+r=-wT&E@n8LG#zDKK2*Ens%Jje7<%t=!6)3y z^tzsmJBI1^pUL<#Nw-t*i&U4x22`M>=OOt0~41%H;-E#ag2 z+$Z?U(tfX1cTu0;#(b9E&-5n=ev9B2k1($F=N|>Hm3qER=CxQO=TyNj z_$}kQ96t)Y4)&5cF1t+Vb5Aq9&i}Urzgqa{b}{+wobKb9AbnQwt3DD;_Zh)YH1t3t z6bs4oA+bZK&eP`%;PiW$QUAXwc!z=0Im^W7u3I_XdSZgligz#`%QCL}eLDA;=qG=W zaXhX*j|e{D$BdsT`1N>@@^hAv?w^1YpL^teSMX!8@4S<7(?0o);DZhm>i#_offJus zzR7sKr2By2>!f_OeEuZ(vwN8y#iTy(ei!q3$*@DdC-|`R*MmZTCK?*0`?ArFt`U64 z9_Fvx-IId1Y+_vNx8DhFwu|=p%zv5aTac;Gw*_zbCG*kcG8qX`ezu*@`1wMAnc!RR zVO-bei+)Bn18Tj*feLx-DWQKz=-cGR`xkII4jbjT9XO@C!|1=hE%?3CFX;C@vXSYp z{T}B>x8F+zzv+{V>+<@w;CDUBxPISUlgLNxTit%|1wIq)R7W?All(s-^cxKNW15-I zRZ`EjoWCOY-Jj!h_X(fr3yHtyhp8339yrNi*S|3R8o{p;{HOzr>wNx2@Yzxy>V>`s z6`S}h{aEmQcMHDh(~RqSb@C#nKR{tP_~?FZui$gu%lNax|2Kl)bqnM5f-gn^k<2eN z%J&1nDL)UN%k(RR{w~1}Nq?d7;}^XCBo;Yg0J4l^jdGf2%O|| zr6HfQ{)X{A2L4Il#Q(;BWIhLk{~ravLHa4;NuTv6GyPFg?piNh2K-AtKOu9&{u)BR z_Yy|*`~H{UEn;8wGkbL=66L2+%Ij*u_r06b-6!>Dj^Hgz89!R|z*@n-0i5!@*LdFt zg}zVhbDf{*?_v6T4EhfMr~F)&3(EO>f?q6pSl9EaWlVp!l;d2<&sznbE8`TXclGHK z+|(!E6#M}h$7%Z2%b9<#$W!Cz34Z6poKLNP9v6H<597L?9EXOW-s_Yg{Yiq~CF5wF z|BZsLlJ=tO=hp>)`M1ocUcD7`_Dbge%6EhK8G^r<4(8_vf**Sy4= zefx~yJEXm9IecI6AN?xG{{_Jx7Q6RY;Xe>({&!u>^tv4H7Toj$9I=||HxC8*cL=`c z^NiOE|62qf{0ie61@AkB`8+QD3%U>W`I+F){u9$fyy|nrsZ4K<$3F<1>iNS)y}d%= zQ)9O-Wj;rbXFi`1K384CxV(03Ts!kQVDMQBoa%|G=PwZaGqaC9BYX}Td?v18 zK6PRzYx#db@H@mGrOTbRADHQzU#J!SFA9CN_?-OQ(6@M)(rpI7e)@;_hjE2KT@_xcHNr87@pdSMfLM(Fp8e$e@x zw~qNAC3;5drOkrxG5Y081z+|H=CA3$C-}|RGLCAmK1F%Tx@jDDVd7a>wNc}uY=r0qzQOc!N z@IMP~+VjV}m-(M8K54&NUrm6(Dc#$iU_M96d%a)q^F=@C_VtwD z4}UB8z8l`pd}<~Cn$PuuKQ8r9=X1s;roUM7qv>}F-Y5J|lKfPk!St6I{oNeFpI;r! z&vL=rZfATqf5n~$PW86lsJDyof+UAau4Y0l=Wh#c)~i1V-Yw%(t>?QwzJ^Yj4Q{}zp z3jMiBrhnSdV=oB)(1(M37W6Xx6+0L|R``5Y@clAA(sHOy#bU=mKd7Z1pw<26T;L>! zeP3lh^Mude3VyA$qZ0-HXTgsa|3kgt)qTvz^xO9dKKX9uuiM?tf?x4`F#pdAezx?3 zx?I+8VgCJwU39nL_dUXVbbcmnW%^U4KhpC5C~&IVR~qHGTj+bvWfI3y5{}OuB&(qY;>E2_cdj@dI|81fNmIpM80mgR=QCktMcWBTd@(?2PA2XK;e>|Klt9Q(A;KPPs@Jh}0>;1foeUOkI@n?{)b zy!#o~_5YCIFNpqc6h14qG5yp&rq}uZxZwMK&iERk{~d5jtIo*hitWs&MeI5)&kF@N z{mJ(WexIQan|3gt8$|D|m2__w{H$G^pV@*h-O2PXi9Ms`uv75eGQZFv^b^lx`qkG2 z<+E1stJgBF+vC}SKl~Wu^}^>i!5hWi(02X-;51)g#&;bAPI;?093dZmzMK<;K#(K#TpMWpBa+RWkUbtHpX?ie^~HWL@%8z^#3gQzQJIA z{v!D5b&S7Q%@4f$Ly{lE4*8DY>!cswDEwczfa%R~;+hXL-XZ;Iz0e;LyiM$OT`nsw zWO{Sn=M#b-6uqbA^Y4P2^Xwn~2=n>N5Ba^czOBB9@#lZQxYma`!Jjb3HTMc`&S$+K z_+!TW!qSg2|6Xwz=zihTz^R@z8ueuS$Cy5IGv`Oo4}L@N$EAO~9naF|w}PJ}{opEw zW9g4GpLJs29x3=Y1;0e}u-1FDDVJnNu2So_XN3NM=ue%`#!Hyb^`bX4pU(?!>ch8Q%JkQKiPLSCbU!7y zIq!4CWlVpQ`1f>sd8goQ;@8#h^#E|17pRx0`uUUa+bxq|6UKmYTB*BbIX_ft%Nrcn>~3vQ0%My_P~8y^Vf|4G5k zd6pHQX8M-%nSO=5?~Q_=C;hl?FLSSA`d+b<*9iS%f}be$`9;BB_zcsV^YR_L8Q=9w zPFL6Giv)j8>WRjGBlvkz|4$J9$A6ajnB(`)2)=JW^It9W7ypd(i5GXR%jE^3KT-73 zETKQ~YUY3OtwDKyRq&S{Wc+xcKl1OG{sC!U8wI~z@LKT?=yd-LIHk4B&~J00SV+%Y z_cZfI^;4hs{ypP;e;3TpUf{&1!{GCMp?~}fO#hhh8T=gc>3EcJt!I8A`0;lzuJgI} z^GtuH)T?IU^C`i1iCwD8W$v|1KPdK?)(`(ExH(?_f#Bx6z^?>9B=+0QlI|^E;P*Yt zc;EX3A2#q8fRjAuO1bF#bYI8#n#=fowSL$w_)Ugh`k~;apW&P@GM`mHWj^(i&tD6E zyP^M2+Qalue39vOe!d2r>gNs3j9(>urhkd)PmuiRc5yE7I*J>oJraDMj{>LqaG@cG z$Ar(5V&`|tGZU|8{?GroN+I=ve?;)R9%6ij;D>+{|0@mt3%<Gc-VL0}_a39Xo)G%nzcKwr;r}Ky zOe)778Sm))Y!>{G^e<2^>hm0M;{UM0fAQCt&m~eHWVjMrFZdoq&W{Oh&d2?a;4e9x z&lXA7`8xB@J;=B&$JjR*pCk6Xu5U*Rey1U~F94_fA29O&KSJO6WKf>nw=n;^vy7i8 z`8g=~3&!|j!8e)yV(|waCG;JF-?)eQ)C>NE;Aef9@eP8n+{=7kc`xG+2!4U!bI)L0 zzwe`h-y;3Hmd}!Zq0Ttb8DF|r@I!|FKk_!_Q#-)?wSL$o_?4m$ zbveEy_5r5A?-G2T*x|aoekQnS4>bN0 z^SRL&k8B1`M3r1gm7W&mjJN@FF%;%+Bn9n8h%<6w; ze7B4TwZ0k>{7SKN^m~01IHg;6BJ&Y8v6{P>&o!T5T=Q8Wc&GFiy8c`*xH%v6py01LLV3WMxz~lSnw8U z7g`RF3I5V;%m->*eZK!)=704E89!g}mG>}SZ}fu?0;ha78u@%$=r?|V`LuwBKC`~Z zeD;eUax=rRV+1$HYi9`F*2R1pg?_8xlP_glzt>H`DL>1M{QR@fKP>(wT`tq_<@}g& z(c1+#{TmMoen|R9ou7^0=k|Dyv`5`uwgIQ|S}Ws6t!G{pe3!`QF?p}H`xKS7!KWJKQoE1oZxQ{e_2e4Cd%nwjRtTRxf}eFJU2LY__aS|dR>k`6?}roLD$36A7nmH zh@Nk$;RJpHoa*OUhJ0rHi0QA}$^5l_wNvo5(!c9^^&f)YFZ!)s^1trK%;!17uDAv` zr8{h-`!%6|xtr6~eEwVT4rAQi{Sfot`fH}w_2hQJpS*!_EzeayVfuCA*V6L5Oz``} zf2-y8px|e1W?Os6#P`9e|hJl^1kw3x*z$9;Jq>~(|isJzTfamB!0?#UKRU9m&>;V-zfGB9#@}n zP#{!qfAmi*H(gIYFZhenU+eOENO03nJ{f)$;&bh9n9nld9~a!5kGK$cT}a&Z6gll`+?8G?<zbyETQh#*4I_*hL*Nh+gwBWaie$(mxui!6S z%=~pbUH9+I=jM+vuKE8^@Mol5oGJOaVL#Ka>tlMY_l|#x@u|`-bh&?8@Qcz+ul4z3 zf*=1N<0M=99QQQyx#@n!>lKQ1pn{()dPdVSrJpS?zYzAyMa2Hy57PWJ-o$Mtxp zSMWLFKinYsnf5HxpDg3kd4hjX@LPY*`P6dzv*0gY%Q(7q^>Kd9d`!Rn?*xBF#;v-1 zCp^dWJEZT=2`Jed+uh`vTM7 z@kQpN^Z$9lZ@DLkkN+LhUvW3%y1d>exVet?4}xD~j6>h~d*(CieCDI&Fa*5L7vC#l zh<#A#FO>Y~`uuCbUwn%BtdG5*xNa{W7yJg%^BTWLaMPdmgy2{Fg7b5f@ZWln(>2%e zeOhoc{`?Pun|_8j|0nY~s-O9vDEvPUoc!D7esW(EdehJF--4eYc8iw7*@u{a|K-eI z*PpLy{4vH?NV+rr$n;Z1?~%;uvsCcme`oq-3dNbMg0GQw-6r_Y1)nQ?H2tQRnEzH8 z=PnicF9^Or!Tfdm`h(z4i+nVm{uA>t_YHVf@E63t(JcJW{xj2?>#~0*_$B|q>FyQ! zZ~Pb2FO_~=m-~LfZ@!M{bw8VWndxJq4>kRO;AULG_XNLSZII6|1)nbI&XxQe``^s} zIMF{Hf+qxT{u%Sp?fQ>`Z<2Y*dZAzS7v{4=?DI1P-!1qWL$4kX{QeEhU-t{M|A+aQ zeuHCxQ#?uR5Yy{)TZG;m|9(mEYmNSB@hi;VjHm4v-1HCE{x8#;>+*I1r#gJV&>JrZ zy{QiyUu8ZAzZJ~?`(dwAdpx<3@vYS?xYLDxsp#92M4smXr*sb*>0T}L2R_7nJ}30G zuW`DMeur_b2NHst?dwLtuf2-tXA2+fRjI}oW_;awz*SqG&-6kb`@GN}y^HZxa$`{y z^SR&XH_sRRRmtZZp?_BJ>C*2XCHVSk;j@SN*9-n-!8b_#pC|Zt1V2Iavu^LxYM77d z-}s2&_lrMJ^Z$Y1XRhIN#SIbL51iysXUO4Q|W_DR|x4LHf>#On>cVjJF8?+kuCT6MrD|9}{|= z&yHH=bED)(_Y1!j{2CcY=z2J764O6x*pr_Syzx%X&u;#TO_COE#j-AQ4>DL+-{9frFHJ^pEnEw8I zIiI>-eOd7RG9RSn{Jh}LJ;3z3UwiKn%%@w%m74xu!O#B<)7MM>UlaU+Cm7fI?WEbv z=Zg0+excBxE%-&}Fs|#*9fIF(jI)-!f%#nfQKr}V`Jv!TKf$HeeOFG>5={maC+G5yisWqRFjZW7##3%XozbH3?^ zf?t1bF#mrN{E|;IuE!nUJ&w~g_n+A>xH(ST{C1|#?P5MU|3B9FHpX>-_czB2f6+f$ zZf6Q^?w9g{;QQ`pK3X4s;2q3o`bNfeJ-> zM~R$uxtu1r8FzgF@OpXH|8)&;%I97qpT8A8b&qhmn*UnRQM%0!F@B~n`;*}2`X<_U zmFUg&_16k+`k5aQy!Q;||FrO*xq$hY`yDxgoBNF2Cb&B72|TV4J{MtJNBNn0IrGePJ5ojX~P^+pGSa`eC{#i^P=!sbvF}g`)X+u^FJuK*0cR04KSb`>yN}{MkF0 zUXKT-v@pH7FULCtH|_R5!Oi_o?iKvT4D)Z4OwCxt{LOun>VZ>v)fxGZ3;o`!n2+vf zYg?JV-k^UAaC+bVUogG4OM_e0>;37&4{3-#T!T;QP=9eg2TpOo*7Aw|1p_1fxiqfn zJck8pSNet_oE3nL_qPn2JJ=^PxomEvuMeBq_ogzbE$M77m2q+dP7+5bq_Wu8y?4mj z(m&Lb=y!T?G(px$jO>UdhX#iGQ@K-H!VWa&awb{J0X8Ucu`2wehA_^Pb|{mQCeG zh8>*fl0y;g$c97ps(;u?4EEwx(m7701w!R>7F5;1*%#^aaO%Pk4wV2MPGx{#lIprK zosK!DtX;nX(si;UJx;shY-(y`&OJjz=XlxbJgtQQRsB=*2exFmas?kwWKx5P;HeF( zJC~mxcjD_-IS#5VP6~12r#cLtx~engbabv?8DI6@&bYI-ecfrxPl-F-%U7(8gLu{Z z*DXK2eI=e!Wyfbk(8&k^fDet(FR_00>aKXV%VN{Iu3Veb+2iCgsZ@JcZjoZro?JW7 z)EJL<M5 zm=#5QAu<)GYSoon+&7fjp2+kft)|5~VJ8ihz~pXeugGpq*&55_rfgh?FQbuvg(zzokXE>K>Z))yO4D|FSRI#UUvqd*59Do8f)85tS z#N(@)RW6Bt1rImrhZhbchVx{ZE+QxQ#haXTJRWaq!dW-alRb2a@rx{_&Oxjv{3zqKB5|$!F#Hj zzYyxRKji=<-QB*in_hO20^8TD8t$fwEDfQvYlSYvW@m#s_{V`vQ|n`A^!Ho1gU z)OZbQw(CywdZea>gQ@Ml2A;$5pjMps}M57PvrD}q&SBQLEwk49^* zbkkzl;jP0orUUhC2vwA256KpC>si~=1YtmRu1D=)J<`;eUkzac^`>%(bbnKe)8%By zKyrFuuno4O+l-^vfV!8bo1AV{3za^ga$B?B%tSoCvPpFcl(0_JIh9UlQgx7?%6n*S z530aoRG+P&^EEh6+KX^nS1N3_M*aJy5I}o+2FG70+RZ6Az z3e-d(n-rR50^J?j%wkFg7&VQE%7H$yC%$UfD}nqs50O?5sz+=BXAnn(wX@KX6xv-E zURRlpN%a5C&Kd|tjzC?{>5Xoga`^0KBK{_q-I<28&Zd}hx3)2YMBs$YWtpHQ(7KJqqZ<&;a+wf zYL3@Y=zgHI3{+ykw4!RFH;#8eAEI{oE3ncy*CA z(j9e+zjJlpR$6MbdW3NjQjb;7--2>W;`F>+iW@z(Y-LPzK%Ry|pc}4Qi8c;G9(3(o zqtB|SSwN|ag%ULIy>2>0)rY)){`*B`Q@YlCO}H4E5NZv&7)q(2E{q$xaQUco;i=Gt zYoc`F66nHHl`d>ox)3#MOsYzgvz$hFs-7hK+ohsJ)RWP6KA!S4s!Ugo`_&f58(fjj zZbWwo`w*o;BPsfjUgvTB5Nw6G)3p*3+t%6bbfA|$j}=4lCfC#~oiEf$@*H$%s&#bY z%WVoeuOtdr(n?H91(9_Co2)ZTQXzJne!*7X3!;97RA9XAVtLz6B$8+Fy`D|9sj)XD z_EsuRee(bdeC&)OpML>kJgxX;lt&gwCI#K2-yem&x@$StG4J$1Q z{gK~SLk;^IYg7|2Pxqqh2-T!o!{-TGmoWTypef`MRo#>7nmjvYENX8XjoQ;&w&s+S zT#jD%LsD`p5!a!DH7CMnQ<13#X8?QzC&fcOhFrs*h+>3W=4_VjPX0+?vXgzRc58g-UNUgW@(QNaae)9|jjwjnTao{69{A zs;^*kFQ;FOR{xR0btg=`A}l1rKwUB`wlSAP16@F)^V)-f=d~{_kCpm?TBuJBO|9}0 zj+DFW8XjvqMRiL7i@g&QYaM9nVzsxaxqnRZN?Ud3JVH!d8XtLHk%Q$6*+Sht&cH7+URtnw}OF**FOz4krjRDpe345WYXvYJsW|ly4!^{u`Qf8 z1E{BRJTVrlSJCacTvu7Kl%jPMio|mjpe}ebnYyFTn*&gFX1(h>Z^ry%l*3((b6apf z*`CAT357nh~oOE=%hwICxmQ-!U7_W`n93<~_j$O~#;g%b?zj5c3E zsp=M00$+nyj(4wG7^ZzdlX`A2a4?N?)d7+ye3S3o$l#cXnoCE`56-0<6F2!|4RhwE z1xco8IKb^jmv;VxQrtw3EXrglCX~V`%bx({o?nT@o5iMVl{Sk_6--sKmF>+26Sgu? z&uI3e15O}*QLlLx>If_CWJX~}L~8?Y)LU@G4F;~e6;@x^3?c>$dLkP&xgAqgdiFZm zAII!>vm^7{0e412b1TcP2utcpA|5p6BQe(wom_;Skwe&}zKKVz?<)udp-I#LB? zsi^3w75M|cB1WG+72?elnISZ;iDUF-usPAR3s2h>6o~Q#%20$fQ-u*rttdTTTPsbI zAC7vYC$%(hLtb4lFN%AaTxoMa8P&oTJO~9$Cdv}3kp5r-jVXfgN{X@%RMPOFK(s9= zuho@HolBj2S)Lr3cY`rbjofu&d6M!wMk@fT5+82-6)f1Us2I+Ao9D$rQ) z42(}oo62-35S{`_5kfeSNDt4ZySapmZ z!XR)r5ZbHM6V^&7FE55>N{(hj^{VASy1gSm{Lc%+L3c}LHu-}nxWhr$h4Fl50I`31 z!WFS=a5{ucwxS+jdUK`fw+h73LWg>iDr@W?8g3ivry4WE!RvN)H4GcAW6H-JKgV5v zj;FN?b)|>XSPgi;OrgWbF|}l&d{)}!hfUYGR!wu0F~7SVU3w}PIm26)B}LYDbL0dU zX&I{BxviO@?TA_FNK@4|C%FbTROEJ z(?=*9!_}l6mJ2f@Sb%_Krzu*^sJs{vUa1N)hj3gs(q65=*oN5+1bO6|8)X%pYkla5 zEl(?(>vZyKL!<%hud=Xrv~PzhR5^_d9Zj#Eg=<<867E5I-ft0w7*!>AEG-mi%_9Q0 z8*Solv`FXqSE&2s7IceJO$3QskisGm4G~f{ew_`$mzK#&jghgBC0G4k21P=PxoNEG znOUY+P>m6>;xEAg5)RglCbuqIhA7PCE83l=hJ~mmsHzlR*4~+KXT;Y-^ETx#2gT5r z2ReEt5mGF-4K7lP5A!A+#Lt}XW~7{itgG_PiWFMj2aAGc3wg1h9^00`4mHt*Icr&{ z7`muQkDMWp;xW(O0w|TE!=Yc$t;*Y$R?83P&>$>=pv_rDE5Z>u9;S^@eMv1hBYrs1 zP9s3JUPtT1TP)MYG?fGuL7u!0y^L=3c7_`;y{@Tw01K%zJF$}j7H^>_*k2f0aeN)Y z=(EtK7tZR!4`o?NSr@XhD9SkQMO}vVXJRBl6cM%v7jS5H$83P@70}_<{iQkb&{3)0 zx}YYHvbH@#0L58csER>B>h|{(=w8J&&$$@ipCYXKnmB z@)UICZy4~nqm_9PK_2%)qYypLDn0{NMxajq+BcdnQ?s^V))}U2D;iNp&yA^$2OFM5 zhY7h|OG%Cq@>sUyuLC;V+C-^Vbe8?8;Is(Mld#?_-u|JKPsfTKHH#(FO?s`>HlN#x zyi}$SmcnpUhp9^keF0{SLPG#i@!)dh;ocCkoJtIc4;S;Jf#Du!yr8GEIn2{JS{r~| zOgen59i=IzfV*l<8O?gK58K-$Q^T}rjbS@OaYX1)+$q;0_C|xH)}&E64N8ii!%&G! zs5Jdi(OZ*YUqTp!83PEq8PgaDJG@j;dx_mw6YJZa z!Az4mgN6K+ywrTL-T{WD;nYGc83_8kjXi~?4$%R*Q->;HXOJep)WX)Vp%HBuf}F$2 zqr@28`J*GaVB3ry)z5iNx^jbK5%!kKrdBLcn+lcSi}>rzix!-O5|xG~8#Y3TROq^e zm*>_VmeoQ?EH7|M6hn6MenLd^vWwSCP6At5rS2GeLuZYw*C%@{^*EPuWCP4Dn6pf!r8iFPq4 z;?6QdXjQ0mSQKqu#R@imBow+K+oDVgD@`yE|La6oH;-<*jwUHen6ATEy5KMx_dWBK z<|wFVkqvTa_AI|5VpUxyTu)@s1_GgJZ?H8m91#da4N9z}G8gb@ZwV=*fDPof9wVGd zCR-8ljhyN@>If4w(A!qHL=-zx2IHF|!mr%@p~_y9RH-tD8?2WubVk+ zENDX%Is$SeGO~0F$~Cpfg3=z9QpZ7+)}er%;F?3qO`t3<6e(rFfg2YqlW7@LnpQ!n zB~a=O{WEN|Ay5Rf*LQj|c3S3gszUk>1%S$g zwSR{@Md8(tLaw|3GqZb%8f%r~6EJ2snq+pPm|3H{yi(hCMFnHNZ^X)qW^zrE1t5Xf zzWqwQposDZ;;{Q#f?lqM=Can$R8n>UU1rue8S_Bqjd`KR8ff0eaDxVQSP+3i(C`M}iCu8@^rcfb<-xOrOyf52|Zw zc2$A53zLKJ6*i0_rr0|3_hN#{jD@}&mY5#Is<<>l6Ej=X2IgVIsFKZ9STAgG!!>{C!C?+rDQ)kIa`hr9 z{($S>Rf&onA;v^ zE0nbi<&Fg^={pN;tLpPtyFpIyS2Db`BXk$ z(u>4ay{`eM12n*YvSWvX0MG0YjxNDw(ats;DWaUx0cVNY#X3ZMWIxM{#Nn`@14Gje zgm;c+(1r#P7^{?Oz*bTrz3!rfDP7D)qx)BfLZp;CkEYkrnqZZbRTe(qqS`PbxD4=c z)F=OZmut!t9rYH_zqCDaDHHt_>QEVH2C9Lt-X8X`vTuMpfO9bNXRJcK+bY+t&WEWQ zqVru9gvz807CqalH+m__$LKCZP`zBl0zJ=~mNk@lKE`q_3kkq_U=EQWDB{@L-|hd^Hc8PPdRXL(tHncgyjw&C?9h0e-IBD>$bDUm zZn5<=9cU4eoq)K;&KfGztD-}6^9Mg!aNz;!s(Um}rCn7i`!#lNSO<%Z4n)BbUfY@= zb)1`($Y#|>u8>;a5SAtcVx=kDWsZYAlNOqShgkhXTX6J>TGbFXy7G&r@|jtm*NI0p z`Fr-knyA1kscc}a+9-#oClh)PMgN-?ssxpEp`{ICN~?t0b{@;HxT3x%6@k=;qoWE% zA5}Vr}(IDLa7M|^Z>FE~G9aHPK3vSFD4GcF>~ou7`KxunVD7n}{Y3^XE!j zo2d9e2+P!x=jas=#mUt{OgJ7hV(3I8ZPIBtiHHs%8l=tObM1WG6U!{r*!I^Gzs()G zB-IEJiHHSKR%Lb=!)ph#khyH08?BY|6O2z#LvAAy4DS>g3gT`(=Tq*6$2z2FTr15` zI+Ym+dgX}E-$F&8{Tc3R%;;HF-HDXv;VR_9!O@X^7f#vZ5^DeM+C)C+i~>9w(3$;*h`6vKh;`wFXci#cSY?M zZ8Q+L6fx79w<0Yfj>uJ+hE7rYYN*;cCUw4|R}EMf{ZZb#!ztd34KF z0+hVkL7+p=`tjK>?zB&3HW19YNH@3}_2pIgVofbt+xiAC<^WpMV)P4$FvS_u-4!ew z$P?w)s`nX4z~Mj#KGG?EK}QJ973rlhYE~IQFz7GBvZV=WOiX)&1&FLkTk@y|;ZBTb zS@@R?x?2D&p~FhmiIH)BU&KfjHoM5PC|#fK*9$s-0$r1-X$+Sf8Cc2(7cq|{ei&5b zkVv@@e_p;R8fEWjyQBD?X3*Y&6CPK}xn{JVb>VZ(XrEU|*FEEL^{CD@J00hmt*12c z$vfkb4#hbglc(#u)>YW@DaahATf}Z3`Abo})@n8YzbCK)6{O}`OX;2h!82}l0)c>m zc~|JdyybEE9e~#y(D&rzLH@0xP&u->p+x)6oyj#ckjHd! z$7&U<*yMC{zZRuQA{Z>c`md+B2RTETI@^k2Gb$&0K|)|R``MflRT zie{B`6{9Z5?E#9tN=e;PSFRtYmP73r&P%j1xFn;OqhbhxP1B-`8^l4Nv8Vw5z$A%l z!+38|NOe_Q3rBOPI*cJ5#0YU0?wApKLdOqdw7NBwJcs7d;u!rU&Az%=NkvyW<-@4x z08|vI8yimh5EVGKwMmPsdpQ4W+)!^#+8u8cofajPs$6DEq*sh^xkgu}$l6KjytFOc zR`PNT>PM7ZBF<@F8?uF4sY3MZB(H84EBELYns=r`w9Oo;JS&nYl~v?8f%l>8-hkyH zZs=K{eJcxnu^8x~J0Y@2)Iz$bb3R~=x??=o(}2S_N_EOrdLYN^IYJJL)+$ze3TO>d zNhO|7=+)Ljnpk(l#V15c-{3-846(*6P#V=PI1BXp<*fK5IQH%x8p-9)o0U7*hmKyZ zPA%S=#+j8~jKAr+K=lu^Ht4_wy)fOkVyjGJZ#1DB#SK1x6ApQY@>?s1)}U_=4*LB; zQKff%u6kGNr#!)hx|pL|Tv+=xGw3O5+O+`vP+)`wv!h6-3JNwh3b*VKXHKDssjtzrz2a)h82l8f2bI=HW!oK& z{gErGn4t?%l*wnVST?MQFwZb%i(tH#zKS{2R35YK*L((MsB(%nCM#J|c2VpbR*tAnxPTC< zL!Q1>WrYD$RHI8&wWHi7K<$Ga@1g+^s=OK{g=uW1=L-x)aNk|URgSA7x?|0AXz6e~ zSzzZg+VjJRWw7B3|MhL#T2W~f-`G{pT830)_*C+po&MP|ns?B9U83AQk9^@Mu!`P9 zjmninYgA5r8r~br1zO!z?7_WN)Lzy_X5aW+LoVBJwT+i8vH^(fXN%MJ7CMk&yYIw5 zWVV1hUrerEYU1p_2`|Ai$|YcMAZc%5GVen`r?{3EBsLmrA;gsg0l`y;oJB+s`Py=% z%*FCmeniN|a3h9!5R=_7b>T`k&dQ4v`l#zCSE!7qQj4aQ%z;r*TH%TyCPyX6eTjaJ-8@<3u!Ej z0~JXt>&FkE9jq;*H*n@=b-I?zM1vGo7I z$HBV@s3jjVx8hZ;LfNTEZq#v(%phy5rfywuP=vdU zB7e2Jt+X;eoE6n)A9A3LUVkrMtO^(F>84&@IA~yP-`JS`c@42Nk&nhkqPNheIW{#9 zXAsEj@KGHdSZ%l7S>3)?&5neQ^u0;3@b%$t91Ne`gO=nAgX;`4!Q3YdS0@?W1%l)d zp`a&FoGtxBJqRb2btcDA^F?zh*G=7;9qGY##PNZkHQ-L?mh5lUIBWi*<`ehHJFDYI?UVZ}&ma97^lM`x6KYyTvlWVkt!z=pN%TiMY zWWiVmx8Q-wL7>&2eLT@)jWvoX> z`bCO|bb3Rmm1wOvO9tVS++@j`Gqr&GriO%q>Nl{iQB8f6r0StBl-o&lsTA*PsxqbwRp`hV$BY~Gw z?BdkVFYni{nQJ+@D+bE#nW+=tg98H*HDY1~1L3LP&W|!HR80d71%(wD2uDSP7u^*E z4{}?Hm~rKD(l%eITDX$DmOKAmks)cyEn?QY;QkG#xjX)<4c=sOEq`nIu`bLK=Zed% zwb0b$SsmVq2*^YRrfL!u6U%MG>af53E1y&xh1W>;PGi}<`?@L~gtrEd5{Fs~Uo;Xu z<>g;Ag2$IQ?Y-E81e-*OjV)UPmbd-*=tjj|4o*gc&Or-sRctWIe{2f3@aEJq7H}8R zG&f;bn#&}TIj1i(G=Qy#`xAr7lp3K2V}sDokeNQFVgI7mDjma1A694_5B=hfj+&Hkk*(NW^@jsZ0YqUzzsQ;jC(xVYI? z`hKQ?-XtnK#H-Zao<9+lJ)qgR_bbcg4@+H^x0O6Bsn}86-?V3El-=(O{NIubID zx~PwG4mmy=?l|R~Va--T0bnK-_TG5s6RfYHZ;D#J*Sq= zH_c>*GEzr;d)s4oK5d|GO(n1}h6KUKZb_I(S=~M=k%Y|nx)D?xb2cXEWGgtuiWy!# zG%NjRzQd{ADh~=VLw`dH4LVf^h2Sm5qHd#%-92AZ=Z+-$IS4E=^caJGcTUes-)w^Z zH8!Jhc@%ZM)6qu5J432&==Kfyagk*8u?tsa6K2l(E%niF9&@WI!g269x(A5=9Hb_jf{$^$!G!idK31+c`@SaT?;)l>q=z) z5o6)(!+p+q`WZ;%Ucaqx^4A!^8mf2$6Et}YH?^xj!U^M6M#Hv{Mf5s8V5}!@Y5v%^g^{#<{t`5=w6*SW zs{yyz^1^IsyyYF$=+1;KLN}S*it;XJu2C5?6nfK)APlF|?81>X2=1dZUTT+DEC6~H6fBf4K8JC2e$Q* zo6?Q4K-jLb#h?^v(if5%7}}P?UYADsmJkA}tR_`Gc0}&pPi@2X;-qoLK_WMlX-8a| zXN8F-l)~*%JLtDMyj3_2_9cRv-nZ0IwJ$I#H2J7$9mxZY%8{BoSPI5CAm_n?jp7#2 zRuZnE_aD_du?(*|EDJ+-(nioeUshR*2XwP8uj45+b#jW|8CGFrKRVZ7-v(j-^-S8} z)RigOkm^uK9Dd&*YD|6?Ko#28Yw8-IdP#OMLoo)HEf?+*7WvmLS1A8rmG!y?6-FCc z5M}lQ*t5U0%wrQECoP*&TZ?iZ29$5aY*7BZc}d-f=n1c1C}|9WAuvZ6V+iVQCmhlZ zy$32dT+L$ACfS)BTVLh&!1<};CCD_}!7?Bm`W?-ut=r~>lWDb%(8 zR5q*D{+Lb+HO^@=Vxd$#JBER+L;b6BMh&( z;gqYGD2^ed6E`9anilC$1AQi+n(r!T=1ZX%D!X_glBrav5JP2NrqXx)J*vwy7I2lm zDrs#G22|8+Xg1K-ji7JckV?X?MCfPX9ZnZ(LYg2@T2OnjN^O6mG3|9)khj}riY}Oo zp6_s_>N8X#tR=6!&uxoFS#_urH@fFs!?Z*kh6p`e{=%}#F2x9qjsPS^Jhn#e~innj385`C6Vij5Ga`2l8NLBlzz#)HTs}v2UZStTq zsuNy!IxK))EAF;&X5%e1ZiM3S6l~D9?au1M?w7+*vHh$w)aNKe%5)I0iBgsW1nL*9 zBEslpei0Qx_dLbtjD2S%;-rhvvl2`1(P?p7g0{}31Ao-0NS0PXE9Wn*D#jhE|gCd2lX!32#VOxDG_JtVq!r&aAPq`%nRR!z3A}s<0_+?UALf zv%KYC6}=RSs}$FY*Sn%`3&!zjL)b45Q$>0OffXC#11zpvO5b+8cu0**InwB;NQfX5 zO@}A>P&+EzNTjX|a$4^OAcT&#{9RYk5w7moxPMxL6NWJx*N;Io4IxS3dX6M4THy@s1wt=rEM0ByZQ< zm2Bjc+Ov+zPi`JaRD2*uaY-2Qouc=b4y%X=Tk^%2N0+{5AQ;9UjbSLP8dbtAY11`b zd^Md{GqqyRx>y-kB$+!8ps&M+#JxM2-9dXjA zvs^{J{1odCqa}kX!Ukvsi)|~b4!kRWz&Eb_NiaMLc(?-&7_DU@Tq5MeLgZ&?a`hoSDu zDGU%LRvqSO1CYX==S98gzP?l@1wtpcb2vpFWc<%He)PjI9d#%hX8jd|Saiz4!&pM9 z6Pl~wnlklDGn^)btM(nzD9P$M-{*bd$2dPL!Y_4F*~e6=;K|hK}J_# zsDna1#bH)vua;L96o70Lix_sJpQ5=8FkEW;FMq4 zT`{N{n;L1QQ~fE8HFW1SdbO{OICt*2sReQR0COt3aGn+zfn=!WB3s_^TwRew1P*#z9Be>U50h`9Q z-WN{PNU6GVG+`&cVHX?xGUcZ0Dk+4_2)33RP$!uWWoY11;8f@6gLnhOTX$FR=pj50 zC&+*-?7&gmf(ET&f2^9@*xI(Ib6a~eiS3GC@B!+nV~(28L%bPQQMR=cs!Pev=)U!mG);G$|RW~q>^49&pVFXFJaepC$BU%Z^wcXjWV}~=G%4CNI z6aCmr(b?8mX(gyg!J4v(3`_QJ4ntlu9+y;Frh$I*u$F3zTK1((5Tp~V2yQ9n6)$(Z z#SQL8pT(_a_q+5cC)Bu)N>GNts1gywdXjdqwXAC7UA48*YP^EyActWQQUl$bPz8?1 zwG#O2j}EyR&@6`@<{74Zlv<$ijk}1FWf7DRI1g|DM)~pji?Dz-x6|;CN(bUvvM084;vM-}u$iMWMBRTk${2Wv%N^U!cQ#<(Dm|tsF?wmv82|Y@P-Wo%5ky2eD;7cMfHTBT=v5#oN)gV2B_?fg=b2yQHZlOMQuc1m%%`47Ss%<=xAj74cKr z*YWoRV%hvBTmSvD1zFLy?a5%D3c%yIEG%!$8(tD$DYH9_MJPEYp93Bn7m_kH%^Ddxd0s$;{gvOJd3mt z17}7K;1%NQ;9==XY*T}l!6DyvY!yVV=y|R3yDr4CB6sG#4<)NQylehqs)$akqCUkp z3JwiSik{+zCrSq_eN=<)vp#%hYcvC8<3RJJA zgh~pV^(*GsQnGA?bgwV`YAox37jIqI)4#GbPd^~uIZx~^LtBEyi z?~U*Oo2RmrFazO*x0d2Q_W}sK-J!<1OVHh4@q>B%{?e6lPCA8XRdPnHP;YdZ15Mp4mMU|d>R6g; zC6x*4R?#wXB~{Q?8I5z!?^PUCm*;LYO2><~lh$2R>Ns1uUYi!GNmvIv(hlI%kM@mN zEaeT^VGF6D8Ltz8qOEBE@ycqgKDD4gq)*87OPd*%Q#>AqtUJej3@^zi5xDLE4mK`0 ztzw$E#YV`{wvf+?DruZiiS8=AR>GamF0B<*RJf*+jqpx-_EgF4kV;KAqd`V(mqC34 z4Q02bGC3L}tb+sFTWKD$qCDobcO!rR@gG|dEt1OMT$TQz!BjUzms71N#eE^O7r_N! z9SEq9%^51}yfxdnzYA_wN7bv)iV7CCVojRbdJ&^0*x@U>y5tO*K6SKhpG@2Mc3zIy zSHg{77jHT_+$xy9sHkpIl997SY-v?=k^=@{h+Sq)QNg?5an^|M9o(MAyi#W>J2H@h zL|3kK7B)00Lw_(u8INWzCGL6ojmUwhW2l2ioYI+mc{cSfDMeE3A3 z_ewHztb0S>bbJ|WG{n10;~j4gLv%g)wVs+ya3)a2?5c+11*-NTQnj1{u1Niq*flC! zxBR$xbMy5umpgQvxZIT|1?ydRq(e6AE3Gyh4m;o9KtuYz(XF{MHn7814ba+py2*Rz z$}K#@(#Tt~=ml(qy3q`|M1?Ifq$|bBid6Qx3Kv@-SGNmBc^_ zI0GeW4<%vltk)PfhT3aD6dLLRgAxO2WmN_`9~y11!Muz_JyW$oPc#<(m;ymB#Z*_c zhVcizqSZqnrEQ1gX_Ux)2r+9;Q!W%O8NMBV@o~JrTksUM*|B@gya}8BAI1&;N{xta z4~>ZST)KH31kIMb-iD?QJvN(s)I3c^lFpm3Lfa^7cBrycc@~L=oRPIv+oh$d-ik6p z={sF;%q4S8*<3pvapcbNqMcA54@d{nB8k!}eWjx>n9aN!gn!LAExJ!+GKrly-c#+h zB)cV1zkqPSc;|AwLwQGsA5K}B3ap7vk#@5lZDfW(CQE26dS6xMghs^!o$qQZxwpn(oIIB9W=9mHE1t%3 zy$X=SI+!){>FPlsZnv+y?(w(tv$tV-*F*Dz{{eSgS>ZGOFgnzNSVMN_KrYdPZ=|Nax9VSXW>aQ3 z)-X7fOEoNC(LO(y*b-~lGC0z(HIdyKYv|oMh==(*m*G2zFvy~s1}+@j!|rqmdO&^+ z_vc~_n4!Vn%nYc(Gz@1_wD}5;;A0K` z-!#{yabip9A_bMl#6UU;c0))r%SmRj@l~ur{lRYb6i5WZRL{s3u%Mmyag#68gMGw< zZ}s$KQrq-Ze|j*bf2-{43kXsFM7I|ki_e?EqzeD4g;`rQUBzN;0vsc_{^Gm(Di(Vi zeon+c{rqNmezO4e9;x~@&bVHL>+$%fpTAI^zfgeP@=Y}KspYSj=F^1hKfm_ckbZv7 zc+TM*dEnuQ=Y>t|Z}4LZ{^{qRpUBTYPcKEEN&GbdUvx*OKZoJiN_^MgpZk2BJYUBI zlcx)zeDPfmI}JZy^X320T&6fQmuc=1QvLoq9sRu#_h0orf5%(-`8(dq5AKoYDgTsD zoqvI2TkwNq>GG@R=Qq|f#XbC`%7}jI=k@!a3yhv$K{xT4a|}N}=NP`;Cvv3xABlhF z^V@*Y6O=#t9GJ(?ADGA29s0%jGA3emzds1v|9oQuKi}BE4?KRCJSbnf-e~kA_(4zT z_pkjOKVSPhrdX`&fjpq|FPE`P@x%Z8vP1m*vO`R9{%lRj-)8!MXFPw;1kTAl6PVAl zR6xFunf{k>&!7GcgZ%srgZ%s^Em+}UrvEMABvYyz^f|bTpFem$KX0bTs8^2n;u)&q z`uUgT`IqH+T~CNNeKbG){SdGj_@|$*yPVUn`%rlL`Z@jmB%UQo{rntxevUl<1n&7i z`Z<1 zqXy(#r!URWy{p;jZ&H`~w@ZW{%OwAM{2+d7xoeozUD)#nI3KYU_xJne3M?Lbo6(vq^Hx-{Pzl-W})elxolcv%T`bi!XM2~U+eFYY;RKkKI0|o zvG}9kPhacr-ZV~9(H9}#q!%gw`g>nQ{)YwEEHs@z|2Hr9@~`=6dj0LsKfSM(&m0g? zKFkmCU*LPlyf*2nxe%XW`6i=|t|O{d>;MXi?%yHw`r0f%&DTv&_|mmkN4(sv0NyMA zh(^EXu#q0!(;u&_JU(5xNo7mC=%e{86F&MquaRq_iOSC)?lltuKAKP7d+}}cH0R{uXj=PiC153BC153BC153B zC153BC153BC153BC153BC153BC153BC153BC153BC153BC153BC153BC153BC153B zC153BC153BC153BC153BC153BC153BC153BC153BC153BC153BC153BC153BC153B zC153BC153BC153BC153BC153BC153BC153BC153BC153BC153BC153BC153BC153B zC153BC153BC153BC153BC153BC153BC153BC153BC153BC153BC153BC153BC153B zC153BC153BC153BC153BC153BC153BC153BC153BC153BC153BC153BC153BC153B zC153BC153BC153BC153BC153BC153BC153BC153BC153BC153BC153BC153BC153B zC153BC153BC153BC153BC153BC153BC153BC153BC153BC153BC153BC153BC153B zC153BC153BC153BC153BC153BC153BC153BC153BC153BC153BC153BC153BC153B zC153BC153BC153BC153BC153BC153BC153BC153BC153BC153BC153BC153BC153B zC153BC153BC153BC153BC153BC153BC153BC153BC153BC153BC153BC153BC153B zC153BC153BC153BC153BC153BC153BC153BC153BC153BC153BC153BC153BC153B zC153BC153BC153BC153BC153BC153BC153BC153BC153BC153BC153BC153BC153B zC153BC153BC153BC153BC153BC153BC153BC153BC153BC153BC153BC153BC153B zC153BC153BC153BC153BC153BC153BC153BC153BC153BC153BC153BC153BC153B zC153BC153BC153BC153BC153BC154+|FuI00ssI20D}Cj2e}Y3V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA vz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*2A%@}3f#LL diff --git a/exchange/exchange-cli.cpp b/exchange/exchange-cli.cpp index 03ce1fa..592f08e 100644 --- a/exchange/exchange-cli.cpp +++ b/exchange/exchange-cli.cpp @@ -171,7 +171,6 @@ static void print_help_and_exit(const char* program_name) { } int main(int argc, char** argv) { - init_instruments(); //unique_ptr state; std::unique_ptr state; diff --git a/exchange/exchange.h b/exchange/exchange.h index ecdfc32..946575b 100644 --- a/exchange/exchange.h +++ b/exchange/exchange.h @@ -13,8 +13,6 @@ #include #include "state-mgr.h" -constexpr uint64_t LAMBDA_PHYS_START = UINT64_C(0); - using symbol_type = std::array; using token_type = std::array; using currency_type = int; @@ -118,24 +116,24 @@ using execution_reports_type = std::vector; using wallet_type = std::map, arena_allocator>>; using books_type = std::map, arena_allocator>>; using wallets_type = std::map, arena_allocator>>; - -std::map tokens; -std::map instruments; - -void init_instruments() { - tokens[token_type{"ctsi"}] = contract_address_type{"0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef"}; - tokens[token_type{"usdc"}] = contract_address_type{"0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef"}; - instruments[symbol_type{"ctsi/usdc"}] = instrument{token_type{"ctsi"}, token_type{"usdc"}}; -} +using tokens_type = std::map, arena_allocator>>; +using instruments_type = std::map, arena_allocator>>; // exchange class to be "deserialized" from lambda state class exchange { + tokens_type tokens; + instruments_type instruments; books_type books; wallets_type wallets; id_type next_id{0}; public: - + exchange() { + tokens[token_type{"ctsi"}] = contract_address_type{"0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef"}; + tokens[token_type{"usdc"}] = contract_address_type{"0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef"}; + instruments[symbol_type{"ctsi/usdc"}] = instrument{token_type{"ctsi"}, token_type{"usdc"}}; + } + bool new_order(order o, execution_reports_type &reports) { // validate order auto instrument = instruments.find(o.symbol);