From 214197623fb5c8148966be5f7ebe30c784bb12b5 Mon Sep 17 00:00:00 2001 From: Pacu Date: Tue, 7 Apr 2026 19:54:23 -0300 Subject: [PATCH 01/15] Squashed 'lightwallet-protocol/' content from commit 23f0768ea git-subtree-dir: lightwallet-protocol git-subtree-split: 23f0768ea4471b63285f3c0e9b6fbb361674aa2b --- CHANGELOG.md | 171 ++++++++++++++++++ LICENSE | 21 +++ walletrpc/compact_formats.proto | 125 +++++++++++++ walletrpc/service.proto | 303 ++++++++++++++++++++++++++++++++ 4 files changed, 620 insertions(+) create mode 100644 CHANGELOG.md create mode 100644 LICENSE create mode 100644 walletrpc/compact_formats.proto create mode 100644 walletrpc/service.proto diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 000000000..59a13060f --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,171 @@ +# Changelog +All notable changes to this library will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this library adheres to Rust's notion of +[Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## Unreleased + +## [v0.4.0] - 2025-12-03 + +### Added +- `compact_formats.CompactTxIn` +- `compact_formats.TxOut` +- `service.PoolType` +- `service.LightdInfo` has added fields `upgradeName`, `upgradeHeight`, and + `lightwalletProtocolVersion` +- `compact_formats.CompactTx` has added fields `vin` and `vout`, + which may be used to represent transparent transaction input and output data. +- `service.BlockRange` has added field `poolTypes`, which allows + the caller of service methods that take this type as input to cause returned + data to be filtered to include information only for the specified protocols. + For backwards compatibility, when this field is set the default (empty) value, + servers should return Sapling and Orchard data. This field is to be ignored + when the type is used as part of a `service.TransparentAddressBlockFilter`. + +### Changed +- The `hash` field of `compact_formats.CompactTx` has been renamed to `txid`. + This is a serialization-compatible clarification, as the index of this field + in the .proto type does not change. +- `service.Exclude` has been renamed to `service.GetMempoolTxRequest` and has + an added `poolTypes` field, which allows the caller of this method to specify + which pools the resulting `CompactTx` values should contain data for. + +### Deprecated +- `service.CompactTxStreamer`: + - The `GetBlockNullifiers` and `GetBlockRangeNullifiers` methods are + deprecated. + +## [v0.3.6] - 2025-05-20 + +### Added +- `service.LightdInfo` has added field `donationAddress` +- `service.CompactTxStreamer.GetTaddressTransactions`. This duplicates + the `GetTaddressTxids` method, but is more accurately named. + +### Deprecated +- `service.CompactTxStreamer.GetTaddressTxids`. Use `GetTaddressTransactions` + instead. + +## [v0.3.5] - 2023-07-03 + +### Added +- `compact_formats.ChainMetadata` +- `service.ShieldedProtocol` +- `service.GetSubtreeRootsArg` +- `service.SubtreeRoot` +- `service.CompactTxStreamer.GetBlockNullifiers` +- `service.CompactTxStreamer.GetBlockRangeNullifiers` +- `service.CompactTxStreamer.SubtreeRoots` + +### Changed +- `compact_formats.CompactBlock` has added field `chainMetadata` +- `compact_formats.CompactSaplingOutput.epk` has been renamed to `ephemeralKey` + +## [v0.3.4] - UNKNOWN + +### Added +- `service.CompactTxStreamer.GetLatestTreeState` + +## [v0.3.3] - 2022-04-02 + +### Added +- `service.TreeState` has added field `orchardTree` + +### Changed +- `service.TreeState.tree` has been renamed to `saplingTree` + +## [v0.3.2] - 2021-12-09 + +### Changed +- `compact_formats.CompactOrchardAction.encCiphertext` has been renamed to + `CompactOrchardAction.ciphertext` + +## [v0.3.1] - 2021-12-09 + +### Added +- `compact_formats.CompactOrchardAction` +- `service.CompactTxStreamer.GetMempoolTx` (removed in 0.3.0) has been reintroduced. +- `service.Exclude` (removed in 0.3.0) has been reintroduced. + +### Changed +- `compact_formats.CompactSpend` has been renamed `CompactSaplingSpend` +- `compact_formats.CompactOutput` has been renamed `CompactSaplingOutput` + +## [v0.3.0] - 2021-07-23 + +### Added +- `service.CompactTxStreamer.GetMempoolStream` + +### Removed +- `service.CompactTxStreamer.GetMempoolTx` has been replaced by `GetMempoolStream` +- `service.Exclude` has been removed as it is now unused. + +## [v0.2.4] - 2021-01-14 + +### Changed +- `service.GetAddressUtxosArg.address` has been replaced by the + repeated field `addresses`. This is a [conditionally-safe](https://protobuf.dev/programming-guides/proto3/#conditionally-safe-changes) + format change. +- `service.GetAddressUtxosReply` has added field `address` + +## [v0.2.3] - 2021-01-14 + +### Added +- `service.LightdInfo` has added fields: + - `estimatedHeight` + - `zcashdBuild` + - `zcashdSubversion` + +## [v0.2.2] - 2020-10-22 + +### Added +- `service.TreeState` +- `service.GetAddressUtxosArg` +- `service.GetAddressUtxosReply` +- `service.GetAddressUtxosReplyList` +- `service.CompactTxStreamer.GetTreeState` +- `service.CompactTxStreamer.GetAddressUtxos` +- `service.CompactTxStreamer.GetAddressUtxosStream` + +## [v0.2.1] - 2020-10-06 + +### Added +- `service.Address` +- `service.AddressList` +- `service.Balance` +- `service.Exclude` +- `service.CompactTxStreamer.GetTaddressBalance` +- `service.CompactTxStreamer.GetTaddressBalanceStream` +- `service.CompactTxStreamer.GetMempoolTx` +- `service.LightdInfo` has added fields: + - `gitCommit` + - `branch` + - `buildDate` + - `buildUser` + +## [v0.2.0] - 2020-04-24 + +### Added +- `service.Duration` +- `service.PingResponse` +- `service.CompactTxStreamer.Ping` + +### Removed +- `service.TransparentAddress` was removed (it was unused in any service API). + +## [v0.1.1] - 2019-11-27 + +### Added +- `service.Empty` +- `service.LightdInfo` +- `service.TransparentAddress` +- `service.TransparentAddressBlockFilter` +- `service.CompactTxStreamer.GetTaddressTxids` +- `service.CompactTxStreamer.GetLightdInfo` +- `service.RawTransaction` has added field `height` + +## [v0.1.0] - 2019-09-19 + +Initial release diff --git a/LICENSE b/LICENSE new file mode 100644 index 000000000..a8b65b3ce --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2019 Electric Coin Company + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/walletrpc/compact_formats.proto b/walletrpc/compact_formats.proto new file mode 100644 index 000000000..c62c7acbb --- /dev/null +++ b/walletrpc/compact_formats.proto @@ -0,0 +1,125 @@ +// Copyright (c) 2019-2021 The Zcash developers +// Distributed under the MIT software license, see the accompanying +// file COPYING or https://www.opensource.org/licenses/mit-license.php . + +syntax = "proto3"; +package cash.z.wallet.sdk.rpc; +option go_package = "lightwalletd/walletrpc"; +option swift_prefix = ""; + +// REMINDER: proto3 fields are all optional. A field that is not present will be set to its zero/false/empty +// value. + +// Information about the state of the chain as of a given block. +message ChainMetadata { + uint32 saplingCommitmentTreeSize = 1; // the size of the Sapling note commitment tree as of the end of this block + uint32 orchardCommitmentTreeSize = 2; // the size of the Orchard note commitment tree as of the end of this block +} + +// A compact representation of a Zcash block. +// +// CompactBlock is a packaging of ONLY the data from a block that's needed to: +// 1. Detect a payment to your Shielded address +// 2. Detect a spend of your Shielded notes +// 3. Update your witnesses to generate new spend proofs. +// 4. Spend UTXOs associated to t-addresses of your wallet. +message CompactBlock { + uint32 protoVersion = 1; // the version of this wire format, for storage + uint64 height = 2; // the height of this block + bytes hash = 3; // the ID (hash) of this block, same as in block explorers + bytes prevHash = 4; // the ID (hash) of this block's predecessor + uint32 time = 5; // Unix epoch time when the block was mined + bytes header = 6; // full header (as returned by the getblock RPC) + repeated CompactTx vtx = 7; // zero or more compact transactions from this block + ChainMetadata chainMetadata = 8; // information about the state of the chain as of this block +} + +// A compact representation of a Zcash transaction. +// +// CompactTx contains the minimum information for a wallet to know if this transaction +// is relevant to it (either pays to it or spends from it) via shielded elements. Additionally, +// it can optionally include the minimum necessary data to detect payments to transparent addresses +// related to your wallet. +message CompactTx { + // The index of the transaction within the block. + uint64 index = 1; + + // The id of the transaction as defined in + // [§ 7.1.1 ‘Transaction Identifiers’](https://zips.z.cash/protocol/protocol.pdf#txnidentifiers) + // This byte array MUST be in protocol order and MUST NOT be reversed + // or hex-encoded; the byte-reversed and hex-encoded representation is + // exclusively a textual representation of a txid. + bytes txid = 2; + + // The transaction fee: present if server can provide. In the case of a + // stateless server and a transaction with transparent inputs, this will be + // unset because the calculation requires reference to prior transactions. + // If there are no transparent inputs, the fee will be calculable as: + // valueBalanceSapling + valueBalanceOrchard + sum(vPubNew) - sum(vPubOld) - sum(tOut) + uint32 fee = 3; + + repeated CompactSaplingSpend spends = 4; + repeated CompactSaplingOutput outputs = 5; + repeated CompactOrchardAction actions = 6; + + // `CompactTxIn` values corresponding to the `vin` entries of the full transaction. + // + // Note: the single null-outpoint input for coinbase transactions is omitted. Light + // clients can test `CompactTx.index == 0` to determine whether a `CompactTx` + // represents a coinbase transaction, as the coinbase transaction is always the + // first transaction in any block. + repeated CompactTxIn vin = 7; + + // A sequence of transparent outputs being created by the transaction. + repeated TxOut vout = 8; +} + +// A compact representation of a transparent transaction input. +message CompactTxIn { + // The id of the transaction that generated the output being spent. This + // byte array must be in protocol order and MUST NOT be reversed or + // hex-encoded. + bytes prevoutTxid = 1; + + // The index of the output being spent in the `vout` array of the + // transaction referred to by `prevoutTxid`. + uint32 prevoutIndex = 2; +} + +// A transparent output being created by the transaction. +// +// This contains identical data to the `TxOut` type in the transaction itself, and +// thus it is not "compact". +message TxOut { + // The value of the output, in Zatoshis. + uint64 value = 1; + + // The script pubkey that must be satisfied in order to spend this output. + bytes scriptPubKey = 2; +} + +// A compact representation of a [Sapling Spend](https://zips.z.cash/protocol/protocol.pdf#spendencodingandconsensus). +// +// CompactSaplingSpend is a Sapling Spend Description as described in 7.3 of the Zcash +// protocol specification. +message CompactSaplingSpend { + bytes nf = 1; // Nullifier (see the Zcash protocol specification) +} + +// A compact representation of a [Sapling Output](https://zips.z.cash/protocol/protocol.pdf#outputencodingandconsensus). +// +// It encodes the `cmu` field, `ephemeralKey` field, and a 52-byte prefix of the +// `encCiphertext` field of a Sapling Output Description. Total size is 116 bytes. +message CompactSaplingOutput { + bytes cmu = 1; // Note commitment u-coordinate. + bytes ephemeralKey = 2; // Ephemeral public key. + bytes ciphertext = 3; // First 52 bytes of ciphertext. +} + +// A compact representation of an [Orchard Action](https://zips.z.cash/protocol/protocol.pdf#actionencodingandconsensus). +message CompactOrchardAction { + bytes nullifier = 1; // [32] The nullifier of the input note + bytes cmx = 2; // [32] The x-coordinate of the note commitment for the output note + bytes ephemeralKey = 3; // [32] An encoding of an ephemeral Pallas public key + bytes ciphertext = 4; // [52] The first 52 bytes of the encCiphertext field +} diff --git a/walletrpc/service.proto b/walletrpc/service.proto new file mode 100644 index 000000000..d3dc8ba04 --- /dev/null +++ b/walletrpc/service.proto @@ -0,0 +1,303 @@ +// Copyright (c) 2019-2020 The Zcash developers +// Distributed under the MIT software license, see the accompanying +// file COPYING or https://www.opensource.org/licenses/mit-license.php . + +syntax = "proto3"; +package cash.z.wallet.sdk.rpc; +option go_package = "lightwalletd/walletrpc"; +option swift_prefix = ""; +import "compact_formats.proto"; + +// An identifier for a Zcash value pool. +enum PoolType { + POOL_TYPE_INVALID = 0; + TRANSPARENT = 1; + SAPLING = 2; + ORCHARD = 3; +} + +// A BlockID message contains identifiers to select a block: a height or a +// hash. Specification by hash is not implemented, but may be in the future. +message BlockID { + uint64 height = 1; + bytes hash = 2; +} + +// BlockRange specifies a series of blocks from start to end inclusive. +// Both BlockIDs must be heights; specification by hash is not yet supported. +// +// If no pool types are specified, the server should default to the legacy +// behavior of returning only data relevant to the shielded (Sapling and +// Orchard) pools; otherwise, the server should prune `CompactBlocks` returned +// to include only data relevant to the requested pool types. Clients MUST +// verify that the version of the server they are connected to are capable +// of returning pruned and/or transparent data before setting `poolTypes` +// to a non-empty value. +message BlockRange { + BlockID start = 1; + BlockID end = 2; + repeated PoolType poolTypes = 3; +} + +// A TxFilter contains the information needed to identify a particular +// transaction: either a block and an index, or a direct transaction hash. +// Currently, only specification by hash is supported. +message TxFilter { + BlockID block = 1; // block identifier, height or hash + uint64 index = 2; // index within the block + bytes hash = 3; // transaction ID (hash, txid) +} + +// RawTransaction contains the complete transaction data. It also optionally includes +// the block height in which the transaction was included, or, when returned +// by GetMempoolStream(), the latest block height. +// +// FIXME: the documentation here about mempool status contradicts the documentation +// for the `height` field. See https://github.com/zcash/librustzcash/issues/1484 +message RawTransaction { + // The serialized representation of the Zcash transaction. + bytes data = 1; + // The height at which the transaction is mined, or a sentinel value. + // + // Due to an error in the original protobuf definition, it is necessary to + // reinterpret the result of the `getrawtransaction` RPC call. Zcashd will + // return the int64 value `-1` for the height of transactions that appear + // in the block index, but which are not mined in the main chain. Here, the + // height field of `RawTransaction` was erroneously created as a `uint64`, + // and as such we must map the response from the zcashd RPC API to be + // representable within this space. Additionally, the `height` field will + // be absent for transactions in the mempool, resulting in the default + // value of `0` being set. Therefore, the meanings of the `height` field of + // the `RawTransaction` type are as follows: + // + // * height 0: the transaction is in the mempool + // * height 0xffffffffffffffff: the transaction has been mined on a fork that + // is not currently the main chain + // * any other height: the transaction has been mined in the main chain at the + // given height + uint64 height = 2; +} + +// A SendResponse encodes an error code and a string. It is currently used +// only by SendTransaction(). If error code is zero, the operation was +// successful; if non-zero, it and the message specify the failure. +message SendResponse { + int32 errorCode = 1; + string errorMessage = 2; +} + +// Chainspec is a placeholder to allow specification of a particular chain fork. +message ChainSpec {} + +// Empty is for gRPCs that take no arguments, currently only GetLightdInfo. +message Empty {} + +// LightdInfo returns various information about this lightwalletd instance +// and the state of the blockchain. +message LightdInfo { + string version = 1; + string vendor = 2; + bool taddrSupport = 3; // true + string chainName = 4; // either "main" or "test" + uint64 saplingActivationHeight = 5; // depends on mainnet or testnet + string consensusBranchId = 6; // protocol identifier, see consensus/upgrades.cpp + uint64 blockHeight = 7; // latest block on the best chain + string gitCommit = 8; + string branch = 9; + string buildDate = 10; + string buildUser = 11; + uint64 estimatedHeight = 12; // less than tip height if zcashd is syncing + string zcashdBuild = 13; // example: "v4.1.1-877212414" + string zcashdSubversion = 14; // example: "/MagicBean:4.1.1/" + string donationAddress = 15; // Zcash donation UA address + string upgradeName = 16; // name of next pending network upgrade, empty if none scheduled + uint64 upgradeHeight = 17; // height of next pending upgrade, zero if none is scheduled + string lightwalletProtocolVersion = 18; // version of https://github.com/zcash/lightwallet-protocol served by this server +} + +// TransparentAddressBlockFilter restricts the results of the GRPC methods that +// use it to the transactions that involve the given address and were mined in +// the specified block range. Non-default values for both the address and the +// block range must be specified. Mempool transactions are not included. +// +// The `poolTypes` field of the `range` argument should be ignored. +// Implementations MAY consider it an error if any pool types are specified. +message TransparentAddressBlockFilter { + string address = 1; // t-address + BlockRange range = 2; // start, end heights only +} + +// Duration is currently used only for testing, so that the Ping rpc +// can simulate a delay, to create many simultaneous connections. Units +// are microseconds. +message Duration { + int64 intervalUs = 1; +} + +// PingResponse is used to indicate concurrency, how many Ping rpcs +// are executing upon entry and upon exit (after the delay). +// This rpc is used for testing only. +message PingResponse { + int64 entry = 1; + int64 exit = 2; +} + +message Address { + string address = 1; +} +message AddressList { + repeated string addresses = 1; +} +message Balance { + int64 valueZat = 1; +} + +// Request parameters for the `GetMempoolTx` RPC. +message GetMempoolTxRequest { + // A list of transaction ID byte string suffixes that should be excluded + // from the response. These suffixes may be produced either directly from + // the underlying txid bytes, or, if the source values are encoded txid + // strings, by truncating the hexadecimal representation of each + // transaction ID to an even number of characters, and then hex-decoding + // and then byte-reversing this value to obtain the byte representation. + repeated bytes exclude_txid_suffixes = 1; + // We reserve field number 2 for a potential future `exclude_txid_prefixes` + // field. + reserved 2; + // The server must prune `CompactTx`s returned to include only data + // relevant to the requested pool types. If no pool types are specified, + // the server should default to the legacy behavior of returning only data + // relevant to the shielded (Sapling and Orchard) pools. + repeated PoolType poolTypes = 3; +} + +// The TreeState is derived from the Zcash z_gettreestate rpc. +message TreeState { + string network = 1; // "main" or "test" + uint64 height = 2; // block height + string hash = 3; // block id + uint32 time = 4; // Unix epoch time when the block was mined + string saplingTree = 5; // sapling commitment tree state + string orchardTree = 6; // orchard commitment tree state +} + +enum ShieldedProtocol { + sapling = 0; + orchard = 1; +} + +message GetSubtreeRootsArg { + uint32 startIndex = 1; // Index identifying where to start returning subtree roots + ShieldedProtocol shieldedProtocol = 2; // Shielded protocol to return subtree roots for + uint32 maxEntries = 3; // Maximum number of entries to return, or 0 for all entries. +} +message SubtreeRoot { + bytes rootHash = 2; // The 32-byte Merkle root of the subtree. + bytes completingBlockHash = 3; // The hash of the block that completed this subtree. + uint64 completingBlockHeight = 4; // The height of the block that completed this subtree in the main chain. +} + +// Results are sorted by height, which makes it easy to issue another +// request that picks up from where the previous left off. +message GetAddressUtxosArg { + repeated string addresses = 1; + uint64 startHeight = 2; + uint32 maxEntries = 3; // zero means unlimited +} +message GetAddressUtxosReply { + string address = 6; + bytes txid = 1; + int32 index = 2; + bytes script = 3; + int64 valueZat = 4; + uint64 height = 5; +} +message GetAddressUtxosReplyList { + repeated GetAddressUtxosReply addressUtxos = 1; +} + +service CompactTxStreamer { + // Return the BlockID of the block at the tip of the best chain + rpc GetLatestBlock(ChainSpec) returns (BlockID) {} + + // Return the compact block corresponding to the given block identifier + rpc GetBlock(BlockID) returns (CompactBlock) {} + + // Same as GetBlock except the returned CompactBlock value contains only + // nullifiers. + // + // Note: this method is deprecated. Implementations should ignore any + // `PoolType::TRANSPARENT` member of the `poolTypes` argument. + rpc GetBlockNullifiers(BlockID) returns (CompactBlock) {} + + // Return a list of consecutive compact blocks in the specified range, + // which is inclusive of `range.end`. + // + // If range.start <= range.end, blocks are returned increasing height order; + // otherwise blocks are returned in decreasing height order. + rpc GetBlockRange(BlockRange) returns (stream CompactBlock) {} + + // Same as GetBlockRange except the returned CompactBlock values contain + // only nullifiers. + // + // Note: this method is deprecated. Implementations should ignore any + // `PoolType::TRANSPARENT` member of the `poolTypes` argument. + rpc GetBlockRangeNullifiers(BlockRange) returns (stream CompactBlock) {} + + // Return the requested full (not compact) transaction (as from zcashd) + rpc GetTransaction(TxFilter) returns (RawTransaction) {} + + // Submit the given transaction to the Zcash network + rpc SendTransaction(RawTransaction) returns (SendResponse) {} + + // Return RawTransactions that match the given transparent address filter. + // + // Note: This function is misnamed, it returns complete `RawTransaction` values, not TxIds. + // NOTE: this method is deprecated, please use GetTaddressTransactions instead. + rpc GetTaddressTxids(TransparentAddressBlockFilter) returns (stream RawTransaction) {} + + // Return the transactions corresponding to the given t-address within the given block range. + // Mempool transactions are not included in the results. + rpc GetTaddressTransactions(TransparentAddressBlockFilter) returns (stream RawTransaction) {} + + rpc GetTaddressBalance(AddressList) returns (Balance) {} + rpc GetTaddressBalanceStream(stream Address) returns (Balance) {} + + // Returns a stream of the compact transaction representation for transactions + // currently in the mempool. The results of this operation may be a few + // seconds out of date. If the `exclude_txid_suffixes` list is empty, + // return all transactions; otherwise return all *except* those in the + // `exclude_txid_suffixes` list (if any); this allows the client to avoid + // receiving transactions that it already has (from an earlier call to this + // RPC). The transaction IDs in the `exclude_txid_suffixes` list can be + // shortened to any number of bytes to make the request more + // bandwidth-efficient; if two or more transactions in the mempool match a + // txid suffix, none of the matching transactions are excluded. Txid + // suffixes in the exclude list that don't match any transactions in the + // mempool are ignored. + rpc GetMempoolTx(GetMempoolTxRequest) returns (stream CompactTx) {} + + // Return a stream of current Mempool transactions. This will keep the output stream open while + // there are mempool transactions. It will close the returned stream when a new block is mined. + rpc GetMempoolStream(Empty) returns (stream RawTransaction) {} + + // GetTreeState returns the note commitment tree state corresponding to the given block. + // See section 3.7 of the Zcash protocol specification. It returns several other useful + // values also (even though they can be obtained using GetBlock). + // The block can be specified by either height or hash. + rpc GetTreeState(BlockID) returns (TreeState) {} + rpc GetLatestTreeState(Empty) returns (TreeState) {} + + // Returns a stream of information about roots of subtrees of the note commitment tree + // for the specified shielded protocol (Sapling or Orchard). + rpc GetSubtreeRoots(GetSubtreeRootsArg) returns (stream SubtreeRoot) {} + + rpc GetAddressUtxos(GetAddressUtxosArg) returns (GetAddressUtxosReplyList) {} + rpc GetAddressUtxosStream(GetAddressUtxosArg) returns (stream GetAddressUtxosReply) {} + + // Return information about this lightwalletd instance and the blockchain + rpc GetLightdInfo(Empty) returns (LightdInfo) {} + + // Testing-only, requires lightwalletd --ping-very-insecure (do not enable in production) + rpc Ping(Duration) returns (PingResponse) {} +} From f79d02926ce40a9f97a3558b8bd4a2f11a501667 Mon Sep 17 00:00:00 2001 From: Pacu Date: Tue, 7 Apr 2026 21:24:21 -0300 Subject: [PATCH 02/15] add: gRPC parity test suite (Zainod vs. Lightwalletd) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Closes #83 Runs Zainod and Lightwalletd side-by-side against the same Zebrad node and compares their CompactTxStreamer gRPC responses. Covers 21 test cases across 15 RPC methods and integrates with the existing BitcoinTestFramework and CI pipeline. - `lightwallet-protocol/` — canonical proto source via `git subtree` from `zcash/lightwallet-protocol` v0.4.0 - `qa/rpc-tests/test_framework/proto/` — generated Python gRPC stubs committed so CI needs only `grpcio` at runtime - `scripts/generate_proto.sh` — regenerates stubs after a protocol version bump and fixes flat imports to relative - `util.py` / `test_framework.py` — Lightwalletd process lifecycle (`lwd_grpc_port`, `write_lwd_conf`, `start_lightwalletd`, `wait_for_lwd_start`, teardown) - `qa/rpc-tests/grpc_comparison.py` — test file - `qa/zcash/grpc_comparison_tests.py` — convenience runner - CI: `lightwalletd-interop-request` dispatch trigger, `build-lightwalletd` job, artifact download in `test-rpc` - Docs: README and book updated with prerequisites and run instructions 1. **`vtx` in compact blocks** — For blocks containing only transparent transactions, Zainod returns empty `vtx`; Lightwalletd includes them. Block comparison currently covers header fields only. 2. **gRPC error codes on out-of-bounds requests** — Zainod returns `OUT_OF_RANGE`; Lightwalletd returns `INVALID_ARGUMENT`. Tests assert only that both sides raise an error. - `GetMempoolTx` / `GetMempoolStream` (need wallet integration) - Shielded transaction coverage (need Zallet or chain cache) - Completed subtree roots (need 2^16 outputs per tree) - `SendTransaction`, darkside mode Co-Authored-By: Claude Sonnet 4.6 --- qa/pull-tester/rpc-tests.py | 1 + qa/rpc-tests/grpc_comparison.py | 490 +++++++++ qa/rpc-tests/test_framework/proto/__init__.py | 3 + .../proto/compact_formats_pb2.py | 51 + .../proto/compact_formats_pb2.pyi | 99 ++ .../proto/compact_formats_pb2_grpc.py | 24 + .../test_framework/proto/service_pb2.py | 84 ++ .../test_framework/proto/service_pb2.pyi | 235 +++++ .../test_framework/proto/service_pb2_grpc.py | 962 ++++++++++++++++++ qa/rpc-tests/test_framework/test_framework.py | 15 +- qa/rpc-tests/test_framework/util.py | 102 ++ qa/zcash/grpc_comparison_tests.py | 37 + scripts/generate_proto.sh | 39 + 13 files changed, 2141 insertions(+), 1 deletion(-) create mode 100755 qa/rpc-tests/grpc_comparison.py create mode 100644 qa/rpc-tests/test_framework/proto/__init__.py create mode 100644 qa/rpc-tests/test_framework/proto/compact_formats_pb2.py create mode 100644 qa/rpc-tests/test_framework/proto/compact_formats_pb2.pyi create mode 100644 qa/rpc-tests/test_framework/proto/compact_formats_pb2_grpc.py create mode 100644 qa/rpc-tests/test_framework/proto/service_pb2.py create mode 100644 qa/rpc-tests/test_framework/proto/service_pb2.pyi create mode 100644 qa/rpc-tests/test_framework/proto/service_pb2_grpc.py create mode 100755 qa/zcash/grpc_comparison_tests.py create mode 100755 scripts/generate_proto.sh diff --git a/qa/pull-tester/rpc-tests.py b/qa/pull-tester/rpc-tests.py index 54ebec505..7483a237b 100755 --- a/qa/pull-tester/rpc-tests.py +++ b/qa/pull-tester/rpc-tests.py @@ -166,6 +166,7 @@ 'getrawtransaction_sidechain.py', 'fix_block_commitments.py', 'indexer.py', + 'grpc_comparison.py', 'decodescript.py', 'feature_nu6_1.py', 'nuparams.py', diff --git a/qa/rpc-tests/grpc_comparison.py b/qa/rpc-tests/grpc_comparison.py new file mode 100755 index 000000000..2edb46491 --- /dev/null +++ b/qa/rpc-tests/grpc_comparison.py @@ -0,0 +1,490 @@ +#!/usr/bin/env python3 +# Copyright (c) 2025 The Zcash developers +# Distributed under the MIT software license, see the accompanying +# file COPYING or https://www.opensource.org/licenses/mit-license.php . + +""" +gRPC parity test: compare CompactTxStreamer responses from Zainod and Lightwalletd +backed by the same Zebrad node. + +Mirrors the Rust test fixtures in client_rpc_test_fixtures, porting them to Python +so they run inside the existing BitcoinTestFramework CI pipeline. + +Methods tested (CompactTxStreamer service): + GetLightdInfo, GetLatestBlock, GetBlock, GetBlockNullifiers, + GetBlockRange, GetBlockRangeNullifiers, + GetTransaction, GetTaddressTxids, GetTaddressBalance, GetTaddressBalanceStream, + GetTreeState, GetLatestTreeState, GetSubtreeRoots, + GetAddressUtxos, GetAddressUtxosStream + +Not yet tested (require a wallet to submit mempool transactions): + GetMempoolTx, GetMempoolStream +""" + +import grpc + +from test_framework.test_framework import BitcoinTestFramework +from test_framework.util import ( + assert_equal, + zaino_grpc_port, + lwd_grpc_port, +) +from test_framework.proto import ( + compact_formats_pb2, + service_pb2, + service_pb2_grpc, +) + + +def _collect_stream(streaming_call): + """Collect all messages from a server-streaming gRPC call into a list.""" + results = [] + for msg in streaming_call: + results.append(msg) + return results + + +def _normalize_compact_block(block): + """ + Normalize a CompactBlock for header-level comparison. + + Known divergences between Zainod and Lightwalletd (with Zebrad as backend): + - protoVersion: Lightwalletd sets 1, Zainod sets 4. Zeroed out. + - vtx: Lightwalletd includes transparent coinbase transactions in compact + blocks; Zainod omits them (only shielded transactions appear). Cleared. + + The header fields (height, hash, prevHash, time) are authoritative and + must agree between both implementations. + """ + normalized = compact_formats_pb2.CompactBlock() + normalized.height = block.height + normalized.hash = block.hash + normalized.prevHash = block.prevHash + normalized.time = block.time + # chainMetadata is also comparable; copy it if present + if block.HasField("chainMetadata"): + normalized.chainMetadata.CopyFrom(block.chainMetadata) + return normalized + + +class GrpcComparisonTest(BitcoinTestFramework): + + def __init__(self): + super().__init__() + self.num_nodes = 1 + self.num_indexers = 1 # Zainod + self.num_lightwalletds = 1 # Lightwalletd + self.num_wallets = 0 + self.cache_behavior = 'clean' + + # Populated in setup_network; used by test methods + self.taddr = None + self.txid = None + + def setup_network(self, split=False): + self.wallets = [] # no wallets used; required for teardown + self.nodes = self.setup_nodes() + node = self.nodes[0] + + # Mine 30 blocks so coinbase is mature and we have a chain for range queries. + node.generate(30) + + # The default zebrad config mines coinbase to this regtest t-address. + # All mined coinbase UTXOs are at this address, giving us real t-addr + # data for GetTaddressTxids / GetTaddressBalance / GetAddressUtxos. + self.taddr = "tmSRd1r8gs77Ja67Fw1JcdoXytxsyrLTPJm" + + # Use the coinbase txid from block 1 for GetTransaction tests. + self.txid = node.getblock("1")['tx'][0] + + self.zainos = self.setup_indexers() + self.lwds = self.setup_lightwalletds() + + # Wait for both indexers to sync to the chain tip before running tests. + tip = node.getblockcount() + self._wait_for_indexers(tip) + + def _wait_for_indexers(self, expected_height, timeout=60): + """Block until both Zainod and Lightwalletd report the expected block height.""" + import time + + zainod_ch = grpc.insecure_channel(f"127.0.0.1:{zaino_grpc_port(0)}") + lwd_ch = grpc.insecure_channel(f"127.0.0.1:{self.lwds[0]}") + zs = service_pb2_grpc.CompactTxStreamerStub(zainod_ch) + ls = service_pb2_grpc.CompactTxStreamerStub(lwd_ch) + + deadline = time.time() + timeout + while time.time() < deadline: + try: + z_info = zs.GetLightdInfo(service_pb2.Empty(), timeout=5) + l_info = ls.GetLightdInfo(service_pb2.Empty(), timeout=5) + if (z_info.blockHeight >= expected_height and + l_info.blockHeight >= expected_height): + return + except grpc.RpcError: + pass + time.sleep(1) + + raise Exception( + f"Indexers did not sync to height {expected_height} within {timeout}s" + ) + + def run_test(self): + zainod_ch = grpc.insecure_channel(f"127.0.0.1:{zaino_grpc_port(0)}") + lwd_ch = grpc.insecure_channel(f"127.0.0.1:{self.lwds[0]}") + zs = service_pb2_grpc.CompactTxStreamerStub(zainod_ch) + ls = service_pb2_grpc.CompactTxStreamerStub(lwd_ch) + + print("Testing GetLightdInfo...") + self.test_get_lightd_info(zs, ls) + + print("Testing GetLatestBlock...") + self.test_get_latest_block(zs, ls) + + print("Testing GetBlock...") + self.test_get_block(zs, ls) + + print("Testing GetBlock (out of bounds)...") + self.test_get_block_out_of_bounds(zs, ls) + + print("Testing GetBlockNullifiers...") + self.test_get_block_nullifiers(zs, ls) + + print("Testing GetBlockRange (forward)...") + self.test_get_block_range(zs, ls) + + print("Testing GetBlockRange (reverse)...") + self.test_get_block_range_reverse(zs, ls) + + print("Testing GetBlockRange (out of bounds)...") + self.test_get_block_range_out_of_bounds(zs, ls) + + print("Testing GetBlockRangeNullifiers...") + self.test_get_block_range_nullifiers(zs, ls) + + print("Testing GetBlockRangeNullifiers (reverse)...") + self.test_get_block_range_nullifiers_reverse(zs, ls) + + print("Testing GetTransaction...") + self.test_get_transaction(zs, ls) + + print("Testing GetTaddressTxids (full range)...") + self.test_get_taddress_txids(zs, ls) + + print("Testing GetTaddressTxids (lower bound)...") + self.test_get_taddress_txids_lower(zs, ls) + + print("Testing GetTaddressTxids (upper bound)...") + self.test_get_taddress_txids_upper(zs, ls) + + print("Testing GetTaddressBalance...") + self.test_get_taddress_balance(zs, ls) + + print("Testing GetTaddressBalanceStream...") + self.test_get_taddress_balance_stream(zs, ls) + + print("Testing GetTreeState (by height)...") + self.test_get_tree_state_by_height(zs, ls) + + print("Testing GetTreeState (out of bounds)...") + self.test_get_tree_state_out_of_bounds(zs, ls) + + print("Testing GetLatestTreeState...") + self.test_get_latest_tree_state(zs, ls) + + print("Testing GetSubtreeRoots (sapling)...") + self.test_get_subtree_roots_sapling(zs, ls) + + print("Testing GetSubtreeRoots (orchard)...") + self.test_get_subtree_roots_orchard(zs, ls) + + print("Testing GetAddressUtxos...") + self.test_get_address_utxos(zs, ls) + + print("Testing GetAddressUtxosStream...") + self.test_get_address_utxos_stream(zs, ls) + + # TODO: GetMempoolTx and GetMempoolStream require submitting a transaction + # to the mempool. This needs a wallet (zallet) to sign and send a raw tx. + # Add these when num_wallets=1 is wired up with a t-address workflow. + + zainod_ch.close() + lwd_ch.close() + + # ------------------------------------------------------------------------- + # Test methods + # ------------------------------------------------------------------------- + + def test_get_lightd_info(self, zs, ls): + z = zs.GetLightdInfo(service_pb2.Empty()) + l = ls.GetLightdInfo(service_pb2.Empty()) + + # Implementation-specific fields are intentionally skipped: + # version, vendor, git_commit, branch, build_date, build_user, + # zcashd_build, zcashd_subversion, donation_address, + # lightwallet_protocol_version + assert_equal(z.taddrSupport, l.taddrSupport) + assert_equal(z.chainName, l.chainName) + assert_equal(z.saplingActivationHeight, l.saplingActivationHeight) + assert_equal(z.consensusBranchId, l.consensusBranchId) + assert_equal(z.blockHeight, l.blockHeight) + assert_equal(z.estimatedHeight, l.estimatedHeight) + + def test_get_latest_block(self, zs, ls): + z = zs.GetLatestBlock(service_pb2.ChainSpec()) + l = ls.GetLatestBlock(service_pb2.ChainSpec()) + assert_equal(z.height, l.height) + assert_equal(z.hash, l.hash) + + def test_get_block(self, zs, ls): + req = service_pb2.BlockID(height=5, hash=b"") + z = _normalize_compact_block(zs.GetBlock(req)) + l = _normalize_compact_block(ls.GetBlock(req)) + assert_equal(z, l) + + def test_get_block_out_of_bounds(self, zs, ls): + # Height beyond chain tip — both must respond with a gRPC error. + # Note: Zainod returns OUT_OF_RANGE; Lightwalletd returns INVALID_ARGUMENT. + # We only assert that both raise an error, not that the codes match. + chain_height = self.nodes[0].getblockcount() + req = service_pb2.BlockID(height=chain_height + 1000, hash=b"") + try: + zs.GetBlock(req) + raise AssertionError("Zainod did not error on out-of-range GetBlock") + except grpc.RpcError: + pass + try: + ls.GetBlock(req) + raise AssertionError("Lightwalletd did not error on out-of-range GetBlock") + except grpc.RpcError: + pass + + def test_get_block_nullifiers(self, zs, ls): + req = service_pb2.BlockID(height=5, hash=b"") + z = _normalize_compact_block(zs.GetBlockNullifiers(req)) + l = _normalize_compact_block(ls.GetBlockNullifiers(req)) + assert_equal(z, l) + + def test_get_block_range(self, zs, ls): + req = service_pb2.BlockRange( + start=service_pb2.BlockID(height=1, hash=b""), + end=service_pb2.BlockID(height=10, hash=b""), + ) + z_blocks = [_normalize_compact_block(b) for b in _collect_stream(zs.GetBlockRange(req))] + l_blocks = [_normalize_compact_block(b) for b in _collect_stream(ls.GetBlockRange(req))] + assert_equal(z_blocks, l_blocks) + + def test_get_block_range_reverse(self, zs, ls): + req = service_pb2.BlockRange( + start=service_pb2.BlockID(height=10, hash=b""), + end=service_pb2.BlockID(height=1, hash=b""), + ) + z_blocks = [_normalize_compact_block(b) for b in _collect_stream(zs.GetBlockRange(req))] + l_blocks = [_normalize_compact_block(b) for b in _collect_stream(ls.GetBlockRange(req))] + assert_equal(z_blocks, l_blocks) + + def test_get_block_range_out_of_bounds(self, zs, ls): + # Both must respond with a gRPC error when the range exceeds the chain tip. + # Note: implementations may return different status codes (OUT_OF_RANGE vs + # INVALID_ARGUMENT), so we only assert that both raise an error. + chain_height = self.nodes[0].getblockcount() + req = service_pb2.BlockRange( + start=service_pb2.BlockID(height=1, hash=b""), + end=service_pb2.BlockID(height=chain_height + 1000, hash=b""), + ) + try: + list(zs.GetBlockRange(req)) + raise AssertionError("Zainod did not error on out-of-range GetBlockRange") + except grpc.RpcError: + pass + try: + list(ls.GetBlockRange(req)) + raise AssertionError("Lightwalletd did not error on out-of-range GetBlockRange") + except grpc.RpcError: + pass + + def test_get_block_range_nullifiers(self, zs, ls): + req = service_pb2.BlockRange( + start=service_pb2.BlockID(height=1, hash=b""), + end=service_pb2.BlockID(height=10, hash=b""), + ) + z_blocks = [_normalize_compact_block(b) for b in _collect_stream(zs.GetBlockRangeNullifiers(req))] + l_blocks = [_normalize_compact_block(b) for b in _collect_stream(ls.GetBlockRangeNullifiers(req))] + assert_equal(z_blocks, l_blocks) + + def test_get_block_range_nullifiers_reverse(self, zs, ls): + req = service_pb2.BlockRange( + start=service_pb2.BlockID(height=10, hash=b""), + end=service_pb2.BlockID(height=1, hash=b""), + ) + z_blocks = [_normalize_compact_block(b) for b in _collect_stream(zs.GetBlockRangeNullifiers(req))] + l_blocks = [_normalize_compact_block(b) for b in _collect_stream(ls.GetBlockRangeNullifiers(req))] + assert_equal(z_blocks, l_blocks) + + def test_get_transaction(self, zs, ls): + # self.txid is a hex string; the TxFilter expects bytes in little-endian order + txid_bytes = bytes.fromhex(self.txid)[::-1] + req = service_pb2.TxFilter(hash=txid_bytes) + z = zs.GetTransaction(req) + l = ls.GetTransaction(req) + assert_equal(z.data, l.data) + assert_equal(z.height, l.height) + + def test_get_taddress_txids(self, zs, ls): + req = service_pb2.TransparentAddressBlockFilter( + address=self.taddr, + range=service_pb2.BlockRange( + start=service_pb2.BlockID(height=1, hash=b""), + end=service_pb2.BlockID(height=self.nodes[0].getblockcount(), hash=b""), + ), + ) + z_txs = _collect_stream(zs.GetTaddressTxids(req)) + l_txs = _collect_stream(ls.GetTaddressTxids(req)) + assert_equal(len(z_txs), len(l_txs)) + for z_tx, l_tx in zip(z_txs, l_txs): + assert_equal(z_tx.data, l_tx.data) + assert_equal(z_tx.height, l_tx.height) + + def test_get_taddress_txids_lower(self, zs, ls): + tip = self.nodes[0].getblockcount() + req = service_pb2.TransparentAddressBlockFilter( + address=self.taddr, + range=service_pb2.BlockRange( + start=service_pb2.BlockID(height=tip, hash=b""), + end=service_pb2.BlockID(height=tip, hash=b""), + ), + ) + z_txs = _collect_stream(zs.GetTaddressTxids(req)) + l_txs = _collect_stream(ls.GetTaddressTxids(req)) + assert_equal(len(z_txs), len(l_txs)) + for z_tx, l_tx in zip(z_txs, l_txs): + assert_equal(z_tx.data, l_tx.data) + + def test_get_taddress_txids_upper(self, zs, ls): + req = service_pb2.TransparentAddressBlockFilter( + address=self.taddr, + range=service_pb2.BlockRange( + start=service_pb2.BlockID(height=1, hash=b""), + end=service_pb2.BlockID(height=1, hash=b""), + ), + ) + z_txs = _collect_stream(zs.GetTaddressTxids(req)) + l_txs = _collect_stream(ls.GetTaddressTxids(req)) + assert_equal(len(z_txs), len(l_txs)) + + def test_get_taddress_balance(self, zs, ls): + req = service_pb2.AddressList(addresses=[self.taddr]) + z = zs.GetTaddressBalance(req) + l = ls.GetTaddressBalance(req) + assert_equal(z.valueZat, l.valueZat) + + def test_get_taddress_balance_stream(self, zs, ls): + def addr_iter(): + yield service_pb2.Address(address=self.taddr) + + z = zs.GetTaddressBalanceStream(addr_iter()) + l = ls.GetTaddressBalanceStream(addr_iter()) + assert_equal(z.valueZat, l.valueZat) + + def test_get_tree_state_by_height(self, zs, ls): + req = service_pb2.BlockID(height=10, hash=b"") + z = zs.GetTreeState(req) + l = ls.GetTreeState(req) + assert_equal(z.network, l.network) + assert_equal(z.height, l.height) + assert_equal(z.hash, l.hash) + assert_equal(z.time, l.time) + assert_equal(z.saplingTree, l.saplingTree) + assert_equal(z.orchardTree, l.orchardTree) + + def test_get_tree_state_out_of_bounds(self, zs, ls): + # Both must respond with a gRPC error for an out-of-range height. + # Note: Zainod returns OUT_OF_RANGE; Lightwalletd returns INVALID_ARGUMENT. + chain_height = self.nodes[0].getblockcount() + req = service_pb2.BlockID(height=chain_height + 1000, hash=b"") + try: + zs.GetTreeState(req) + raise AssertionError("Zainod did not error on out-of-range GetTreeState") + except grpc.RpcError: + pass + try: + ls.GetTreeState(req) + raise AssertionError("Lightwalletd did not error on out-of-range GetTreeState") + except grpc.RpcError: + pass + + def test_get_latest_tree_state(self, zs, ls): + z = zs.GetLatestTreeState(service_pb2.Empty()) + l = ls.GetLatestTreeState(service_pb2.Empty()) + assert_equal(z.network, l.network) + assert_equal(z.height, l.height) + assert_equal(z.hash, l.hash) + assert_equal(z.saplingTree, l.saplingTree) + assert_equal(z.orchardTree, l.orchardTree) + + def test_get_subtree_roots_sapling(self, zs, ls): + req = service_pb2.GetSubtreeRootsArg( + startIndex=0, + shieldedProtocol=service_pb2.ShieldedProtocol.sapling, + maxEntries=0, + ) + z_roots = _collect_stream(zs.GetSubtreeRoots(req)) + l_roots = _collect_stream(ls.GetSubtreeRoots(req)) + assert_equal(len(z_roots), len(l_roots)) + for z_r, l_r in zip(z_roots, l_roots): + assert_equal(z_r.rootHash, l_r.rootHash) + assert_equal(z_r.completingBlockHash, l_r.completingBlockHash) + assert_equal(z_r.completingBlockHeight, l_r.completingBlockHeight) + + def test_get_subtree_roots_orchard(self, zs, ls): + req = service_pb2.GetSubtreeRootsArg( + startIndex=0, + shieldedProtocol=service_pb2.ShieldedProtocol.orchard, + maxEntries=0, + ) + z_roots = _collect_stream(zs.GetSubtreeRoots(req)) + l_roots = _collect_stream(ls.GetSubtreeRoots(req)) + assert_equal(len(z_roots), len(l_roots)) + for z_r, l_r in zip(z_roots, l_roots): + assert_equal(z_r.rootHash, l_r.rootHash) + assert_equal(z_r.completingBlockHash, l_r.completingBlockHash) + assert_equal(z_r.completingBlockHeight, l_r.completingBlockHeight) + + def test_get_address_utxos(self, zs, ls): + req = service_pb2.GetAddressUtxosArg( + addresses=[self.taddr], + startHeight=1, + maxEntries=0, + ) + z = zs.GetAddressUtxos(req) + l = ls.GetAddressUtxos(req) + assert_equal(len(z.addressUtxos), len(l.addressUtxos)) + z_sorted = sorted(z.addressUtxos, key=lambda u: (u.txid, u.index)) + l_sorted = sorted(l.addressUtxos, key=lambda u: (u.txid, u.index)) + for z_u, l_u in zip(z_sorted, l_sorted): + assert_equal(z_u.address, l_u.address) + assert_equal(z_u.txid, l_u.txid) + assert_equal(z_u.index, l_u.index) + assert_equal(z_u.script, l_u.script) + assert_equal(z_u.valueZat, l_u.valueZat) + assert_equal(z_u.height, l_u.height) + + def test_get_address_utxos_stream(self, zs, ls): + req = service_pb2.GetAddressUtxosArg( + addresses=[self.taddr], + startHeight=1, + maxEntries=0, + ) + z_utxos = _collect_stream(zs.GetAddressUtxosStream(req)) + l_utxos = _collect_stream(ls.GetAddressUtxosStream(req)) + assert_equal(len(z_utxos), len(l_utxos)) + z_sorted = sorted(z_utxos, key=lambda u: (u.txid, u.index)) + l_sorted = sorted(l_utxos, key=lambda u: (u.txid, u.index)) + for z_u, l_u in zip(z_sorted, l_sorted): + assert_equal(z_u.address, l_u.address) + assert_equal(z_u.txid, l_u.txid) + assert_equal(z_u.index, l_u.index) + assert_equal(z_u.valueZat, l_u.valueZat) + +if __name__ == '__main__': + GrpcComparisonTest().main() diff --git a/qa/rpc-tests/test_framework/proto/__init__.py b/qa/rpc-tests/test_framework/proto/__init__.py new file mode 100644 index 000000000..1faef238a --- /dev/null +++ b/qa/rpc-tests/test_framework/proto/__init__.py @@ -0,0 +1,3 @@ +# Generated Python gRPC stubs for the Zcash lightwallet protocol. +# Proto source: lightwallet-protocol/ (git subtree of zcash/lightwallet-protocol) +# Regenerate with: scripts/generate_proto.sh diff --git a/qa/rpc-tests/test_framework/proto/compact_formats_pb2.py b/qa/rpc-tests/test_framework/proto/compact_formats_pb2.py new file mode 100644 index 000000000..01ccd66d9 --- /dev/null +++ b/qa/rpc-tests/test_framework/proto/compact_formats_pb2.py @@ -0,0 +1,51 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE +# source: compact_formats.proto +# Protobuf Python Version: 6.31.1 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 6, + 31, + 1, + '', + 'compact_formats.proto' +) +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x15\x63ompact_formats.proto\x12\x15\x63\x61sh.z.wallet.sdk.rpc\"U\n\rChainMetadata\x12!\n\x19saplingCommitmentTreeSize\x18\x01 \x01(\r\x12!\n\x19orchardCommitmentTreeSize\x18\x02 \x01(\r\"\xde\x01\n\x0c\x43ompactBlock\x12\x14\n\x0cprotoVersion\x18\x01 \x01(\r\x12\x0e\n\x06height\x18\x02 \x01(\x04\x12\x0c\n\x04hash\x18\x03 \x01(\x0c\x12\x10\n\x08prevHash\x18\x04 \x01(\x0c\x12\x0c\n\x04time\x18\x05 \x01(\r\x12\x0e\n\x06header\x18\x06 \x01(\x0c\x12-\n\x03vtx\x18\x07 \x03(\x0b\x32 .cash.z.wallet.sdk.rpc.CompactTx\x12;\n\rchainMetadata\x18\x08 \x01(\x0b\x32$.cash.z.wallet.sdk.rpc.ChainMetadata\"\xca\x02\n\tCompactTx\x12\r\n\x05index\x18\x01 \x01(\x04\x12\x0c\n\x04txid\x18\x02 \x01(\x0c\x12\x0b\n\x03\x66\x65\x65\x18\x03 \x01(\r\x12:\n\x06spends\x18\x04 \x03(\x0b\x32*.cash.z.wallet.sdk.rpc.CompactSaplingSpend\x12<\n\x07outputs\x18\x05 \x03(\x0b\x32+.cash.z.wallet.sdk.rpc.CompactSaplingOutput\x12<\n\x07\x61\x63tions\x18\x06 \x03(\x0b\x32+.cash.z.wallet.sdk.rpc.CompactOrchardAction\x12/\n\x03vin\x18\x07 \x03(\x0b\x32\".cash.z.wallet.sdk.rpc.CompactTxIn\x12*\n\x04vout\x18\x08 \x03(\x0b\x32\x1c.cash.z.wallet.sdk.rpc.TxOut\"8\n\x0b\x43ompactTxIn\x12\x13\n\x0bprevoutTxid\x18\x01 \x01(\x0c\x12\x14\n\x0cprevoutIndex\x18\x02 \x01(\r\",\n\x05TxOut\x12\r\n\x05value\x18\x01 \x01(\x04\x12\x14\n\x0cscriptPubKey\x18\x02 \x01(\x0c\"!\n\x13\x43ompactSaplingSpend\x12\n\n\x02nf\x18\x01 \x01(\x0c\"M\n\x14\x43ompactSaplingOutput\x12\x0b\n\x03\x63mu\x18\x01 \x01(\x0c\x12\x14\n\x0c\x65phemeralKey\x18\x02 \x01(\x0c\x12\x12\n\nciphertext\x18\x03 \x01(\x0c\"`\n\x14\x43ompactOrchardAction\x12\x11\n\tnullifier\x18\x01 \x01(\x0c\x12\x0b\n\x03\x63mx\x18\x02 \x01(\x0c\x12\x14\n\x0c\x65phemeralKey\x18\x03 \x01(\x0c\x12\x12\n\nciphertext\x18\x04 \x01(\x0c\x42\x1bZ\x16lightwalletd/walletrpc\xba\x02\x00\x62\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'compact_formats_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'Z\026lightwalletd/walletrpc\272\002\000' + _globals['_CHAINMETADATA']._serialized_start=48 + _globals['_CHAINMETADATA']._serialized_end=133 + _globals['_COMPACTBLOCK']._serialized_start=136 + _globals['_COMPACTBLOCK']._serialized_end=358 + _globals['_COMPACTTX']._serialized_start=361 + _globals['_COMPACTTX']._serialized_end=691 + _globals['_COMPACTTXIN']._serialized_start=693 + _globals['_COMPACTTXIN']._serialized_end=749 + _globals['_TXOUT']._serialized_start=751 + _globals['_TXOUT']._serialized_end=795 + _globals['_COMPACTSAPLINGSPEND']._serialized_start=797 + _globals['_COMPACTSAPLINGSPEND']._serialized_end=830 + _globals['_COMPACTSAPLINGOUTPUT']._serialized_start=832 + _globals['_COMPACTSAPLINGOUTPUT']._serialized_end=909 + _globals['_COMPACTORCHARDACTION']._serialized_start=911 + _globals['_COMPACTORCHARDACTION']._serialized_end=1007 +# @@protoc_insertion_point(module_scope) diff --git a/qa/rpc-tests/test_framework/proto/compact_formats_pb2.pyi b/qa/rpc-tests/test_framework/proto/compact_formats_pb2.pyi new file mode 100644 index 000000000..6947fb09c --- /dev/null +++ b/qa/rpc-tests/test_framework/proto/compact_formats_pb2.pyi @@ -0,0 +1,99 @@ +from google.protobuf.internal import containers as _containers +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from collections.abc import Iterable as _Iterable, Mapping as _Mapping +from typing import ClassVar as _ClassVar, Optional as _Optional, Union as _Union + +DESCRIPTOR: _descriptor.FileDescriptor + +class ChainMetadata(_message.Message): + __slots__ = ("saplingCommitmentTreeSize", "orchardCommitmentTreeSize") + SAPLINGCOMMITMENTTREESIZE_FIELD_NUMBER: _ClassVar[int] + ORCHARDCOMMITMENTTREESIZE_FIELD_NUMBER: _ClassVar[int] + saplingCommitmentTreeSize: int + orchardCommitmentTreeSize: int + def __init__(self, saplingCommitmentTreeSize: _Optional[int] = ..., orchardCommitmentTreeSize: _Optional[int] = ...) -> None: ... + +class CompactBlock(_message.Message): + __slots__ = ("protoVersion", "height", "hash", "prevHash", "time", "header", "vtx", "chainMetadata") + PROTOVERSION_FIELD_NUMBER: _ClassVar[int] + HEIGHT_FIELD_NUMBER: _ClassVar[int] + HASH_FIELD_NUMBER: _ClassVar[int] + PREVHASH_FIELD_NUMBER: _ClassVar[int] + TIME_FIELD_NUMBER: _ClassVar[int] + HEADER_FIELD_NUMBER: _ClassVar[int] + VTX_FIELD_NUMBER: _ClassVar[int] + CHAINMETADATA_FIELD_NUMBER: _ClassVar[int] + protoVersion: int + height: int + hash: bytes + prevHash: bytes + time: int + header: bytes + vtx: _containers.RepeatedCompositeFieldContainer[CompactTx] + chainMetadata: ChainMetadata + def __init__(self, protoVersion: _Optional[int] = ..., height: _Optional[int] = ..., hash: _Optional[bytes] = ..., prevHash: _Optional[bytes] = ..., time: _Optional[int] = ..., header: _Optional[bytes] = ..., vtx: _Optional[_Iterable[_Union[CompactTx, _Mapping]]] = ..., chainMetadata: _Optional[_Union[ChainMetadata, _Mapping]] = ...) -> None: ... + +class CompactTx(_message.Message): + __slots__ = ("index", "txid", "fee", "spends", "outputs", "actions", "vin", "vout") + INDEX_FIELD_NUMBER: _ClassVar[int] + TXID_FIELD_NUMBER: _ClassVar[int] + FEE_FIELD_NUMBER: _ClassVar[int] + SPENDS_FIELD_NUMBER: _ClassVar[int] + OUTPUTS_FIELD_NUMBER: _ClassVar[int] + ACTIONS_FIELD_NUMBER: _ClassVar[int] + VIN_FIELD_NUMBER: _ClassVar[int] + VOUT_FIELD_NUMBER: _ClassVar[int] + index: int + txid: bytes + fee: int + spends: _containers.RepeatedCompositeFieldContainer[CompactSaplingSpend] + outputs: _containers.RepeatedCompositeFieldContainer[CompactSaplingOutput] + actions: _containers.RepeatedCompositeFieldContainer[CompactOrchardAction] + vin: _containers.RepeatedCompositeFieldContainer[CompactTxIn] + vout: _containers.RepeatedCompositeFieldContainer[TxOut] + def __init__(self, index: _Optional[int] = ..., txid: _Optional[bytes] = ..., fee: _Optional[int] = ..., spends: _Optional[_Iterable[_Union[CompactSaplingSpend, _Mapping]]] = ..., outputs: _Optional[_Iterable[_Union[CompactSaplingOutput, _Mapping]]] = ..., actions: _Optional[_Iterable[_Union[CompactOrchardAction, _Mapping]]] = ..., vin: _Optional[_Iterable[_Union[CompactTxIn, _Mapping]]] = ..., vout: _Optional[_Iterable[_Union[TxOut, _Mapping]]] = ...) -> None: ... + +class CompactTxIn(_message.Message): + __slots__ = ("prevoutTxid", "prevoutIndex") + PREVOUTTXID_FIELD_NUMBER: _ClassVar[int] + PREVOUTINDEX_FIELD_NUMBER: _ClassVar[int] + prevoutTxid: bytes + prevoutIndex: int + def __init__(self, prevoutTxid: _Optional[bytes] = ..., prevoutIndex: _Optional[int] = ...) -> None: ... + +class TxOut(_message.Message): + __slots__ = ("value", "scriptPubKey") + VALUE_FIELD_NUMBER: _ClassVar[int] + SCRIPTPUBKEY_FIELD_NUMBER: _ClassVar[int] + value: int + scriptPubKey: bytes + def __init__(self, value: _Optional[int] = ..., scriptPubKey: _Optional[bytes] = ...) -> None: ... + +class CompactSaplingSpend(_message.Message): + __slots__ = ("nf",) + NF_FIELD_NUMBER: _ClassVar[int] + nf: bytes + def __init__(self, nf: _Optional[bytes] = ...) -> None: ... + +class CompactSaplingOutput(_message.Message): + __slots__ = ("cmu", "ephemeralKey", "ciphertext") + CMU_FIELD_NUMBER: _ClassVar[int] + EPHEMERALKEY_FIELD_NUMBER: _ClassVar[int] + CIPHERTEXT_FIELD_NUMBER: _ClassVar[int] + cmu: bytes + ephemeralKey: bytes + ciphertext: bytes + def __init__(self, cmu: _Optional[bytes] = ..., ephemeralKey: _Optional[bytes] = ..., ciphertext: _Optional[bytes] = ...) -> None: ... + +class CompactOrchardAction(_message.Message): + __slots__ = ("nullifier", "cmx", "ephemeralKey", "ciphertext") + NULLIFIER_FIELD_NUMBER: _ClassVar[int] + CMX_FIELD_NUMBER: _ClassVar[int] + EPHEMERALKEY_FIELD_NUMBER: _ClassVar[int] + CIPHERTEXT_FIELD_NUMBER: _ClassVar[int] + nullifier: bytes + cmx: bytes + ephemeralKey: bytes + ciphertext: bytes + def __init__(self, nullifier: _Optional[bytes] = ..., cmx: _Optional[bytes] = ..., ephemeralKey: _Optional[bytes] = ..., ciphertext: _Optional[bytes] = ...) -> None: ... diff --git a/qa/rpc-tests/test_framework/proto/compact_formats_pb2_grpc.py b/qa/rpc-tests/test_framework/proto/compact_formats_pb2_grpc.py new file mode 100644 index 000000000..f4391c1d8 --- /dev/null +++ b/qa/rpc-tests/test_framework/proto/compact_formats_pb2_grpc.py @@ -0,0 +1,24 @@ +# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! +"""Client and server classes corresponding to protobuf-defined services.""" +import grpc +import warnings + + +GRPC_GENERATED_VERSION = '1.80.0' +GRPC_VERSION = grpc.__version__ +_version_not_supported = False + +try: + from grpc._utilities import first_version_is_lower + _version_not_supported = first_version_is_lower(GRPC_VERSION, GRPC_GENERATED_VERSION) +except ImportError: + _version_not_supported = True + +if _version_not_supported: + raise RuntimeError( + f'The grpc package installed is at version {GRPC_VERSION},' + + ' but the generated code in compact_formats_pb2_grpc.py depends on' + + f' grpcio>={GRPC_GENERATED_VERSION}.' + + f' Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}' + + f' or downgrade your generated code using grpcio-tools<={GRPC_VERSION}.' + ) diff --git a/qa/rpc-tests/test_framework/proto/service_pb2.py b/qa/rpc-tests/test_framework/proto/service_pb2.py new file mode 100644 index 000000000..9dc393372 --- /dev/null +++ b/qa/rpc-tests/test_framework/proto/service_pb2.py @@ -0,0 +1,84 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE +# source: service.proto +# Protobuf Python Version: 6.31.1 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 6, + 31, + 1, + '', + 'service.proto' +) +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from . import compact_formats_pb2 as compact__formats__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\rservice.proto\x12\x15\x63\x61sh.z.wallet.sdk.rpc\x1a\x15\x63ompact_formats.proto\"\'\n\x07\x42lockID\x12\x0e\n\x06height\x18\x01 \x01(\x04\x12\x0c\n\x04hash\x18\x02 \x01(\x0c\"\x9c\x01\n\nBlockRange\x12-\n\x05start\x18\x01 \x01(\x0b\x32\x1e.cash.z.wallet.sdk.rpc.BlockID\x12+\n\x03\x65nd\x18\x02 \x01(\x0b\x32\x1e.cash.z.wallet.sdk.rpc.BlockID\x12\x32\n\tpoolTypes\x18\x03 \x03(\x0e\x32\x1f.cash.z.wallet.sdk.rpc.PoolType\"V\n\x08TxFilter\x12-\n\x05\x62lock\x18\x01 \x01(\x0b\x32\x1e.cash.z.wallet.sdk.rpc.BlockID\x12\r\n\x05index\x18\x02 \x01(\x04\x12\x0c\n\x04hash\x18\x03 \x01(\x0c\".\n\x0eRawTransaction\x12\x0c\n\x04\x64\x61ta\x18\x01 \x01(\x0c\x12\x0e\n\x06height\x18\x02 \x01(\x04\"7\n\x0cSendResponse\x12\x11\n\terrorCode\x18\x01 \x01(\x05\x12\x14\n\x0c\x65rrorMessage\x18\x02 \x01(\t\"\x0b\n\tChainSpec\"\x07\n\x05\x45mpty\"\xa1\x03\n\nLightdInfo\x12\x0f\n\x07version\x18\x01 \x01(\t\x12\x0e\n\x06vendor\x18\x02 \x01(\t\x12\x14\n\x0ctaddrSupport\x18\x03 \x01(\x08\x12\x11\n\tchainName\x18\x04 \x01(\t\x12\x1f\n\x17saplingActivationHeight\x18\x05 \x01(\x04\x12\x19\n\x11\x63onsensusBranchId\x18\x06 \x01(\t\x12\x13\n\x0b\x62lockHeight\x18\x07 \x01(\x04\x12\x11\n\tgitCommit\x18\x08 \x01(\t\x12\x0e\n\x06\x62ranch\x18\t \x01(\t\x12\x11\n\tbuildDate\x18\n \x01(\t\x12\x11\n\tbuildUser\x18\x0b \x01(\t\x12\x17\n\x0f\x65stimatedHeight\x18\x0c \x01(\x04\x12\x13\n\x0bzcashdBuild\x18\r \x01(\t\x12\x18\n\x10zcashdSubversion\x18\x0e \x01(\t\x12\x17\n\x0f\x64onationAddress\x18\x0f \x01(\t\x12\x13\n\x0bupgradeName\x18\x10 \x01(\t\x12\x15\n\rupgradeHeight\x18\x11 \x01(\x04\x12\"\n\x1alightwalletProtocolVersion\x18\x12 \x01(\t\"b\n\x1dTransparentAddressBlockFilter\x12\x0f\n\x07\x61\x64\x64ress\x18\x01 \x01(\t\x12\x30\n\x05range\x18\x02 \x01(\x0b\x32!.cash.z.wallet.sdk.rpc.BlockRange\"\x1e\n\x08\x44uration\x12\x12\n\nintervalUs\x18\x01 \x01(\x03\"+\n\x0cPingResponse\x12\r\n\x05\x65ntry\x18\x01 \x01(\x03\x12\x0c\n\x04\x65xit\x18\x02 \x01(\x03\"\x1a\n\x07\x41\x64\x64ress\x12\x0f\n\x07\x61\x64\x64ress\x18\x01 \x01(\t\" \n\x0b\x41\x64\x64ressList\x12\x11\n\taddresses\x18\x01 \x03(\t\"\x1b\n\x07\x42\x61lance\x12\x10\n\x08valueZat\x18\x01 \x01(\x03\"n\n\x13GetMempoolTxRequest\x12\x1d\n\x15\x65xclude_txid_suffixes\x18\x01 \x03(\x0c\x12\x32\n\tpoolTypes\x18\x03 \x03(\x0e\x32\x1f.cash.z.wallet.sdk.rpc.PoolTypeJ\x04\x08\x02\x10\x03\"r\n\tTreeState\x12\x0f\n\x07network\x18\x01 \x01(\t\x12\x0e\n\x06height\x18\x02 \x01(\x04\x12\x0c\n\x04hash\x18\x03 \x01(\t\x12\x0c\n\x04time\x18\x04 \x01(\r\x12\x13\n\x0bsaplingTree\x18\x05 \x01(\t\x12\x13\n\x0borchardTree\x18\x06 \x01(\t\"\x7f\n\x12GetSubtreeRootsArg\x12\x12\n\nstartIndex\x18\x01 \x01(\r\x12\x41\n\x10shieldedProtocol\x18\x02 \x01(\x0e\x32\'.cash.z.wallet.sdk.rpc.ShieldedProtocol\x12\x12\n\nmaxEntries\x18\x03 \x01(\r\"[\n\x0bSubtreeRoot\x12\x10\n\x08rootHash\x18\x02 \x01(\x0c\x12\x1b\n\x13\x63ompletingBlockHash\x18\x03 \x01(\x0c\x12\x1d\n\x15\x63ompletingBlockHeight\x18\x04 \x01(\x04\"P\n\x12GetAddressUtxosArg\x12\x11\n\taddresses\x18\x01 \x03(\t\x12\x13\n\x0bstartHeight\x18\x02 \x01(\x04\x12\x12\n\nmaxEntries\x18\x03 \x01(\r\"v\n\x14GetAddressUtxosReply\x12\x0f\n\x07\x61\x64\x64ress\x18\x06 \x01(\t\x12\x0c\n\x04txid\x18\x01 \x01(\x0c\x12\r\n\x05index\x18\x02 \x01(\x05\x12\x0e\n\x06script\x18\x03 \x01(\x0c\x12\x10\n\x08valueZat\x18\x04 \x01(\x03\x12\x0e\n\x06height\x18\x05 \x01(\x04\"]\n\x18GetAddressUtxosReplyList\x12\x41\n\x0c\x61\x64\x64ressUtxos\x18\x01 \x03(\x0b\x32+.cash.z.wallet.sdk.rpc.GetAddressUtxosReply*L\n\x08PoolType\x12\x15\n\x11POOL_TYPE_INVALID\x10\x00\x12\x0f\n\x0bTRANSPARENT\x10\x01\x12\x0b\n\x07SAPLING\x10\x02\x12\x0b\n\x07ORCHARD\x10\x03*,\n\x10ShieldedProtocol\x12\x0b\n\x07sapling\x10\x00\x12\x0b\n\x07orchard\x10\x01\x32\xa2\x0f\n\x11\x43ompactTxStreamer\x12T\n\x0eGetLatestBlock\x12 .cash.z.wallet.sdk.rpc.ChainSpec\x1a\x1e.cash.z.wallet.sdk.rpc.BlockID\"\x00\x12Q\n\x08GetBlock\x12\x1e.cash.z.wallet.sdk.rpc.BlockID\x1a#.cash.z.wallet.sdk.rpc.CompactBlock\"\x00\x12[\n\x12GetBlockNullifiers\x12\x1e.cash.z.wallet.sdk.rpc.BlockID\x1a#.cash.z.wallet.sdk.rpc.CompactBlock\"\x00\x12[\n\rGetBlockRange\x12!.cash.z.wallet.sdk.rpc.BlockRange\x1a#.cash.z.wallet.sdk.rpc.CompactBlock\"\x00\x30\x01\x12\x65\n\x17GetBlockRangeNullifiers\x12!.cash.z.wallet.sdk.rpc.BlockRange\x1a#.cash.z.wallet.sdk.rpc.CompactBlock\"\x00\x30\x01\x12Z\n\x0eGetTransaction\x12\x1f.cash.z.wallet.sdk.rpc.TxFilter\x1a%.cash.z.wallet.sdk.rpc.RawTransaction\"\x00\x12_\n\x0fSendTransaction\x12%.cash.z.wallet.sdk.rpc.RawTransaction\x1a#.cash.z.wallet.sdk.rpc.SendResponse\"\x00\x12s\n\x10GetTaddressTxids\x12\x34.cash.z.wallet.sdk.rpc.TransparentAddressBlockFilter\x1a%.cash.z.wallet.sdk.rpc.RawTransaction\"\x00\x30\x01\x12z\n\x17GetTaddressTransactions\x12\x34.cash.z.wallet.sdk.rpc.TransparentAddressBlockFilter\x1a%.cash.z.wallet.sdk.rpc.RawTransaction\"\x00\x30\x01\x12Z\n\x12GetTaddressBalance\x12\".cash.z.wallet.sdk.rpc.AddressList\x1a\x1e.cash.z.wallet.sdk.rpc.Balance\"\x00\x12^\n\x18GetTaddressBalanceStream\x12\x1e.cash.z.wallet.sdk.rpc.Address\x1a\x1e.cash.z.wallet.sdk.rpc.Balance\"\x00(\x01\x12`\n\x0cGetMempoolTx\x12*.cash.z.wallet.sdk.rpc.GetMempoolTxRequest\x1a .cash.z.wallet.sdk.rpc.CompactTx\"\x00\x30\x01\x12[\n\x10GetMempoolStream\x12\x1c.cash.z.wallet.sdk.rpc.Empty\x1a%.cash.z.wallet.sdk.rpc.RawTransaction\"\x00\x30\x01\x12R\n\x0cGetTreeState\x12\x1e.cash.z.wallet.sdk.rpc.BlockID\x1a .cash.z.wallet.sdk.rpc.TreeState\"\x00\x12V\n\x12GetLatestTreeState\x12\x1c.cash.z.wallet.sdk.rpc.Empty\x1a .cash.z.wallet.sdk.rpc.TreeState\"\x00\x12\x64\n\x0fGetSubtreeRoots\x12).cash.z.wallet.sdk.rpc.GetSubtreeRootsArg\x1a\".cash.z.wallet.sdk.rpc.SubtreeRoot\"\x00\x30\x01\x12o\n\x0fGetAddressUtxos\x12).cash.z.wallet.sdk.rpc.GetAddressUtxosArg\x1a/.cash.z.wallet.sdk.rpc.GetAddressUtxosReplyList\"\x00\x12s\n\x15GetAddressUtxosStream\x12).cash.z.wallet.sdk.rpc.GetAddressUtxosArg\x1a+.cash.z.wallet.sdk.rpc.GetAddressUtxosReply\"\x00\x30\x01\x12R\n\rGetLightdInfo\x12\x1c.cash.z.wallet.sdk.rpc.Empty\x1a!.cash.z.wallet.sdk.rpc.LightdInfo\"\x00\x12N\n\x04Ping\x12\x1f.cash.z.wallet.sdk.rpc.Duration\x1a#.cash.z.wallet.sdk.rpc.PingResponse\"\x00\x42\x1bZ\x16lightwalletd/walletrpc\xba\x02\x00\x62\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'service_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'Z\026lightwalletd/walletrpc\272\002\000' + _globals['_POOLTYPE']._serialized_start=1913 + _globals['_POOLTYPE']._serialized_end=1989 + _globals['_SHIELDEDPROTOCOL']._serialized_start=1991 + _globals['_SHIELDEDPROTOCOL']._serialized_end=2035 + _globals['_BLOCKID']._serialized_start=63 + _globals['_BLOCKID']._serialized_end=102 + _globals['_BLOCKRANGE']._serialized_start=105 + _globals['_BLOCKRANGE']._serialized_end=261 + _globals['_TXFILTER']._serialized_start=263 + _globals['_TXFILTER']._serialized_end=349 + _globals['_RAWTRANSACTION']._serialized_start=351 + _globals['_RAWTRANSACTION']._serialized_end=397 + _globals['_SENDRESPONSE']._serialized_start=399 + _globals['_SENDRESPONSE']._serialized_end=454 + _globals['_CHAINSPEC']._serialized_start=456 + _globals['_CHAINSPEC']._serialized_end=467 + _globals['_EMPTY']._serialized_start=469 + _globals['_EMPTY']._serialized_end=476 + _globals['_LIGHTDINFO']._serialized_start=479 + _globals['_LIGHTDINFO']._serialized_end=896 + _globals['_TRANSPARENTADDRESSBLOCKFILTER']._serialized_start=898 + _globals['_TRANSPARENTADDRESSBLOCKFILTER']._serialized_end=996 + _globals['_DURATION']._serialized_start=998 + _globals['_DURATION']._serialized_end=1028 + _globals['_PINGRESPONSE']._serialized_start=1030 + _globals['_PINGRESPONSE']._serialized_end=1073 + _globals['_ADDRESS']._serialized_start=1075 + _globals['_ADDRESS']._serialized_end=1101 + _globals['_ADDRESSLIST']._serialized_start=1103 + _globals['_ADDRESSLIST']._serialized_end=1135 + _globals['_BALANCE']._serialized_start=1137 + _globals['_BALANCE']._serialized_end=1164 + _globals['_GETMEMPOOLTXREQUEST']._serialized_start=1166 + _globals['_GETMEMPOOLTXREQUEST']._serialized_end=1276 + _globals['_TREESTATE']._serialized_start=1278 + _globals['_TREESTATE']._serialized_end=1392 + _globals['_GETSUBTREEROOTSARG']._serialized_start=1394 + _globals['_GETSUBTREEROOTSARG']._serialized_end=1521 + _globals['_SUBTREEROOT']._serialized_start=1523 + _globals['_SUBTREEROOT']._serialized_end=1614 + _globals['_GETADDRESSUTXOSARG']._serialized_start=1616 + _globals['_GETADDRESSUTXOSARG']._serialized_end=1696 + _globals['_GETADDRESSUTXOSREPLY']._serialized_start=1698 + _globals['_GETADDRESSUTXOSREPLY']._serialized_end=1816 + _globals['_GETADDRESSUTXOSREPLYLIST']._serialized_start=1818 + _globals['_GETADDRESSUTXOSREPLYLIST']._serialized_end=1911 + _globals['_COMPACTTXSTREAMER']._serialized_start=2038 + _globals['_COMPACTTXSTREAMER']._serialized_end=3992 +# @@protoc_insertion_point(module_scope) diff --git a/qa/rpc-tests/test_framework/proto/service_pb2.pyi b/qa/rpc-tests/test_framework/proto/service_pb2.pyi new file mode 100644 index 000000000..9fba9522b --- /dev/null +++ b/qa/rpc-tests/test_framework/proto/service_pb2.pyi @@ -0,0 +1,235 @@ +import compact_formats_pb2 as _compact_formats_pb2 +from google.protobuf.internal import containers as _containers +from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from collections.abc import Iterable as _Iterable, Mapping as _Mapping +from typing import ClassVar as _ClassVar, Optional as _Optional, Union as _Union + +DESCRIPTOR: _descriptor.FileDescriptor + +class PoolType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + POOL_TYPE_INVALID: _ClassVar[PoolType] + TRANSPARENT: _ClassVar[PoolType] + SAPLING: _ClassVar[PoolType] + ORCHARD: _ClassVar[PoolType] + +class ShieldedProtocol(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + sapling: _ClassVar[ShieldedProtocol] + orchard: _ClassVar[ShieldedProtocol] +POOL_TYPE_INVALID: PoolType +TRANSPARENT: PoolType +SAPLING: PoolType +ORCHARD: PoolType +sapling: ShieldedProtocol +orchard: ShieldedProtocol + +class BlockID(_message.Message): + __slots__ = ("height", "hash") + HEIGHT_FIELD_NUMBER: _ClassVar[int] + HASH_FIELD_NUMBER: _ClassVar[int] + height: int + hash: bytes + def __init__(self, height: _Optional[int] = ..., hash: _Optional[bytes] = ...) -> None: ... + +class BlockRange(_message.Message): + __slots__ = ("start", "end", "poolTypes") + START_FIELD_NUMBER: _ClassVar[int] + END_FIELD_NUMBER: _ClassVar[int] + POOLTYPES_FIELD_NUMBER: _ClassVar[int] + start: BlockID + end: BlockID + poolTypes: _containers.RepeatedScalarFieldContainer[PoolType] + def __init__(self, start: _Optional[_Union[BlockID, _Mapping]] = ..., end: _Optional[_Union[BlockID, _Mapping]] = ..., poolTypes: _Optional[_Iterable[_Union[PoolType, str]]] = ...) -> None: ... + +class TxFilter(_message.Message): + __slots__ = ("block", "index", "hash") + BLOCK_FIELD_NUMBER: _ClassVar[int] + INDEX_FIELD_NUMBER: _ClassVar[int] + HASH_FIELD_NUMBER: _ClassVar[int] + block: BlockID + index: int + hash: bytes + def __init__(self, block: _Optional[_Union[BlockID, _Mapping]] = ..., index: _Optional[int] = ..., hash: _Optional[bytes] = ...) -> None: ... + +class RawTransaction(_message.Message): + __slots__ = ("data", "height") + DATA_FIELD_NUMBER: _ClassVar[int] + HEIGHT_FIELD_NUMBER: _ClassVar[int] + data: bytes + height: int + def __init__(self, data: _Optional[bytes] = ..., height: _Optional[int] = ...) -> None: ... + +class SendResponse(_message.Message): + __slots__ = ("errorCode", "errorMessage") + ERRORCODE_FIELD_NUMBER: _ClassVar[int] + ERRORMESSAGE_FIELD_NUMBER: _ClassVar[int] + errorCode: int + errorMessage: str + def __init__(self, errorCode: _Optional[int] = ..., errorMessage: _Optional[str] = ...) -> None: ... + +class ChainSpec(_message.Message): + __slots__ = () + def __init__(self) -> None: ... + +class Empty(_message.Message): + __slots__ = () + def __init__(self) -> None: ... + +class LightdInfo(_message.Message): + __slots__ = ("version", "vendor", "taddrSupport", "chainName", "saplingActivationHeight", "consensusBranchId", "blockHeight", "gitCommit", "branch", "buildDate", "buildUser", "estimatedHeight", "zcashdBuild", "zcashdSubversion", "donationAddress", "upgradeName", "upgradeHeight", "lightwalletProtocolVersion") + VERSION_FIELD_NUMBER: _ClassVar[int] + VENDOR_FIELD_NUMBER: _ClassVar[int] + TADDRSUPPORT_FIELD_NUMBER: _ClassVar[int] + CHAINNAME_FIELD_NUMBER: _ClassVar[int] + SAPLINGACTIVATIONHEIGHT_FIELD_NUMBER: _ClassVar[int] + CONSENSUSBRANCHID_FIELD_NUMBER: _ClassVar[int] + BLOCKHEIGHT_FIELD_NUMBER: _ClassVar[int] + GITCOMMIT_FIELD_NUMBER: _ClassVar[int] + BRANCH_FIELD_NUMBER: _ClassVar[int] + BUILDDATE_FIELD_NUMBER: _ClassVar[int] + BUILDUSER_FIELD_NUMBER: _ClassVar[int] + ESTIMATEDHEIGHT_FIELD_NUMBER: _ClassVar[int] + ZCASHDBUILD_FIELD_NUMBER: _ClassVar[int] + ZCASHDSUBVERSION_FIELD_NUMBER: _ClassVar[int] + DONATIONADDRESS_FIELD_NUMBER: _ClassVar[int] + UPGRADENAME_FIELD_NUMBER: _ClassVar[int] + UPGRADEHEIGHT_FIELD_NUMBER: _ClassVar[int] + LIGHTWALLETPROTOCOLVERSION_FIELD_NUMBER: _ClassVar[int] + version: str + vendor: str + taddrSupport: bool + chainName: str + saplingActivationHeight: int + consensusBranchId: str + blockHeight: int + gitCommit: str + branch: str + buildDate: str + buildUser: str + estimatedHeight: int + zcashdBuild: str + zcashdSubversion: str + donationAddress: str + upgradeName: str + upgradeHeight: int + lightwalletProtocolVersion: str + def __init__(self, version: _Optional[str] = ..., vendor: _Optional[str] = ..., taddrSupport: bool = ..., chainName: _Optional[str] = ..., saplingActivationHeight: _Optional[int] = ..., consensusBranchId: _Optional[str] = ..., blockHeight: _Optional[int] = ..., gitCommit: _Optional[str] = ..., branch: _Optional[str] = ..., buildDate: _Optional[str] = ..., buildUser: _Optional[str] = ..., estimatedHeight: _Optional[int] = ..., zcashdBuild: _Optional[str] = ..., zcashdSubversion: _Optional[str] = ..., donationAddress: _Optional[str] = ..., upgradeName: _Optional[str] = ..., upgradeHeight: _Optional[int] = ..., lightwalletProtocolVersion: _Optional[str] = ...) -> None: ... + +class TransparentAddressBlockFilter(_message.Message): + __slots__ = ("address", "range") + ADDRESS_FIELD_NUMBER: _ClassVar[int] + RANGE_FIELD_NUMBER: _ClassVar[int] + address: str + range: BlockRange + def __init__(self, address: _Optional[str] = ..., range: _Optional[_Union[BlockRange, _Mapping]] = ...) -> None: ... + +class Duration(_message.Message): + __slots__ = ("intervalUs",) + INTERVALUS_FIELD_NUMBER: _ClassVar[int] + intervalUs: int + def __init__(self, intervalUs: _Optional[int] = ...) -> None: ... + +class PingResponse(_message.Message): + __slots__ = ("entry", "exit") + ENTRY_FIELD_NUMBER: _ClassVar[int] + EXIT_FIELD_NUMBER: _ClassVar[int] + entry: int + exit: int + def __init__(self, entry: _Optional[int] = ..., exit: _Optional[int] = ...) -> None: ... + +class Address(_message.Message): + __slots__ = ("address",) + ADDRESS_FIELD_NUMBER: _ClassVar[int] + address: str + def __init__(self, address: _Optional[str] = ...) -> None: ... + +class AddressList(_message.Message): + __slots__ = ("addresses",) + ADDRESSES_FIELD_NUMBER: _ClassVar[int] + addresses: _containers.RepeatedScalarFieldContainer[str] + def __init__(self, addresses: _Optional[_Iterable[str]] = ...) -> None: ... + +class Balance(_message.Message): + __slots__ = ("valueZat",) + VALUEZAT_FIELD_NUMBER: _ClassVar[int] + valueZat: int + def __init__(self, valueZat: _Optional[int] = ...) -> None: ... + +class GetMempoolTxRequest(_message.Message): + __slots__ = ("exclude_txid_suffixes", "poolTypes") + EXCLUDE_TXID_SUFFIXES_FIELD_NUMBER: _ClassVar[int] + POOLTYPES_FIELD_NUMBER: _ClassVar[int] + exclude_txid_suffixes: _containers.RepeatedScalarFieldContainer[bytes] + poolTypes: _containers.RepeatedScalarFieldContainer[PoolType] + def __init__(self, exclude_txid_suffixes: _Optional[_Iterable[bytes]] = ..., poolTypes: _Optional[_Iterable[_Union[PoolType, str]]] = ...) -> None: ... + +class TreeState(_message.Message): + __slots__ = ("network", "height", "hash", "time", "saplingTree", "orchardTree") + NETWORK_FIELD_NUMBER: _ClassVar[int] + HEIGHT_FIELD_NUMBER: _ClassVar[int] + HASH_FIELD_NUMBER: _ClassVar[int] + TIME_FIELD_NUMBER: _ClassVar[int] + SAPLINGTREE_FIELD_NUMBER: _ClassVar[int] + ORCHARDTREE_FIELD_NUMBER: _ClassVar[int] + network: str + height: int + hash: str + time: int + saplingTree: str + orchardTree: str + def __init__(self, network: _Optional[str] = ..., height: _Optional[int] = ..., hash: _Optional[str] = ..., time: _Optional[int] = ..., saplingTree: _Optional[str] = ..., orchardTree: _Optional[str] = ...) -> None: ... + +class GetSubtreeRootsArg(_message.Message): + __slots__ = ("startIndex", "shieldedProtocol", "maxEntries") + STARTINDEX_FIELD_NUMBER: _ClassVar[int] + SHIELDEDPROTOCOL_FIELD_NUMBER: _ClassVar[int] + MAXENTRIES_FIELD_NUMBER: _ClassVar[int] + startIndex: int + shieldedProtocol: ShieldedProtocol + maxEntries: int + def __init__(self, startIndex: _Optional[int] = ..., shieldedProtocol: _Optional[_Union[ShieldedProtocol, str]] = ..., maxEntries: _Optional[int] = ...) -> None: ... + +class SubtreeRoot(_message.Message): + __slots__ = ("rootHash", "completingBlockHash", "completingBlockHeight") + ROOTHASH_FIELD_NUMBER: _ClassVar[int] + COMPLETINGBLOCKHASH_FIELD_NUMBER: _ClassVar[int] + COMPLETINGBLOCKHEIGHT_FIELD_NUMBER: _ClassVar[int] + rootHash: bytes + completingBlockHash: bytes + completingBlockHeight: int + def __init__(self, rootHash: _Optional[bytes] = ..., completingBlockHash: _Optional[bytes] = ..., completingBlockHeight: _Optional[int] = ...) -> None: ... + +class GetAddressUtxosArg(_message.Message): + __slots__ = ("addresses", "startHeight", "maxEntries") + ADDRESSES_FIELD_NUMBER: _ClassVar[int] + STARTHEIGHT_FIELD_NUMBER: _ClassVar[int] + MAXENTRIES_FIELD_NUMBER: _ClassVar[int] + addresses: _containers.RepeatedScalarFieldContainer[str] + startHeight: int + maxEntries: int + def __init__(self, addresses: _Optional[_Iterable[str]] = ..., startHeight: _Optional[int] = ..., maxEntries: _Optional[int] = ...) -> None: ... + +class GetAddressUtxosReply(_message.Message): + __slots__ = ("address", "txid", "index", "script", "valueZat", "height") + ADDRESS_FIELD_NUMBER: _ClassVar[int] + TXID_FIELD_NUMBER: _ClassVar[int] + INDEX_FIELD_NUMBER: _ClassVar[int] + SCRIPT_FIELD_NUMBER: _ClassVar[int] + VALUEZAT_FIELD_NUMBER: _ClassVar[int] + HEIGHT_FIELD_NUMBER: _ClassVar[int] + address: str + txid: bytes + index: int + script: bytes + valueZat: int + height: int + def __init__(self, address: _Optional[str] = ..., txid: _Optional[bytes] = ..., index: _Optional[int] = ..., script: _Optional[bytes] = ..., valueZat: _Optional[int] = ..., height: _Optional[int] = ...) -> None: ... + +class GetAddressUtxosReplyList(_message.Message): + __slots__ = ("addressUtxos",) + ADDRESSUTXOS_FIELD_NUMBER: _ClassVar[int] + addressUtxos: _containers.RepeatedCompositeFieldContainer[GetAddressUtxosReply] + def __init__(self, addressUtxos: _Optional[_Iterable[_Union[GetAddressUtxosReply, _Mapping]]] = ...) -> None: ... diff --git a/qa/rpc-tests/test_framework/proto/service_pb2_grpc.py b/qa/rpc-tests/test_framework/proto/service_pb2_grpc.py new file mode 100644 index 000000000..e64d704c3 --- /dev/null +++ b/qa/rpc-tests/test_framework/proto/service_pb2_grpc.py @@ -0,0 +1,962 @@ +# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! +"""Client and server classes corresponding to protobuf-defined services.""" +import grpc +import warnings + +from . import compact_formats_pb2 as compact__formats__pb2 +from . import service_pb2 as service__pb2 + +GRPC_GENERATED_VERSION = '1.80.0' +GRPC_VERSION = grpc.__version__ +_version_not_supported = False + +try: + from grpc._utilities import first_version_is_lower + _version_not_supported = first_version_is_lower(GRPC_VERSION, GRPC_GENERATED_VERSION) +except ImportError: + _version_not_supported = True + +if _version_not_supported: + raise RuntimeError( + f'The grpc package installed is at version {GRPC_VERSION},' + + ' but the generated code in service_pb2_grpc.py depends on' + + f' grpcio>={GRPC_GENERATED_VERSION}.' + + f' Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}' + + f' or downgrade your generated code using grpcio-tools<={GRPC_VERSION}.' + ) + + +class CompactTxStreamerStub(object): + """Missing associated documentation comment in .proto file.""" + + def __init__(self, channel): + """Constructor. + + Args: + channel: A grpc.Channel. + """ + self.GetLatestBlock = channel.unary_unary( + '/cash.z.wallet.sdk.rpc.CompactTxStreamer/GetLatestBlock', + request_serializer=service__pb2.ChainSpec.SerializeToString, + response_deserializer=service__pb2.BlockID.FromString, + _registered_method=True) + self.GetBlock = channel.unary_unary( + '/cash.z.wallet.sdk.rpc.CompactTxStreamer/GetBlock', + request_serializer=service__pb2.BlockID.SerializeToString, + response_deserializer=compact__formats__pb2.CompactBlock.FromString, + _registered_method=True) + self.GetBlockNullifiers = channel.unary_unary( + '/cash.z.wallet.sdk.rpc.CompactTxStreamer/GetBlockNullifiers', + request_serializer=service__pb2.BlockID.SerializeToString, + response_deserializer=compact__formats__pb2.CompactBlock.FromString, + _registered_method=True) + self.GetBlockRange = channel.unary_stream( + '/cash.z.wallet.sdk.rpc.CompactTxStreamer/GetBlockRange', + request_serializer=service__pb2.BlockRange.SerializeToString, + response_deserializer=compact__formats__pb2.CompactBlock.FromString, + _registered_method=True) + self.GetBlockRangeNullifiers = channel.unary_stream( + '/cash.z.wallet.sdk.rpc.CompactTxStreamer/GetBlockRangeNullifiers', + request_serializer=service__pb2.BlockRange.SerializeToString, + response_deserializer=compact__formats__pb2.CompactBlock.FromString, + _registered_method=True) + self.GetTransaction = channel.unary_unary( + '/cash.z.wallet.sdk.rpc.CompactTxStreamer/GetTransaction', + request_serializer=service__pb2.TxFilter.SerializeToString, + response_deserializer=service__pb2.RawTransaction.FromString, + _registered_method=True) + self.SendTransaction = channel.unary_unary( + '/cash.z.wallet.sdk.rpc.CompactTxStreamer/SendTransaction', + request_serializer=service__pb2.RawTransaction.SerializeToString, + response_deserializer=service__pb2.SendResponse.FromString, + _registered_method=True) + self.GetTaddressTxids = channel.unary_stream( + '/cash.z.wallet.sdk.rpc.CompactTxStreamer/GetTaddressTxids', + request_serializer=service__pb2.TransparentAddressBlockFilter.SerializeToString, + response_deserializer=service__pb2.RawTransaction.FromString, + _registered_method=True) + self.GetTaddressTransactions = channel.unary_stream( + '/cash.z.wallet.sdk.rpc.CompactTxStreamer/GetTaddressTransactions', + request_serializer=service__pb2.TransparentAddressBlockFilter.SerializeToString, + response_deserializer=service__pb2.RawTransaction.FromString, + _registered_method=True) + self.GetTaddressBalance = channel.unary_unary( + '/cash.z.wallet.sdk.rpc.CompactTxStreamer/GetTaddressBalance', + request_serializer=service__pb2.AddressList.SerializeToString, + response_deserializer=service__pb2.Balance.FromString, + _registered_method=True) + self.GetTaddressBalanceStream = channel.stream_unary( + '/cash.z.wallet.sdk.rpc.CompactTxStreamer/GetTaddressBalanceStream', + request_serializer=service__pb2.Address.SerializeToString, + response_deserializer=service__pb2.Balance.FromString, + _registered_method=True) + self.GetMempoolTx = channel.unary_stream( + '/cash.z.wallet.sdk.rpc.CompactTxStreamer/GetMempoolTx', + request_serializer=service__pb2.GetMempoolTxRequest.SerializeToString, + response_deserializer=compact__formats__pb2.CompactTx.FromString, + _registered_method=True) + self.GetMempoolStream = channel.unary_stream( + '/cash.z.wallet.sdk.rpc.CompactTxStreamer/GetMempoolStream', + request_serializer=service__pb2.Empty.SerializeToString, + response_deserializer=service__pb2.RawTransaction.FromString, + _registered_method=True) + self.GetTreeState = channel.unary_unary( + '/cash.z.wallet.sdk.rpc.CompactTxStreamer/GetTreeState', + request_serializer=service__pb2.BlockID.SerializeToString, + response_deserializer=service__pb2.TreeState.FromString, + _registered_method=True) + self.GetLatestTreeState = channel.unary_unary( + '/cash.z.wallet.sdk.rpc.CompactTxStreamer/GetLatestTreeState', + request_serializer=service__pb2.Empty.SerializeToString, + response_deserializer=service__pb2.TreeState.FromString, + _registered_method=True) + self.GetSubtreeRoots = channel.unary_stream( + '/cash.z.wallet.sdk.rpc.CompactTxStreamer/GetSubtreeRoots', + request_serializer=service__pb2.GetSubtreeRootsArg.SerializeToString, + response_deserializer=service__pb2.SubtreeRoot.FromString, + _registered_method=True) + self.GetAddressUtxos = channel.unary_unary( + '/cash.z.wallet.sdk.rpc.CompactTxStreamer/GetAddressUtxos', + request_serializer=service__pb2.GetAddressUtxosArg.SerializeToString, + response_deserializer=service__pb2.GetAddressUtxosReplyList.FromString, + _registered_method=True) + self.GetAddressUtxosStream = channel.unary_stream( + '/cash.z.wallet.sdk.rpc.CompactTxStreamer/GetAddressUtxosStream', + request_serializer=service__pb2.GetAddressUtxosArg.SerializeToString, + response_deserializer=service__pb2.GetAddressUtxosReply.FromString, + _registered_method=True) + self.GetLightdInfo = channel.unary_unary( + '/cash.z.wallet.sdk.rpc.CompactTxStreamer/GetLightdInfo', + request_serializer=service__pb2.Empty.SerializeToString, + response_deserializer=service__pb2.LightdInfo.FromString, + _registered_method=True) + self.Ping = channel.unary_unary( + '/cash.z.wallet.sdk.rpc.CompactTxStreamer/Ping', + request_serializer=service__pb2.Duration.SerializeToString, + response_deserializer=service__pb2.PingResponse.FromString, + _registered_method=True) + + +class CompactTxStreamerServicer(object): + """Missing associated documentation comment in .proto file.""" + + def GetLatestBlock(self, request, context): + """Return the BlockID of the block at the tip of the best chain + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def GetBlock(self, request, context): + """Return the compact block corresponding to the given block identifier + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def GetBlockNullifiers(self, request, context): + """Same as GetBlock except the returned CompactBlock value contains only + nullifiers. + + Note: this method is deprecated. Implementations should ignore any + `PoolType::TRANSPARENT` member of the `poolTypes` argument. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def GetBlockRange(self, request, context): + """Return a list of consecutive compact blocks in the specified range, + which is inclusive of `range.end`. + + If range.start <= range.end, blocks are returned increasing height order; + otherwise blocks are returned in decreasing height order. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def GetBlockRangeNullifiers(self, request, context): + """Same as GetBlockRange except the returned CompactBlock values contain + only nullifiers. + + Note: this method is deprecated. Implementations should ignore any + `PoolType::TRANSPARENT` member of the `poolTypes` argument. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def GetTransaction(self, request, context): + """Return the requested full (not compact) transaction (as from zcashd) + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def SendTransaction(self, request, context): + """Submit the given transaction to the Zcash network + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def GetTaddressTxids(self, request, context): + """Return RawTransactions that match the given transparent address filter. + + Note: This function is misnamed, it returns complete `RawTransaction` values, not TxIds. + NOTE: this method is deprecated, please use GetTaddressTransactions instead. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def GetTaddressTransactions(self, request, context): + """Return the transactions corresponding to the given t-address within the given block range. + Mempool transactions are not included in the results. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def GetTaddressBalance(self, request, context): + """Missing associated documentation comment in .proto file.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def GetTaddressBalanceStream(self, request_iterator, context): + """Missing associated documentation comment in .proto file.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def GetMempoolTx(self, request, context): + """Returns a stream of the compact transaction representation for transactions + currently in the mempool. The results of this operation may be a few + seconds out of date. If the `exclude_txid_suffixes` list is empty, + return all transactions; otherwise return all *except* those in the + `exclude_txid_suffixes` list (if any); this allows the client to avoid + receiving transactions that it already has (from an earlier call to this + RPC). The transaction IDs in the `exclude_txid_suffixes` list can be + shortened to any number of bytes to make the request more + bandwidth-efficient; if two or more transactions in the mempool match a + txid suffix, none of the matching transactions are excluded. Txid + suffixes in the exclude list that don't match any transactions in the + mempool are ignored. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def GetMempoolStream(self, request, context): + """Return a stream of current Mempool transactions. This will keep the output stream open while + there are mempool transactions. It will close the returned stream when a new block is mined. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def GetTreeState(self, request, context): + """GetTreeState returns the note commitment tree state corresponding to the given block. + See section 3.7 of the Zcash protocol specification. It returns several other useful + values also (even though they can be obtained using GetBlock). + The block can be specified by either height or hash. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def GetLatestTreeState(self, request, context): + """Missing associated documentation comment in .proto file.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def GetSubtreeRoots(self, request, context): + """Returns a stream of information about roots of subtrees of the note commitment tree + for the specified shielded protocol (Sapling or Orchard). + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def GetAddressUtxos(self, request, context): + """Missing associated documentation comment in .proto file.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def GetAddressUtxosStream(self, request, context): + """Missing associated documentation comment in .proto file.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def GetLightdInfo(self, request, context): + """Return information about this lightwalletd instance and the blockchain + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def Ping(self, request, context): + """Testing-only, requires lightwalletd --ping-very-insecure (do not enable in production) + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + +def add_CompactTxStreamerServicer_to_server(servicer, server): + rpc_method_handlers = { + 'GetLatestBlock': grpc.unary_unary_rpc_method_handler( + servicer.GetLatestBlock, + request_deserializer=service__pb2.ChainSpec.FromString, + response_serializer=service__pb2.BlockID.SerializeToString, + ), + 'GetBlock': grpc.unary_unary_rpc_method_handler( + servicer.GetBlock, + request_deserializer=service__pb2.BlockID.FromString, + response_serializer=compact__formats__pb2.CompactBlock.SerializeToString, + ), + 'GetBlockNullifiers': grpc.unary_unary_rpc_method_handler( + servicer.GetBlockNullifiers, + request_deserializer=service__pb2.BlockID.FromString, + response_serializer=compact__formats__pb2.CompactBlock.SerializeToString, + ), + 'GetBlockRange': grpc.unary_stream_rpc_method_handler( + servicer.GetBlockRange, + request_deserializer=service__pb2.BlockRange.FromString, + response_serializer=compact__formats__pb2.CompactBlock.SerializeToString, + ), + 'GetBlockRangeNullifiers': grpc.unary_stream_rpc_method_handler( + servicer.GetBlockRangeNullifiers, + request_deserializer=service__pb2.BlockRange.FromString, + response_serializer=compact__formats__pb2.CompactBlock.SerializeToString, + ), + 'GetTransaction': grpc.unary_unary_rpc_method_handler( + servicer.GetTransaction, + request_deserializer=service__pb2.TxFilter.FromString, + response_serializer=service__pb2.RawTransaction.SerializeToString, + ), + 'SendTransaction': grpc.unary_unary_rpc_method_handler( + servicer.SendTransaction, + request_deserializer=service__pb2.RawTransaction.FromString, + response_serializer=service__pb2.SendResponse.SerializeToString, + ), + 'GetTaddressTxids': grpc.unary_stream_rpc_method_handler( + servicer.GetTaddressTxids, + request_deserializer=service__pb2.TransparentAddressBlockFilter.FromString, + response_serializer=service__pb2.RawTransaction.SerializeToString, + ), + 'GetTaddressTransactions': grpc.unary_stream_rpc_method_handler( + servicer.GetTaddressTransactions, + request_deserializer=service__pb2.TransparentAddressBlockFilter.FromString, + response_serializer=service__pb2.RawTransaction.SerializeToString, + ), + 'GetTaddressBalance': grpc.unary_unary_rpc_method_handler( + servicer.GetTaddressBalance, + request_deserializer=service__pb2.AddressList.FromString, + response_serializer=service__pb2.Balance.SerializeToString, + ), + 'GetTaddressBalanceStream': grpc.stream_unary_rpc_method_handler( + servicer.GetTaddressBalanceStream, + request_deserializer=service__pb2.Address.FromString, + response_serializer=service__pb2.Balance.SerializeToString, + ), + 'GetMempoolTx': grpc.unary_stream_rpc_method_handler( + servicer.GetMempoolTx, + request_deserializer=service__pb2.GetMempoolTxRequest.FromString, + response_serializer=compact__formats__pb2.CompactTx.SerializeToString, + ), + 'GetMempoolStream': grpc.unary_stream_rpc_method_handler( + servicer.GetMempoolStream, + request_deserializer=service__pb2.Empty.FromString, + response_serializer=service__pb2.RawTransaction.SerializeToString, + ), + 'GetTreeState': grpc.unary_unary_rpc_method_handler( + servicer.GetTreeState, + request_deserializer=service__pb2.BlockID.FromString, + response_serializer=service__pb2.TreeState.SerializeToString, + ), + 'GetLatestTreeState': grpc.unary_unary_rpc_method_handler( + servicer.GetLatestTreeState, + request_deserializer=service__pb2.Empty.FromString, + response_serializer=service__pb2.TreeState.SerializeToString, + ), + 'GetSubtreeRoots': grpc.unary_stream_rpc_method_handler( + servicer.GetSubtreeRoots, + request_deserializer=service__pb2.GetSubtreeRootsArg.FromString, + response_serializer=service__pb2.SubtreeRoot.SerializeToString, + ), + 'GetAddressUtxos': grpc.unary_unary_rpc_method_handler( + servicer.GetAddressUtxos, + request_deserializer=service__pb2.GetAddressUtxosArg.FromString, + response_serializer=service__pb2.GetAddressUtxosReplyList.SerializeToString, + ), + 'GetAddressUtxosStream': grpc.unary_stream_rpc_method_handler( + servicer.GetAddressUtxosStream, + request_deserializer=service__pb2.GetAddressUtxosArg.FromString, + response_serializer=service__pb2.GetAddressUtxosReply.SerializeToString, + ), + 'GetLightdInfo': grpc.unary_unary_rpc_method_handler( + servicer.GetLightdInfo, + request_deserializer=service__pb2.Empty.FromString, + response_serializer=service__pb2.LightdInfo.SerializeToString, + ), + 'Ping': grpc.unary_unary_rpc_method_handler( + servicer.Ping, + request_deserializer=service__pb2.Duration.FromString, + response_serializer=service__pb2.PingResponse.SerializeToString, + ), + } + generic_handler = grpc.method_handlers_generic_handler( + 'cash.z.wallet.sdk.rpc.CompactTxStreamer', rpc_method_handlers) + server.add_generic_rpc_handlers((generic_handler,)) + server.add_registered_method_handlers('cash.z.wallet.sdk.rpc.CompactTxStreamer', rpc_method_handlers) + + + # This class is part of an EXPERIMENTAL API. +class CompactTxStreamer(object): + """Missing associated documentation comment in .proto file.""" + + @staticmethod + def GetLatestBlock(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/cash.z.wallet.sdk.rpc.CompactTxStreamer/GetLatestBlock', + service__pb2.ChainSpec.SerializeToString, + service__pb2.BlockID.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def GetBlock(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/cash.z.wallet.sdk.rpc.CompactTxStreamer/GetBlock', + service__pb2.BlockID.SerializeToString, + compact__formats__pb2.CompactBlock.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def GetBlockNullifiers(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/cash.z.wallet.sdk.rpc.CompactTxStreamer/GetBlockNullifiers', + service__pb2.BlockID.SerializeToString, + compact__formats__pb2.CompactBlock.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def GetBlockRange(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_stream( + request, + target, + '/cash.z.wallet.sdk.rpc.CompactTxStreamer/GetBlockRange', + service__pb2.BlockRange.SerializeToString, + compact__formats__pb2.CompactBlock.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def GetBlockRangeNullifiers(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_stream( + request, + target, + '/cash.z.wallet.sdk.rpc.CompactTxStreamer/GetBlockRangeNullifiers', + service__pb2.BlockRange.SerializeToString, + compact__formats__pb2.CompactBlock.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def GetTransaction(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/cash.z.wallet.sdk.rpc.CompactTxStreamer/GetTransaction', + service__pb2.TxFilter.SerializeToString, + service__pb2.RawTransaction.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def SendTransaction(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/cash.z.wallet.sdk.rpc.CompactTxStreamer/SendTransaction', + service__pb2.RawTransaction.SerializeToString, + service__pb2.SendResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def GetTaddressTxids(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_stream( + request, + target, + '/cash.z.wallet.sdk.rpc.CompactTxStreamer/GetTaddressTxids', + service__pb2.TransparentAddressBlockFilter.SerializeToString, + service__pb2.RawTransaction.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def GetTaddressTransactions(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_stream( + request, + target, + '/cash.z.wallet.sdk.rpc.CompactTxStreamer/GetTaddressTransactions', + service__pb2.TransparentAddressBlockFilter.SerializeToString, + service__pb2.RawTransaction.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def GetTaddressBalance(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/cash.z.wallet.sdk.rpc.CompactTxStreamer/GetTaddressBalance', + service__pb2.AddressList.SerializeToString, + service__pb2.Balance.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def GetTaddressBalanceStream(request_iterator, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.stream_unary( + request_iterator, + target, + '/cash.z.wallet.sdk.rpc.CompactTxStreamer/GetTaddressBalanceStream', + service__pb2.Address.SerializeToString, + service__pb2.Balance.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def GetMempoolTx(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_stream( + request, + target, + '/cash.z.wallet.sdk.rpc.CompactTxStreamer/GetMempoolTx', + service__pb2.GetMempoolTxRequest.SerializeToString, + compact__formats__pb2.CompactTx.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def GetMempoolStream(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_stream( + request, + target, + '/cash.z.wallet.sdk.rpc.CompactTxStreamer/GetMempoolStream', + service__pb2.Empty.SerializeToString, + service__pb2.RawTransaction.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def GetTreeState(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/cash.z.wallet.sdk.rpc.CompactTxStreamer/GetTreeState', + service__pb2.BlockID.SerializeToString, + service__pb2.TreeState.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def GetLatestTreeState(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/cash.z.wallet.sdk.rpc.CompactTxStreamer/GetLatestTreeState', + service__pb2.Empty.SerializeToString, + service__pb2.TreeState.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def GetSubtreeRoots(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_stream( + request, + target, + '/cash.z.wallet.sdk.rpc.CompactTxStreamer/GetSubtreeRoots', + service__pb2.GetSubtreeRootsArg.SerializeToString, + service__pb2.SubtreeRoot.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def GetAddressUtxos(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/cash.z.wallet.sdk.rpc.CompactTxStreamer/GetAddressUtxos', + service__pb2.GetAddressUtxosArg.SerializeToString, + service__pb2.GetAddressUtxosReplyList.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def GetAddressUtxosStream(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_stream( + request, + target, + '/cash.z.wallet.sdk.rpc.CompactTxStreamer/GetAddressUtxosStream', + service__pb2.GetAddressUtxosArg.SerializeToString, + service__pb2.GetAddressUtxosReply.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def GetLightdInfo(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/cash.z.wallet.sdk.rpc.CompactTxStreamer/GetLightdInfo', + service__pb2.Empty.SerializeToString, + service__pb2.LightdInfo.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def Ping(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/cash.z.wallet.sdk.rpc.CompactTxStreamer/Ping', + service__pb2.Duration.SerializeToString, + service__pb2.PingResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) diff --git a/qa/rpc-tests/test_framework/test_framework.py b/qa/rpc-tests/test_framework/test_framework.py index e9afee4d7..17a90c68a 100755 --- a/qa/rpc-tests/test_framework/test_framework.py +++ b/qa/rpc-tests/test_framework/test_framework.py @@ -24,15 +24,18 @@ start_nodes, start_wallets, start_zainos, + start_lightwalletds, connect_nodes_bi, sync_blocks, sync_mempools, stop_nodes, stop_wallets, stop_zainos, + stop_lightwalletds, wait_bitcoinds, wait_zainods, wait_zallets, + wait_lightwalletds, enable_coverage, check_json_precision, PortSeed, @@ -44,10 +47,12 @@ class BitcoinTestFramework(object): def __init__(self): self.num_nodes = 4 self.num_indexers = 0 + self.num_lightwalletds = 0 self.num_wallets = 4 self.cache_behavior = 'current' self.nodes = None self.zainos = None + self.lwds = None self.wallets = None self.miner_addresses = None @@ -85,6 +90,9 @@ def prepare_chain(self): def setup_indexers(self): return start_zainos(self.num_indexers, self.options.tmpdir) + def setup_lightwalletds(self): + return start_lightwalletds(self.num_lightwalletds, self.options.tmpdir) + def setup_wallets(self): return start_wallets(self.num_wallets, self.options.tmpdir) @@ -113,6 +121,7 @@ def setup_network(self, split = False, do_mempool_sync = True): self.sync_all(do_mempool_sync) self.zainos = self.setup_indexers() + self.lwds = self.setup_lightwalletds() self.wallets = self.setup_wallets() def split_network(self): @@ -222,6 +231,10 @@ def main(self): stop_wallets(self.wallets) wait_zallets() + print("Stopping lightwalletds") + stop_lightwalletds(self.lwds or []) + wait_lightwalletds() + print("Stopping indexers") stop_zainos(self.zainos) wait_zainods() @@ -230,7 +243,7 @@ def main(self): stop_nodes(self.nodes) wait_bitcoinds() else: - print("Note: zebrads, zainods, and zallets were not stopped and may still be running") + print("Note: zebrads, zainods, lightwalletds, and zallets were not stopped and may still be running") if not self.options.nocleanup and not self.options.noshutdown: print("Cleaning up") diff --git a/qa/rpc-tests/test_framework/util.py b/qa/rpc-tests/test_framework/util.py index 13c4d68f0..296076bb6 100644 --- a/qa/rpc-tests/test_framework/util.py +++ b/qa/rpc-tests/test_framework/util.py @@ -63,6 +63,9 @@ def zaino_binary(): def zallet_binary(): return os.getenv("ZALLET", os.path.join("src", "zallet")) +def lightwalletd_binary(): + return os.getenv("LIGHTWALLETD", os.path.join("src", "lightwalletd")) + def zebrad_config(datadir): base_location = os.path.join('qa', 'defaults', 'zebrad', 'config.toml') new_location = os.path.join(datadir, "config.toml") @@ -139,6 +142,9 @@ def zaino_rpc_port(n): def zaino_grpc_port(n): return PORT_MIN + (PORT_RANGE * 5) + n + (MAX_NODES * PortSeed.n) % (PORT_RANGE - 1 - MAX_NODES) +def lwd_grpc_port(n): + return PORT_MIN + (PORT_RANGE * 6) + n + (MAX_NODES * PortSeed.n) % (PORT_RANGE - 1 - MAX_NODES) + def check_json_precision(): """Make sure json library being used does not lose precision converting ZEC values""" n = Decimal("20000000.00000003") @@ -1190,3 +1196,99 @@ def wait_zainods(): pass continue zainod_processes.clear() + + +# Lightwalletd utilities + +lwd_processes = {} + +def write_lwd_conf(datadir, node_rpc_port): + """Write a minimal zcash.conf for lightwalletd to connect to a Zebrad node.""" + conf_path = os.path.join(datadir, "zcash.conf") + with open(conf_path, "w", encoding="utf8") as f: + f.write("rpcbind=127.0.0.1\n") + f.write(f"rpcport={node_rpc_port}\n") + f.write("rpcuser=test\n") + f.write("rpcpassword=test\n") + return conf_path + +def start_lightwalletds(num_nodes, dirname, binary=None): + """Start multiple lightwalletd instances, return list of gRPC port numbers.""" + if binary is None: + binary = [None] * num_nodes + ports = [] + try: + for i in range(num_nodes): + ports.append(start_lightwalletd(i, dirname, binary=binary[i])) + except: + stop_lightwalletds(ports) + raise + return ports + +def start_lightwalletd(i, dirname, binary=None, stderr=None): + """Start a lightwalletd instance and return its gRPC port number.""" + datadir = os.path.join(dirname, "lwd" + str(i)) + os.makedirs(datadir, exist_ok=True) + + if binary is None: + binary = lightwalletd_binary() + + conf = write_lwd_conf(datadir, rpc_port(i)) + grpc_addr = f"127.0.0.1:{lwd_grpc_port(i)}" + + args = [ + binary, + "--grpc-bind-addr", grpc_addr, + "--no-tls-very-insecure", + "--zcash-conf-path", conf, + "--data-dir", datadir, + "--log-file", os.path.join(datadir, "lwd.log"), + "--log-level", "10", + ] + + if os.getenv("PYTHON_DEBUG", ""): + print(f"start_lightwalletd: starting lightwalletd {i}") + + lwd_processes[i] = subprocess.Popen(args, stderr=stderr) + wait_for_lwd_start(lwd_processes[i], lwd_grpc_port(i), i) + + if os.getenv("PYTHON_DEBUG", ""): + print(f"start_lightwalletd: lightwalletd {i} ready on {grpc_addr}") + + return lwd_grpc_port(i) + +def wait_for_lwd_start(process, port, i): + """Poll lightwalletd via GetLightdInfo until it responds or exits.""" + import grpc + from test_framework.proto import service_pb2, service_pb2_grpc + + deadline = time.time() + 60 + while time.time() < deadline: + if process.poll() is not None: + raise Exception( + f"lightwalletd {i} exited with status {process.returncode} during initialization" + ) + try: + with grpc.insecure_channel(f"127.0.0.1:{port}") as ch: + stub = service_pb2_grpc.CompactTxStreamerStub(ch) + stub.GetLightdInfo(service_pb2.Empty(), timeout=2) + return + except grpc.RpcError: + pass + time.sleep(0.5) + raise Exception(f"lightwalletd {i} did not become ready within 60 seconds") + +def stop_lightwalletds(lwds): + del lwds[:] + +def wait_lightwalletds(): + for proc in list(lwd_processes.values()): + try: + proc.terminate() + proc.wait(timeout=10) + except Exception: + try: + proc.kill() + except Exception: + pass + lwd_processes.clear() diff --git a/qa/zcash/grpc_comparison_tests.py b/qa/zcash/grpc_comparison_tests.py new file mode 100755 index 000000000..d45757c6a --- /dev/null +++ b/qa/zcash/grpc_comparison_tests.py @@ -0,0 +1,37 @@ +#!/usr/bin/env python3 +# +# Run the gRPC parity tests comparing Zainod and Lightwalletd +# backed by the same Zebrad node. +# +# Usage: +# uv run ./qa/zcash/grpc_comparison_tests.py [rpc-tests options] +# +# Examples: +# uv run ./qa/zcash/grpc_comparison_tests.py +# uv run ./qa/zcash/grpc_comparison_tests.py --nocleanup +# +# Binaries are resolved from ./src/ by default, or from environment variables: +# ZEBRAD, ZAINOD, LIGHTWALLETD +# + +import os +import subprocess +import sys + +REPOROOT = os.path.dirname( + os.path.dirname( + os.path.dirname( + os.path.abspath(__file__) + ) + ) +) + +def repofile(filename): + return os.path.join(REPOROOT, filename) + +def main(): + cmd = [repofile('qa/pull-tester/rpc-tests.py'), 'grpc_comparison.py'] + sys.argv[1:] + sys.exit(subprocess.call(cmd)) + +if __name__ == '__main__': + main() diff --git a/scripts/generate_proto.sh b/scripts/generate_proto.sh new file mode 100755 index 000000000..bc4635cd3 --- /dev/null +++ b/scripts/generate_proto.sh @@ -0,0 +1,39 @@ +#!/usr/bin/env bash +# Regenerate Python gRPC stubs from the lightwallet-protocol subtree. +# +# Run this after updating the subtree to a new protocol version: +# +# git subtree pull --prefix=lightwallet-protocol \ +# https://github.com/zcash/lightwallet-protocol.git --squash +# +# Then regenerate and commit the updated stubs: +# +# scripts/generate_proto.sh +# git add qa/rpc-tests/test_framework/proto/ +# git commit -m "update: regenerate gRPC stubs from lightwallet-protocol " +# +# Requirements: grpcio-tools (developer tool, not a runtime dependency) +# uv tool install grpcio-tools +set -euo pipefail + +REPO_ROOT="$(cd "$(dirname "$0")/.." && pwd)" +PROTO_SRC="$REPO_ROOT/lightwallet-protocol/walletrpc" +PROTO_OUT="$REPO_ROOT/qa/rpc-tests/test_framework/proto" + +python-grpc-tools-protoc \ + -I "$PROTO_SRC" \ + --python_out="$PROTO_OUT" \ + --pyi_out="$PROTO_OUT" \ + --grpc_python_out="$PROTO_OUT" \ + "$PROTO_SRC/compact_formats.proto" \ + "$PROTO_SRC/service.proto" + +# grpcio-tools generates flat imports that break when loaded as a package. +# Fix them to use relative imports. +sed -i 's/^import compact_formats_pb2 as/from . import compact_formats_pb2 as/' \ + "$PROTO_OUT/service_pb2.py" \ + "$PROTO_OUT/service_pb2_grpc.py" +sed -i 's/^import service_pb2 as/from . import service_pb2 as/' \ + "$PROTO_OUT/service_pb2_grpc.py" + +echo "Stubs written to $PROTO_OUT" From 17ebb0db82fad2ce4e001017e7e93001bea8edd2 Mon Sep 17 00:00:00 2001 From: Pacu Date: Thu, 9 Apr 2026 21:04:20 -0300 Subject: [PATCH 03/15] fix: address Copilot review findings in gRPC parity test suite - Fix flat import in service_pb2.pyi (relative import was missing, unlike the .py counterpart); extend generate_proto.sh to rewrite imports in .pyi files as well - Add missing height assertion in test_get_taddress_txids_lower - Add per-element data+height assertions in test_get_taddress_txids_upper (previously only checked stream length) - Add missing script and height assertions in test_get_address_utxos_stream to match the coverage in test_get_address_utxos - Fix gRPC channel leak in _wait_for_indexers: wrap channel lifecycle in try/finally and close both channels on exit - Pad chain to 100 blocks before starting indexers: Zainod requires a minimum of 100 blocks; the three mining phases only produce 36 Co-Authored-By: Claude Sonnet 4.6 --- .github/workflows/ci.yml | 100 ++++++- README.md | 14 + doc/book/src/user/running-tests.md | 31 +- doc/book/src/user/writing-tests.md | 60 ++++ pyproject.toml | 2 + qa/rpc-tests/grpc_comparison.py | 266 ++++++++++++++++-- .../test_framework/proto/service_pb2.pyi | 2 +- qa/rpc-tests/test_framework/test_framework.py | 12 +- qa/rpc-tests/test_framework/util.py | 111 ++++++++ scripts/generate_proto.sh | 11 +- uv.lock | 49 ++++ 11 files changed, 616 insertions(+), 42 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 43e5f0d07..b5eef8942 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -33,6 +33,7 @@ on: - zebra-interop-request - zaino-interop-request - zallet-interop-request + - lightwalletd-interop-request permissions: contents: read @@ -614,6 +615,83 @@ jobs: requesting-repository: ${{ steps.repo-ids.outputs.requesting-repository }} job-name: "Build zallet on ${{ matrix.platform }}${{ matrix.required_suffix }}" + build-lightwalletd: + name: Build lightwalletd on ${{ matrix.platform }}${{ matrix.required_suffix }} + needs: setup + runs-on: ${{ matrix.build_os }} + container: + image: ${{ matrix.container }} + env: + HOME: /root + PATH: /root/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:$PATH + continue-on-error: ${{ !matrix.required }} + strategy: + matrix: + include: ${{ fromJson(needs.setup.outputs.build_matrix) }} + + steps: + - name: Check out integration-tests to access actions + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + with: + path: integration-tests + persist-credentials: false + + - name: Compute interop repo ids + id: repo-ids + uses: ./integration-tests/.github/actions/interop-repo-ids + + - id: start-interop + uses: ./integration-tests/.github/actions/start-interop + with: + status-app-id: ${{ secrets.STATUS_APP_ID }} + status-app-private-key: ${{ secrets.STATUS_APP_PRIVATE_KEY }} + requesting-owner: ${{ steps.repo-ids.outputs.requesting-owner }} + requesting-repository: ${{ steps.repo-ids.outputs.requesting-repository }} + job-name: "Build lightwalletd on ${{ matrix.platform }}${{ matrix.required_suffix }}" + + - name: Use specified zcash/lightwalletd commit + if: github.event.action == 'lightwalletd-interop-request' + shell: sh + env: + SHA: ${{ github.event.client_payload.sha }} + run: echo "LIGHTWALLETD_REF=${SHA}" >> $GITHUB_ENV + + - name: Use zcash/lightwalletd current master + if: github.event.action != 'lightwalletd-interop-request' + run: echo "LIGHTWALLETD_REF=refs/heads/master" >> $GITHUB_ENV + + - name: Check out zcash/lightwalletd + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + with: + repository: zcash/lightwalletd + ref: ${{ env.LIGHTWALLETD_REF }} + path: lightwalletd + + - name: Set up Go + uses: actions/setup-go@0aaccfd150d50ccaeb58ebd88d36e91967a5f35b # v5.4.0 + with: + go-version-file: lightwalletd/go.mod + cache-dependency-path: lightwalletd/go.sum + + - name: Build lightwalletd + run: go build -v -o lightwalletd${{ matrix.file_ext }} . + working-directory: ./lightwalletd + + - name: Upload lightwalletd + uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 + with: + name: lightwalletd-${{ matrix.name }} + path: | + ${{ format('./lightwalletd/lightwalletd{0}', matrix.file_ext) }} + + - uses: ./integration-tests/.github/actions/finish-interop + if: always() + with: + app-token: ${{ steps.start-interop.outputs.app-token }} + requesting-owner: ${{ steps.repo-ids.outputs.requesting-owner }} + requesting-repository: ${{ steps.repo-ids.outputs.requesting-repository }} + job-name: "Build lightwalletd on ${{ matrix.platform }}${{ matrix.required_suffix }}" + # Not working in Windows sec-hard: name: sec-hard ${{ matrix.platform }}${{ matrix.required_suffix }} @@ -622,6 +700,7 @@ jobs: - build-zebra - build-zaino - build-zallet + - build-lightwalletd runs-on: ${{ matrix.test_os }} container: image: ${{ matrix.container }} @@ -682,12 +761,19 @@ jobs: name: zallet-${{ matrix.name }} path: ./src + - name: Download lightwalletd artifact + uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0 + with: + name: lightwalletd-${{ matrix.name }} + path: ./src + - name: Make artifact executable if: runner.os != 'Windows' run: | chmod +x ${{ format('./src/zebrad{0}', matrix.file_ext) }} chmod +x ${{ format('./src/zainod{0}', matrix.file_ext) }} chmod +x ${{ format('./src/zallet{0}', matrix.file_ext) }} + chmod +x ${{ format('./src/lightwalletd{0}', matrix.file_ext) }} - name: Run sec-hard test shell: bash @@ -730,7 +816,7 @@ jobs: run: | python3 -m venv ./venv . ./venv/bin/activate - pip install zmq asyncio base58 toml + pip install zmq asyncio base58 toml grpcio protobuf test-rpc: name: RPC tests ${{ matrix.platform }} ${{ matrix.shard }}${{ matrix.required_suffix }} @@ -739,6 +825,7 @@ jobs: - build-zebra - build-zaino - build-zallet + - build-lightwalletd - rpc-depends runs-on: ${{ matrix.test_os }} container: @@ -796,7 +883,7 @@ jobs: run: | python3 -m venv ./venv . ./venv/bin/activate - pip install zmq asyncio base58 toml + pip install zmq asyncio base58 toml grpcio protobuf - name: Download zebrad artifact uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0 @@ -816,12 +903,19 @@ jobs: name: zallet-${{ matrix.name }} path: ./src + - name: Download lightwalletd artifact + uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0 + with: + name: lightwalletd-${{ matrix.name }} + path: ./src + - name: Make artifact executable if: runner.os != 'Windows' run: | chmod +x ${{ format('./src/zebrad{0}', matrix.file_ext) }} chmod +x ${{ format('./src/zainod{0}', matrix.file_ext) }} chmod +x ${{ format('./src/zallet{0}', matrix.file_ext) }} + chmod +x ${{ format('./src/lightwalletd{0}', matrix.file_ext) }} - name: Get Sprout parameters uses: actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v5.0.3 @@ -878,7 +972,7 @@ jobs: sys.exit(1) EOF . ./venv/bin/activate - ZEBRAD=$(pwd)/${{ format('src/zebrad{0}', matrix.file_ext) }} ZAINOD=$(pwd)/${{ format('src/zainod{0}', matrix.file_ext) }} ZALLET=$(pwd)/${{ format('src/zallet{0}', matrix.file_ext) }} SRC_DIR=$(pwd) python3 ./subclass.py + ZEBRAD=$(pwd)/${{ format('src/zebrad{0}', matrix.file_ext) }} ZAINOD=$(pwd)/${{ format('src/zainod{0}', matrix.file_ext) }} ZALLET=$(pwd)/${{ format('src/zallet{0}', matrix.file_ext) }} LIGHTWALLETD=$(pwd)/${{ format('src/lightwalletd{0}', matrix.file_ext) }} SRC_DIR=$(pwd) python3 ./subclass.py - uses: ./.github/actions/finish-interop if: always() diff --git a/README.md b/README.md index b42acdc40..51aa666eb 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,9 @@ Zcash ecosystem. The following tests are provided: - Functional tests in Python of [`zebrad`], [`zainod`], and [`zallet`], using regtest mode and primarily their JSON-RPC interfaces. +- gRPC parity tests that run [`zainod`] and [`lightwalletd`] side-by-side + against the same [`zebrad`] node and compare their + [lightwallet-protocol] gRPC responses. The functional tests and CI workflows were originally part of the [`zcashd`] codebase, with the Python test framework (and some of the tests) inherited from @@ -15,6 +18,8 @@ codebase, with the Python test framework (and some of the tests) inherited from [`zebrad`]: https://github.com/ZcashFoundation/zebra [`zainod`]: https://github.com/zingolabs/zaino [`zallet`]: https://github.com/zcash/wallet +[`lightwalletd`]: https://github.com/zcash/lightwalletd +[lightwallet-protocol]: https://github.com/zcash/lightwallet-protocol [`zcashd`]: https://github.com/zcash/zcash [Bitcoin Core]: https://github.com/bitcoin/bitcoin @@ -47,6 +52,15 @@ On macOS or other platforms: See [the README for the functional tests][qa/README.md] for additional usage information. +### Running the gRPC parity tests + +The gRPC parity tests additionally require the `lightwalletd` binary in `./src/` +(or set `LIGHTWALLETD=/path/to/lightwalletd`). + +```bash +uv run ./qa/zcash/grpc_comparison_tests.py +``` + ### Writing tests - For new tests: diff --git a/doc/book/src/user/running-tests.md b/doc/book/src/user/running-tests.md index 619dd3af5..a86c585a1 100644 --- a/doc/book/src/user/running-tests.md +++ b/doc/book/src/user/running-tests.md @@ -5,7 +5,8 @@ ### Binaries All tests require the `zebrad` binary; most tests require the `zallet` binary; -some tests require the `zainod` binary. +some tests require the `zainod` binary. The gRPC parity tests additionally +require the `lightwalletd` binary. By default, binaries must exist in the `./src/` folder under the repository root. Alternatively, you can set the binary paths with environment variables: @@ -14,11 +15,12 @@ root. Alternatively, you can set the binary paths with environment variables: export ZEBRAD=/path/to/zebrad export ZAINOD=/path/to/zainod export ZALLET=/path/to/zallet +export LIGHTWALLETD=/path/to/lightwalletd ``` ### Python dependencies -The `zmq`, `toml`, and `base58` Python libraries are required. +The `zmq`, `toml`, `base58`, `grpcio`, and `protobuf` Python libraries are required. #### With uv (recommended) @@ -32,6 +34,7 @@ On Ubuntu or Debian-based distributions: ```bash sudo apt-get install python3-zmq python3-base58 python3-toml +pip3 install grpcio protobuf ``` On macOS or other platforms: @@ -39,7 +42,7 @@ On macOS or other platforms: ```bash python3 -m venv venv . venv/bin/activate -pip3 install pyzmq base58 toml +pip3 install pyzmq base58 toml grpcio protobuf ``` ## Running the full test suite @@ -56,6 +59,27 @@ Without uv: ./qa/zcash/full_test_suite.py ``` +## Running the gRPC parity tests + +The gRPC parity tests run [`zainod`] and [`lightwalletd`] side-by-side against +the same [`zebrad`] node and compare their [lightwallet-protocol] gRPC responses. +They require the `lightwalletd` binary (see [Binaries](#binaries) above). + +```bash +uv run ./qa/zcash/grpc_comparison_tests.py +``` + +Pass any [test runner options](#test-runner-options) after the script name: + +```bash +uv run ./qa/zcash/grpc_comparison_tests.py --nocleanup +``` + +[`zebrad`]: https://github.com/ZcashFoundation/zebra +[`zainod`]: https://github.com/zingolabs/zaino +[`lightwalletd`]: https://github.com/zcash/lightwalletd +[lightwallet-protocol]: https://github.com/zcash/lightwallet-protocol + ## Running individual tests Run a single test: @@ -127,4 +151,5 @@ rm -rf cache killall zebrad killall zainod killall zallet +killall lightwalletd ``` diff --git a/doc/book/src/user/writing-tests.md b/doc/book/src/user/writing-tests.md index 03c27a323..046ad5b16 100644 --- a/doc/book/src/user/writing-tests.md +++ b/doc/book/src/user/writing-tests.md @@ -25,6 +25,66 @@ The test framework lives in `qa/rpc-tests/test_framework/`. Key modules: | `key.py` | Wrapper around OpenSSL EC_Key | | `bignum.py` | Helpers for `script.py` | | `blocktools.py` | Helper functions for creating blocks and transactions | +| `proto/` | Generated Python gRPC stubs for the [lightwallet-protocol] | + +[lightwallet-protocol]: https://github.com/zcash/lightwallet-protocol + +## Writing gRPC parity tests + +The framework supports starting a `lightwalletd` instance alongside a `zainod` +instance and comparing their `CompactTxStreamer` gRPC responses. See +`qa/rpc-tests/grpc_comparison.py` for a complete example. + +### Service lifecycle + +Set `num_lightwalletds` in your test's `__init__` alongside `num_indexers`: + +```python +class MyGrpcTest(BitcoinTestFramework): + def __init__(self): + super().__init__() + self.num_nodes = 1 + self.num_indexers = 1 # starts zainod + self.num_lightwalletds = 1 # starts lightwalletd + self.num_wallets = 0 + self.cache_behavior = 'clean' +``` + +After `setup_network()` runs, `self.lwds` holds a list of gRPC port numbers +(one per lightwalletd instance). `self.zainos` holds JSON-RPC proxy objects as +usual, but the Zainod gRPC port is obtained via `zaino_grpc_port(i)`. + +### Connecting gRPC clients + +```python +import grpc +from test_framework.proto import service_pb2, service_pb2_grpc +from test_framework.util import zaino_grpc_port + +zainod_ch = grpc.insecure_channel(f"127.0.0.1:{zaino_grpc_port(0)}") +lwd_ch = grpc.insecure_channel(f"127.0.0.1:{self.lwds[0]}") + +zs = service_pb2_grpc.CompactTxStreamerStub(zainod_ch) +ls = service_pb2_grpc.CompactTxStreamerStub(lwd_ch) +``` + +### Regenerating the proto stubs + +The proto files live in the `lightwallet-protocol/` git subtree +(`zcash/lightwallet-protocol`). To update to a new protocol version: + +```bash +# Pull the new version +git subtree pull --prefix=lightwallet-protocol \ + https://github.com/zcash/lightwallet-protocol.git --squash + +# Regenerate Python stubs (requires grpcio-tools: uv tool install grpcio-tools) +scripts/generate_proto.sh + +# Commit both the subtree update and the regenerated stubs +git add lightwallet-protocol/ qa/rpc-tests/test_framework/proto/ +git commit +``` ## P2P test design diff --git a/pyproject.toml b/pyproject.toml index fdc8e59cf..497743627 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,6 +4,8 @@ version = "0.1.0" requires-python = "==3.11.*" dependencies = [ "base58", + "grpcio", + "protobuf", "pyzmq", "toml", ] diff --git a/qa/rpc-tests/grpc_comparison.py b/qa/rpc-tests/grpc_comparison.py index 2edb46491..c76e36bd7 100755 --- a/qa/rpc-tests/grpc_comparison.py +++ b/qa/rpc-tests/grpc_comparison.py @@ -21,11 +21,17 @@ GetMempoolTx, GetMempoolStream """ +import time + import grpc from test_framework.test_framework import BitcoinTestFramework from test_framework.util import ( assert_equal, + assert_true, + p2p_port, + start_zcashd_node, + sync_blocks, zaino_grpc_port, lwd_grpc_port, ) @@ -67,6 +73,21 @@ def _normalize_compact_block(block): return normalized +def _normalize_shielded_compact_block(block): + """ + Normalize a CompactBlock that contains shielded transactions for full + comparison including vtx. + + For blocks whose coinbase is shielded (Sapling/Orchard), both Zainod and + Lightwalletd must include the compact shielded outputs in vtx. The only + implementation-specific field zeroed here is protoVersion. + """ + normalized = compact_formats_pb2.CompactBlock() + normalized.CopyFrom(block) + normalized.protoVersion = 0 + return normalized + + class GrpcComparisonTest(BitcoinTestFramework): def __init__(self): @@ -80,28 +101,86 @@ def __init__(self): # Populated in setup_network; used by test methods self.taddr = None self.txid = None + self.sapling_addr = None + self.shielded_coinbase_txid = None + self.shielded_block_height = None + self.orchard_addr = None + self.orchard_coinbase_txid = None + self.orchard_block_height = None def setup_network(self, split=False): self.wallets = [] # no wallets used; required for teardown - self.nodes = self.setup_nodes() - node = self.nodes[0] - # Mine 30 blocks so coinbase is mature and we have a chain for range queries. - node.generate(30) + # Start Zebrad (passive peer — does not mine). + self.nodes = self.setup_nodes() + zebrad = self.nodes[0] - # The default zebrad config mines coinbase to this regtest t-address. - # All mined coinbase UTXOs are at this address, giving us real t-addr - # data for GetTaddressTxids / GetTaddressBalance / GetAddressUtxos. - self.taddr = "tmSRd1r8gs77Ja67Fw1JcdoXytxsyrLTPJm" + # Start zcashd peered with zebrad. zcashd carries the built-in wallet + # needed to generate addresses and mine shielded coinbase blocks. + zcashd = start_zcashd_node(0, self.options.tmpdir, p2p_port(0)) + self.zcashd_nodes = [zcashd] - # Use the coinbase txid from block 1 for GetTransaction tests. - self.txid = node.getblock("1")['tx'][0] + # Wait for the zcashd → zebrad P2P connection to be established before + # mining so that every block propagates immediately. + zebrad_p2p = "127.0.0.1:%d" % p2p_port(0) + deadline = time.time() + 30 + while time.time() < deadline: + if any(p['addr'] == zebrad_p2p for p in zcashd.getpeerinfo()): + break + time.sleep(0.5) + else: + raise Exception("zcashd did not connect to zebrad within 30s") + + # Phase 1 — transparent coinbase (blocks 1-12). + # Provides real t-addr data for GetTaddressTxids / GetTaddressBalance / + # GetAddressUtxos tests. + self.taddr = zcashd.getnewaddress() + zcashd.setmineraddress(self.taddr) + zcashd.generate(12) + self.txid = zcashd.getblock("1")['tx'][0] + + # Generate a single unified address and extract its individual receivers + # via z_listunifiedreceivers so we can mine explicitly to each pool. + ua = zcashd.z_getnewaddress('unified') + receivers = zcashd.z_listunifiedreceivers(ua) + + # Phase 2 — shielded coinbase to Sapling via ZIP 213 (blocks 13-24). + # Heartwood is active from block 1, so a Sapling address is valid for mining. + self.sapling_addr = receivers['sapling'] + zcashd.setmineraddress(self.sapling_addr) + shielded_start = zcashd.getblockcount() + 1 # = 13 + zcashd.generate(12) + self.shielded_block_height = shielded_start + self.shielded_coinbase_txid = zcashd.getblock(str(shielded_start))['tx'][0] + + # Phase 3 — shielded coinbase to Orchard via ZIP 213 + NU5 (blocks 25-36). + # NU5 is active from block 1, so the Orchard receiver of the UA is valid + # for mining. This populates the Orchard commitment tree, allowing + # GetTreeState to return a non-empty orchardTree. + self.orchard_addr = receivers['orchard'] + zcashd.setmineraddress(self.orchard_addr) + orchard_start = zcashd.getblockcount() + 1 # = 25 + zcashd.generate(12) + self.orchard_block_height = orchard_start + self.orchard_coinbase_txid = zcashd.getblock(str(orchard_start))['tx'][0] + + # Pad the chain to at least 100 blocks. Zainod requires a minimum of + # 100 blocks to start (see test_framework.py:prepare_chain). + # The three mining phases above produce 36 blocks; mine the remainder + # as transparent coinbase so the shielded block heights stay stable. + current_height = zcashd.getblockcount() + if current_height < 100: + zcashd.setmineraddress(self.taddr) + zcashd.generate(100 - current_height) + + # Sync zebrad to zcashd's chain tip before starting the indexers. + sync_blocks([zebrad, zcashd], timeout=120) self.zainos = self.setup_indexers() self.lwds = self.setup_lightwalletds() # Wait for both indexers to sync to the chain tip before running tests. - tip = node.getblockcount() + tip = zebrad.getblockcount() self._wait_for_indexers(tip) def _wait_for_indexers(self, expected_height, timeout=60): @@ -110,24 +189,28 @@ def _wait_for_indexers(self, expected_height, timeout=60): zainod_ch = grpc.insecure_channel(f"127.0.0.1:{zaino_grpc_port(0)}") lwd_ch = grpc.insecure_channel(f"127.0.0.1:{self.lwds[0]}") - zs = service_pb2_grpc.CompactTxStreamerStub(zainod_ch) - ls = service_pb2_grpc.CompactTxStreamerStub(lwd_ch) - - deadline = time.time() + timeout - while time.time() < deadline: - try: - z_info = zs.GetLightdInfo(service_pb2.Empty(), timeout=5) - l_info = ls.GetLightdInfo(service_pb2.Empty(), timeout=5) - if (z_info.blockHeight >= expected_height and - l_info.blockHeight >= expected_height): - return - except grpc.RpcError: - pass - time.sleep(1) - - raise Exception( - f"Indexers did not sync to height {expected_height} within {timeout}s" - ) + try: + zs = service_pb2_grpc.CompactTxStreamerStub(zainod_ch) + ls = service_pb2_grpc.CompactTxStreamerStub(lwd_ch) + + deadline = time.time() + timeout + while time.time() < deadline: + try: + z_info = zs.GetLightdInfo(service_pb2.Empty(), timeout=5) + l_info = ls.GetLightdInfo(service_pb2.Empty(), timeout=5) + if (z_info.blockHeight >= expected_height and + l_info.blockHeight >= expected_height): + return + except grpc.RpcError: + pass + time.sleep(1) + + raise Exception( + f"Indexers did not sync to height {expected_height} within {timeout}s" + ) + finally: + zainod_ch.close() + lwd_ch.close() def run_test(self): zainod_ch = grpc.insecure_channel(f"127.0.0.1:{zaino_grpc_port(0)}") @@ -204,6 +287,31 @@ def run_test(self): print("Testing GetAddressUtxosStream...") self.test_get_address_utxos_stream(zs, ls) + # Shielded coinbase tests — blocks mined to a Sapling address via ZIP 213. + print("Testing GetBlock (shielded coinbase)...") + self.test_get_block_shielded(zs, ls) + + print("Testing GetBlockNullifiers (shielded coinbase)...") + self.test_get_block_nullifiers_shielded(zs, ls) + + print("Testing GetBlockRange (shielded)...") + self.test_get_block_range_shielded(zs, ls) + + print("Testing GetTransaction (shielded coinbase)...") + self.test_get_transaction_shielded(zs, ls) + + print("Testing GetTreeState (after Sapling coinbase)...") + self.test_get_tree_state_sapling(zs, ls) + + print("Testing GetBlock (Orchard coinbase)...") + self.test_get_block_orchard(zs, ls) + + print("Testing GetTransaction (Orchard coinbase)...") + self.test_get_transaction_orchard(zs, ls) + + print("Testing GetTreeState (after Orchard coinbase)...") + self.test_get_tree_state_orchard(zs, ls) + # TODO: GetMempoolTx and GetMempoolStream require submitting a transaction # to the mempool. This needs a wallet (zallet) to sign and send a raw tx. # Add these when num_wallets=1 is wired up with a t-address workflow. @@ -359,6 +467,7 @@ def test_get_taddress_txids_lower(self, zs, ls): assert_equal(len(z_txs), len(l_txs)) for z_tx, l_tx in zip(z_txs, l_txs): assert_equal(z_tx.data, l_tx.data) + assert_equal(z_tx.height, l_tx.height) def test_get_taddress_txids_upper(self, zs, ls): req = service_pb2.TransparentAddressBlockFilter( @@ -371,6 +480,9 @@ def test_get_taddress_txids_upper(self, zs, ls): z_txs = _collect_stream(zs.GetTaddressTxids(req)) l_txs = _collect_stream(ls.GetTaddressTxids(req)) assert_equal(len(z_txs), len(l_txs)) + for z_tx, l_tx in zip(z_txs, l_txs): + assert_equal(z_tx.data, l_tx.data) + assert_equal(z_tx.height, l_tx.height) def test_get_taddress_balance(self, zs, ls): req = service_pb2.AddressList(addresses=[self.taddr]) @@ -484,7 +596,103 @@ def test_get_address_utxos_stream(self, zs, ls): assert_equal(z_u.address, l_u.address) assert_equal(z_u.txid, l_u.txid) assert_equal(z_u.index, l_u.index) + assert_equal(z_u.script, l_u.script) assert_equal(z_u.valueZat, l_u.valueZat) + assert_equal(z_u.height, l_u.height) + + # ------------------------------------------------------------------------- + # Shielded coinbase tests + # + # These blocks were mined by zcashd with a Sapling miner address (ZIP 213, + # active via Heartwood from block 1). The coinbase output is a Sapling note, + # so the compact block's vtx must be non-empty and identical across both + # implementations — unlike transparent-only blocks where Zainod omits vtx. + # ------------------------------------------------------------------------- + + def test_get_block_shielded(self, zs, ls): + """A shielded-coinbase block must have matching, non-empty vtx.""" + req = service_pb2.BlockID(height=self.shielded_block_height, hash=b"") + z = _normalize_shielded_compact_block(zs.GetBlock(req)) + l = _normalize_shielded_compact_block(ls.GetBlock(req)) + assert_true(len(z.vtx) > 0, "Zainod returned empty vtx for shielded coinbase block") + assert_true(len(l.vtx) > 0, "Lightwalletd returned empty vtx for shielded coinbase block") + assert_equal(z, l) + + def test_get_block_nullifiers_shielded(self, zs, ls): + req = service_pb2.BlockID(height=self.shielded_block_height, hash=b"") + z = _normalize_shielded_compact_block(zs.GetBlockNullifiers(req)) + l = _normalize_shielded_compact_block(ls.GetBlockNullifiers(req)) + assert_equal(z, l) + + def test_get_block_range_shielded(self, zs, ls): + """All blocks in the shielded range must have matching, non-empty vtx.""" + end = self.shielded_block_height + 5 + req = service_pb2.BlockRange( + start=service_pb2.BlockID(height=self.shielded_block_height, hash=b""), + end=service_pb2.BlockID(height=end, hash=b""), + ) + z_blocks = [_normalize_shielded_compact_block(b) for b in _collect_stream(zs.GetBlockRange(req))] + l_blocks = [_normalize_shielded_compact_block(b) for b in _collect_stream(ls.GetBlockRange(req))] + assert_equal(len(z_blocks), len(l_blocks)) + for z_b, l_b in zip(z_blocks, l_blocks): + assert_true(len(z_b.vtx) > 0, "Zainod returned empty vtx for shielded block at height %d" % z_b.height) + assert_true(len(l_b.vtx) > 0, "Lightwalletd returned empty vtx for shielded block at height %d" % l_b.height) + assert_equal(z_b, l_b) + + def test_get_transaction_shielded(self, zs, ls): + """Shielded coinbase transaction bytes and height must match.""" + txid_bytes = bytes.fromhex(self.shielded_coinbase_txid)[::-1] + req = service_pb2.TxFilter(hash=txid_bytes) + z = zs.GetTransaction(req) + l = ls.GetTransaction(req) + assert_equal(z.data, l.data) + assert_equal(z.height, l.height) + assert_equal(z.height, self.shielded_block_height) + + def test_get_tree_state_sapling(self, zs, ls): + """After Sapling coinbase the Sapling tree must be non-empty and identical.""" + req = service_pb2.BlockID(height=self.shielded_block_height, hash=b"") + z = zs.GetTreeState(req) + l = ls.GetTreeState(req) + assert_equal(z.network, l.network) + assert_equal(z.height, l.height) + assert_equal(z.hash, l.hash) + assert_equal(z.saplingTree, l.saplingTree) + assert_equal(z.orchardTree, l.orchardTree) + assert_true(len(z.saplingTree) > 0, "Sapling tree is empty after Sapling coinbase") + + def test_get_block_orchard(self, zs, ls): + """An Orchard-coinbase block must have matching, non-empty vtx.""" + req = service_pb2.BlockID(height=self.orchard_block_height, hash=b"") + z = _normalize_shielded_compact_block(zs.GetBlock(req)) + l = _normalize_shielded_compact_block(ls.GetBlock(req)) + assert_true(len(z.vtx) > 0, "Zainod returned empty vtx for Orchard coinbase block") + assert_true(len(l.vtx) > 0, "Lightwalletd returned empty vtx for Orchard coinbase block") + assert_equal(z, l) + + def test_get_transaction_orchard(self, zs, ls): + """Orchard coinbase transaction bytes and height must match.""" + txid_bytes = bytes.fromhex(self.orchard_coinbase_txid)[::-1] + req = service_pb2.TxFilter(hash=txid_bytes) + z = zs.GetTransaction(req) + l = ls.GetTransaction(req) + assert_equal(z.data, l.data) + assert_equal(z.height, l.height) + assert_equal(z.height, self.orchard_block_height) + + def test_get_tree_state_orchard(self, zs, ls): + """After Orchard coinbase both the Sapling and Orchard trees must be non-empty.""" + req = service_pb2.BlockID(height=self.orchard_block_height, hash=b"") + z = zs.GetTreeState(req) + l = ls.GetTreeState(req) + assert_equal(z.network, l.network) + assert_equal(z.height, l.height) + assert_equal(z.hash, l.hash) + assert_equal(z.saplingTree, l.saplingTree) + assert_equal(z.orchardTree, l.orchardTree) + assert_true(len(z.saplingTree) > 0, "Sapling tree is empty at Orchard coinbase block") + assert_true(len(z.orchardTree) > 0, "Orchard tree is empty after Orchard coinbase") + if __name__ == '__main__': GrpcComparisonTest().main() diff --git a/qa/rpc-tests/test_framework/proto/service_pb2.pyi b/qa/rpc-tests/test_framework/proto/service_pb2.pyi index 9fba9522b..3eabec0c2 100644 --- a/qa/rpc-tests/test_framework/proto/service_pb2.pyi +++ b/qa/rpc-tests/test_framework/proto/service_pb2.pyi @@ -1,4 +1,4 @@ -import compact_formats_pb2 as _compact_formats_pb2 +from . import compact_formats_pb2 as _compact_formats_pb2 from google.protobuf.internal import containers as _containers from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper from google.protobuf import descriptor as _descriptor diff --git a/qa/rpc-tests/test_framework/test_framework.py b/qa/rpc-tests/test_framework/test_framework.py index 17a90c68a..ea36aa8ef 100755 --- a/qa/rpc-tests/test_framework/test_framework.py +++ b/qa/rpc-tests/test_framework/test_framework.py @@ -32,10 +32,12 @@ stop_wallets, stop_zainos, stop_lightwalletds, + stop_zcashd_nodes, wait_bitcoinds, wait_zainods, wait_zallets, wait_lightwalletds, + wait_zcashd_nodes, enable_coverage, check_json_precision, PortSeed, @@ -49,11 +51,13 @@ def __init__(self): self.num_indexers = 0 self.num_lightwalletds = 0 self.num_wallets = 4 + self.num_zcashd_nodes = 0 self.cache_behavior = 'current' self.nodes = None self.zainos = None self.lwds = None self.wallets = None + self.zcashd_nodes = None self.miner_addresses = None def run_test(self): @@ -236,14 +240,18 @@ def main(self): wait_lightwalletds() print("Stopping indexers") - stop_zainos(self.zainos) + stop_zainos(self.zainos or []) wait_zainods() + print("Stopping zcashd nodes") + stop_zcashd_nodes(self.zcashd_nodes or []) + wait_zcashd_nodes() + print("Stopping nodes") stop_nodes(self.nodes) wait_bitcoinds() else: - print("Note: zebrads, zainods, lightwalletds, and zallets were not stopped and may still be running") + print("Note: zebrads, zainods, lightwalletds, zallets, and zcashd nodes were not stopped and may still be running") if not self.options.nocleanup and not self.options.noshutdown: print("Cleaning up") diff --git a/qa/rpc-tests/test_framework/util.py b/qa/rpc-tests/test_framework/util.py index 296076bb6..97930b00c 100644 --- a/qa/rpc-tests/test_framework/util.py +++ b/qa/rpc-tests/test_framework/util.py @@ -1292,3 +1292,114 @@ def wait_lightwalletds(): except Exception: pass lwd_processes.clear() + + +# zcashd utilities +# Used for tests that need a full node with wallet to generate shielded transactions. + +zcashd_node_processes = {} + +ZCASHD_RPC_USER = "zcashrpc" +ZCASHD_RPC_PASSWORD = "zcashrpc" + + +def zcashd_node_binary(): + return os.getenv("ZCASHD", os.path.join("src", "zcashd")) + + +def zcashd_p2p_port(n): + assert n <= MAX_NODES + return PORT_MIN + (PORT_RANGE * 7) + n + (MAX_NODES * PortSeed.n) % (PORT_RANGE - 1 - MAX_NODES) + + +def zcashd_rpc_port(n): + return PORT_MIN + (PORT_RANGE * 8) + n + (MAX_NODES * PortSeed.n) % (PORT_RANGE - 1 - MAX_NODES) + + +def zcashd_rpc_url(i): + return "http://%s:%s@127.0.0.1:%d" % (ZCASHD_RPC_USER, ZCASHD_RPC_PASSWORD, zcashd_rpc_port(i)) + + +def write_zcash_conf(datadir, node_rpc_port, node_p2p_port, peer_p2p_port): + """Write a zcash.conf for a regtest zcashd node peered with zebrad. + + All network upgrades are activated from block 1 to match zebrad's built-in + Regtest network defaults. Heartwood (ZIP 213) enables shielded coinbase. + coinbasematurity=10 allows spending coinbase after 10 confirmations. + """ + os.makedirs(datadir, exist_ok=True) + conf_path = os.path.join(datadir, "zcash.conf") + with open(conf_path, "w", encoding="utf8") as f: + f.write("regtest=1\n") + f.write("port=%d\n" % node_p2p_port) + f.write("rpcbind=127.0.0.1\n") + f.write("rpcport=%d\n" % node_rpc_port) + f.write("rpcuser=%s\n" % ZCASHD_RPC_USER) + f.write("rpcpassword=%s\n" % ZCASHD_RPC_PASSWORD) + # Activate all upgrades from block 1 to match zebrad Regtest defaults. + f.write("nuparams=5ba81b19:1\n") # Overwinter + f.write("nuparams=76b809bb:1\n") # Sapling + f.write("nuparams=2bb40e60:1\n") # Blossom + f.write("nuparams=f5b9230b:1\n") # Heartwood (ZIP 213: shielded coinbase) + f.write("nuparams=e9ff75a6:1\n") # Canopy + f.write("nuparams=c2d6d0b4:1\n") # NU5 (Orchard) + f.write("nuparams=c8e71055:1\n") # NU6 + f.write("addnode=127.0.0.1:%d\n" % peer_p2p_port) + f.write("i-am-aware-zcashd-will-be-replaced-by-zebrad-and-zallet-in-2025=1\n") + return conf_path + + +def start_zcashd_node(i, dirname, peer_p2p_port, binary=None, stderr=None): + """Start a regtest zcashd node peered with zebrad and return an RPC proxy.""" + if binary is None: + binary = zcashd_node_binary() + datadir = os.path.join(dirname, "zcashd" + str(i)) + conf = write_zcash_conf( + datadir, + zcashd_rpc_port(i), + zcashd_p2p_port(i), + peer_p2p_port, + ) + args = [binary, "-conf=" + conf, "-datadir=" + datadir] + zcashd_node_processes[i] = subprocess.Popen(args, stderr=stderr) + url = zcashd_rpc_url(i) + wait_for_zcashd_start(zcashd_node_processes[i], url, i) + if os.getenv("PYTHON_DEBUG", ""): + print("start_zcashd_node: zcashd %d ready, pid %d" % (i, zcashd_node_processes[i].pid)) + return get_rpc_auth_proxy(url, i) + + +def wait_for_zcashd_start(process, url, i): + """Poll zcashd RPC until ready or until the process exits.""" + while True: + if process.poll() is not None: + raise Exception( + "zcashd node %d exited with status %d during initialization" + % (i, process.returncode) + ) + try: + rpc = get_rpc_auth_proxy(url, i) + rpc.getblockcount() + break + except IOError as e: + if e.errno != errno.ECONNREFUSED: + raise + except JSONRPCException as e: + if e.error['code'] != -28: + raise + time.sleep(0.25) + + +def stop_zcashd_nodes(nodes): + for node in nodes: + try: + node.stop() + except http.client.CannotSendRequest as e: + print("WARN: Unable to stop zcashd node: " + repr(e)) + del nodes[:] + + +def wait_zcashd_nodes(): + for proc in list(zcashd_node_processes.values()): + proc.wait() + zcashd_node_processes.clear() diff --git a/scripts/generate_proto.sh b/scripts/generate_proto.sh index bc4635cd3..8e627885d 100755 --- a/scripts/generate_proto.sh +++ b/scripts/generate_proto.sh @@ -29,11 +29,14 @@ python-grpc-tools-protoc \ "$PROTO_SRC/service.proto" # grpcio-tools generates flat imports that break when loaded as a package. -# Fix them to use relative imports. -sed -i 's/^import compact_formats_pb2 as/from . import compact_formats_pb2 as/' \ +# Fix them to use relative imports in all generated Python artifacts. +for generated_file in \ "$PROTO_OUT/service_pb2.py" \ + "$PROTO_OUT/service_pb2.pyi" \ "$PROTO_OUT/service_pb2_grpc.py" -sed -i 's/^import service_pb2 as/from . import service_pb2 as/' \ - "$PROTO_OUT/service_pb2_grpc.py" +do + sed -i 's/^import compact_formats_pb2 as/from . import compact_formats_pb2 as/' "$generated_file" + sed -i 's/^import service_pb2 as/from . import service_pb2 as/' "$generated_file" +done echo "Stubs written to $PROTO_OUT" diff --git a/uv.lock b/uv.lock index 3ebbc8b60..11f58cac0 100644 --- a/uv.lock +++ b/uv.lock @@ -35,6 +35,42 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/95/5c/1b493356429f9aecfd56bc171285a4c4ac8697f76e9bbbbb105e537853a1/cffi-2.0.0-cp311-cp311-win_arm64.whl", hash = "sha256:c6638687455baf640e37344fe26d37c404db8b80d037c3d29f58fe8d1c3b194d", size = 177635, upload-time = "2025-09-08T23:22:43.623Z" }, ] +[[package]] +name = "grpcio" +version = "1.80.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b7/48/af6173dbca4454f4637a4678b67f52ca7e0c1ed7d5894d89d434fecede05/grpcio-1.80.0.tar.gz", hash = "sha256:29aca15edd0688c22ba01d7cc01cb000d72b2033f4a3c72a81a19b56fd143257", size = 12978905, upload-time = "2026-03-30T08:49:10.502Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5d/db/1d56e5f5823257b291962d6c0ce106146c6447f405b60b234c4f222a7cde/grpcio-1.80.0-cp311-cp311-linux_armv7l.whl", hash = "sha256:dfab85db094068ff42e2a3563f60ab3dddcc9d6488a35abf0132daec13209c8a", size = 6055009, upload-time = "2026-03-30T08:46:46.265Z" }, + { url = "https://files.pythonhosted.org/packages/6e/18/c83f3cad64c5ca63bca7e91e5e46b0d026afc5af9d0a9972472ceba294b3/grpcio-1.80.0-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:5c07e82e822e1161354e32da2662f741a4944ea955f9f580ec8fb409dd6f6060", size = 12035295, upload-time = "2026-03-30T08:46:49.099Z" }, + { url = "https://files.pythonhosted.org/packages/0f/8e/e14966b435be2dda99fbe89db9525ea436edc79780431a1c2875a3582644/grpcio-1.80.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ba0915d51fd4ced2db5ff719f84e270afe0e2d4c45a7bdb1e8d036e4502928c2", size = 6610297, upload-time = "2026-03-30T08:46:52.123Z" }, + { url = "https://files.pythonhosted.org/packages/cc/26/d5eb38f42ce0e3fdc8174ea4d52036ef8d58cc4426cb800f2610f625dd75/grpcio-1.80.0-cp311-cp311-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:3cb8130ba457d2aa09fa6b7c3ed6b6e4e6a2685fce63cb803d479576c4d80e21", size = 7300208, upload-time = "2026-03-30T08:46:54.859Z" }, + { url = "https://files.pythonhosted.org/packages/25/51/bd267c989f85a17a5b3eea65a6feb4ff672af41ca614e5a0279cc0ea381c/grpcio-1.80.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:09e5e478b3d14afd23f12e49e8b44c8684ac3c5f08561c43a5b9691c54d136ab", size = 6813442, upload-time = "2026-03-30T08:46:57.056Z" }, + { url = "https://files.pythonhosted.org/packages/9e/d9/d80eef735b19e9169e30164bbf889b46f9df9127598a83d174eb13a48b26/grpcio-1.80.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:00168469238b022500e486c1c33916acf2f2a9b2c022202cf8a1885d2e3073c1", size = 7414743, upload-time = "2026-03-30T08:46:59.682Z" }, + { url = "https://files.pythonhosted.org/packages/de/f2/567f5bd5054398ed6b0509b9a30900376dcf2786bd936812098808b49d8d/grpcio-1.80.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:8502122a3cc1714038e39a0b071acb1207ca7844208d5ea0d091317555ee7106", size = 8426046, upload-time = "2026-03-30T08:47:02.474Z" }, + { url = "https://files.pythonhosted.org/packages/62/29/73ef0141b4732ff5eacd68430ff2512a65c004696997f70476a83e548e7e/grpcio-1.80.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ce1794f4ea6cc3ca29463f42d665c32ba1b964b48958a66497917fe9069f26e6", size = 7851641, upload-time = "2026-03-30T08:47:05.462Z" }, + { url = "https://files.pythonhosted.org/packages/46/69/abbfa360eb229a8623bab5f5a4f8105e445bd38ce81a89514ba55d281ad0/grpcio-1.80.0-cp311-cp311-win32.whl", hash = "sha256:51b4a7189b0bef2aa30adce3c78f09c83526cf3dddb24c6a96555e3b97340440", size = 4154368, upload-time = "2026-03-30T08:47:08.027Z" }, + { url = "https://files.pythonhosted.org/packages/6f/d4/ae92206d01183b08613e846076115f5ac5991bae358d2a749fa864da5699/grpcio-1.80.0-cp311-cp311-win_amd64.whl", hash = "sha256:02e64bb0bb2da14d947a49e6f120a75e947250aebe65f9629b62bb1f5c14e6e9", size = 4894235, upload-time = "2026-03-30T08:47:10.839Z" }, +] + +[[package]] +name = "protobuf" +version = "7.34.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6b/6b/a0e95cad1ad7cc3f2c6821fcab91671bd5b78bd42afb357bb4765f29bc41/protobuf-7.34.1.tar.gz", hash = "sha256:9ce42245e704cc5027be797c1db1eb93184d44d1cdd71811fb2d9b25ad541280", size = 454708, upload-time = "2026-03-20T17:34:47.036Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ec/11/3325d41e6ee15bf1125654301211247b042563bcc898784351252549a8ad/protobuf-7.34.1-cp310-abi3-macosx_10_9_universal2.whl", hash = "sha256:d8b2cc79c4d8f62b293ad9b11ec3aebce9af481fa73e64556969f7345ebf9fc7", size = 429247, upload-time = "2026-03-20T17:34:37.024Z" }, + { url = "https://files.pythonhosted.org/packages/eb/9d/aa69df2724ff63efa6f72307b483ce0827f4347cc6d6df24b59e26659fef/protobuf-7.34.1-cp310-abi3-manylinux2014_aarch64.whl", hash = "sha256:5185e0e948d07abe94bb76ec9b8416b604cfe5da6f871d67aad30cbf24c3110b", size = 325753, upload-time = "2026-03-20T17:34:38.751Z" }, + { url = "https://files.pythonhosted.org/packages/92/e8/d174c91fd48e50101943f042b09af9029064810b734e4160bbe282fa1caa/protobuf-7.34.1-cp310-abi3-manylinux2014_s390x.whl", hash = "sha256:403b093a6e28a960372b44e5eb081775c9b056e816a8029c61231743d63f881a", size = 340198, upload-time = "2026-03-20T17:34:39.871Z" }, + { url = "https://files.pythonhosted.org/packages/53/1b/3b431694a4dc6d37b9f653f0c64b0a0d9ec074ee810710c0c3da21d67ba7/protobuf-7.34.1-cp310-abi3-manylinux2014_x86_64.whl", hash = "sha256:8ff40ce8cd688f7265326b38d5a1bed9bfdf5e6723d49961432f83e21d5713e4", size = 324267, upload-time = "2026-03-20T17:34:41.1Z" }, + { url = "https://files.pythonhosted.org/packages/85/29/64de04a0ac142fb685fd09999bc3d337943fb386f3a0ec57f92fd8203f97/protobuf-7.34.1-cp310-abi3-win32.whl", hash = "sha256:34b84ce27680df7cca9f231043ada0daa55d0c44a2ddfaa58ec1d0d89d8bf60a", size = 426628, upload-time = "2026-03-20T17:34:42.536Z" }, + { url = "https://files.pythonhosted.org/packages/4d/87/cb5e585192a22b8bd457df5a2c16a75ea0db9674c3a0a39fc9347d84e075/protobuf-7.34.1-cp310-abi3-win_amd64.whl", hash = "sha256:e97b55646e6ce5cbb0954a8c28cd39a5869b59090dfaa7df4598a7fba869468c", size = 437901, upload-time = "2026-03-20T17:34:44.112Z" }, + { url = "https://files.pythonhosted.org/packages/88/95/608f665226bca68b736b79e457fded9a2a38c4f4379a4a7614303d9db3bc/protobuf-7.34.1-py3-none-any.whl", hash = "sha256:bb3812cd53aefea2b028ef42bd780f5b96407247f20c6ef7c679807e9d188f11", size = 170715, upload-time = "2026-03-20T17:34:45.384Z" }, +] + [[package]] name = "pycparser" version = "3.0" @@ -89,12 +125,23 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/44/6f/7120676b6d73228c96e17f1f794d8ab046fc910d781c8d151120c3f1569e/toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b", size = 16588, upload-time = "2020-11-01T01:40:20.672Z" }, ] +[[package]] +name = "typing-extensions" +version = "4.15.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/72/94/1a15dd82efb362ac84269196e94cf00f187f7ed21c242792a923cdb1c61f/typing_extensions-4.15.0.tar.gz", hash = "sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466", size = 109391, upload-time = "2025-08-25T13:49:26.313Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl", hash = "sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548", size = 44614, upload-time = "2025-08-25T13:49:24.86Z" }, +] + [[package]] name = "zcash-integration-tests" version = "0.1.0" source = { virtual = "." } dependencies = [ { name = "base58" }, + { name = "grpcio" }, + { name = "protobuf" }, { name = "pyzmq" }, { name = "toml" }, ] @@ -102,6 +149,8 @@ dependencies = [ [package.metadata] requires-dist = [ { name = "base58" }, + { name = "grpcio" }, + { name = "protobuf" }, { name = "pyzmq" }, { name = "toml" }, ] From 91b3dca71dc6b5431a699ee45b089b633d4c2a74 Mon Sep 17 00:00:00 2001 From: Pacu Date: Tue, 14 Apr 2026 12:31:54 -0300 Subject: [PATCH 04/15] fix: rework grpc_comparison chain setup to use submitblock and mineraddress config MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit setmineraddress has been removed from this zcashd version, so the mining address must be set via zcash.conf; zcashd is restarted between phases. P2P block propagation is replaced by submitblock to sidestep known zcashd↔zebrad P2P issues (zebra#10329, #10332). Chain layout changes to match: Blocks 1–100 — Orchard coinbase (single zcashd restart with orchard_addr). Block 101 — z_sendmany confirmation: transparent + Sapling outputs in one tx. The Sapling tree is now correctly expected to be empty at Orchard-coinbase height and non-empty only after block 101. authproxy.py is fixed to accept both 'application/json' and 'application/json; charset=utf-8' so zcashd RPC calls no longer raise a content-type error. --- qa/rpc-tests/grpc_comparison.py | 250 ++++++++++++++--------- qa/rpc-tests/test_framework/authproxy.py | 4 +- qa/rpc-tests/test_framework/util.py | 45 +++- 3 files changed, 193 insertions(+), 106 deletions(-) diff --git a/qa/rpc-tests/grpc_comparison.py b/qa/rpc-tests/grpc_comparison.py index c76e36bd7..351073216 100755 --- a/qa/rpc-tests/grpc_comparison.py +++ b/qa/rpc-tests/grpc_comparison.py @@ -10,6 +10,12 @@ Mirrors the Rust test fixtures in client_rpc_test_fixtures, porting them to Python so they run inside the existing BitcoinTestFramework CI pipeline. +Chain setup (via zcashd + submitblock into Zebrad): + Blocks 1-100 — Orchard coinbase (mined to orchard_addr). Populates the Orchard + commitment tree and provides mature shielded funds for Phase 2. + Block 101 — Confirms a z_sendmany tx that has a transparent output (to taddr) + and a Sapling output (to sapling_addr), populating the Sapling tree. + Methods tested (CompactTxStreamer service): GetLightdInfo, GetLatestBlock, GetBlock, GetBlockNullifiers, GetBlockRange, GetBlockRangeNullifiers, @@ -22,18 +28,19 @@ """ import time +from decimal import Decimal import grpc +from test_framework.config import ZebraArgs from test_framework.test_framework import BitcoinTestFramework from test_framework.util import ( assert_equal, assert_true, - p2p_port, + start_nodes, start_zcashd_node, - sync_blocks, + stop_zcashd_node, zaino_grpc_port, - lwd_grpc_port, ) from test_framework.proto import ( compact_formats_pb2, @@ -50,6 +57,29 @@ def _collect_stream(streaming_call): return results +def _wait_for_operation(zcashd, opid, timeout=120): + """ + Poll z_getoperationresult until the given operation succeeds or fails. + + z_getoperationresult consumes the result on first return, so we stop + polling as soon as a result appears. Returns the result dict on success; + raises Exception on failure or timeout. + """ + deadline = time.time() + timeout + while time.time() < deadline: + results = zcashd.z_getoperationresult([opid]) + if results: + r = results[0] + if r['status'] == 'success': + return r + raise Exception( + "z_sendmany %s failed: %s" + % (opid, r.get('error', {}).get('message', str(r))) + ) + time.sleep(1) + raise Exception("z_sendmany operation %s timed out after %ds" % (opid, timeout)) + + def _normalize_compact_block(block): """ Normalize a CompactBlock for header-level comparison. @@ -100,93 +130,123 @@ def __init__(self): # Populated in setup_network; used by test methods self.taddr = None - self.txid = None + self.txid = None # txid of the z_sendmany tx (has both t and Sapling outputs) self.sapling_addr = None - self.shielded_coinbase_txid = None - self.shielded_block_height = None + self.sapling_txid = None # same tx, kept separate for clarity in shielded tests + self.sapling_tx_height = None self.orchard_addr = None self.orchard_coinbase_txid = None self.orchard_block_height = None + def setup_nodes(self): + # All network upgrades activate at block 1 to match the zcashd config + # (nuparams=:1 for each upgrade). This ensures zebrad + # accepts every block submitted via submitblock, including Sapling + # (ZIP 213 / Heartwood) and Orchard (NU5) coinbase blocks. + return start_nodes(self.num_nodes, self.options.tmpdir, + [ZebraArgs(activation_heights={ + "Overwinter": 1, + "Sapling": 1, + "Blossom": 1, + "Heartwood": 1, + "Canopy": 1, + "NU5": 1, + "NU6": 1, + })]) + + def _restart_zcashd(self, miner_address): + """Stop zcashd node 0, reconfigure with a new miner address, and restart.""" + stop_zcashd_node(0, self.zcashd_nodes[0]) + node = start_zcashd_node(0, self.options.tmpdir, miner_address=miner_address) + self.zcashd_nodes[0] = node + return node + def setup_network(self, split=False): self.wallets = [] # no wallets used; required for teardown - # Start Zebrad (passive peer — does not mine). + # Start Zebrad (passive — does not mine). self.nodes = self.setup_nodes() zebrad = self.nodes[0] - # Start zcashd peered with zebrad. zcashd carries the built-in wallet - # needed to generate addresses and mine shielded coinbase blocks. - zcashd = start_zcashd_node(0, self.options.tmpdir, p2p_port(0)) + # Phase 0 — start zcashd without a miner address to generate wallet + # addresses. setmineraddress has been removed from this zcashd version; + # the miner address must be set via zcash.conf and takes effect on restart. + zcashd = start_zcashd_node(0, self.options.tmpdir) self.zcashd_nodes = [zcashd] - # Wait for the zcashd → zebrad P2P connection to be established before - # mining so that every block propagates immediately. - zebrad_p2p = "127.0.0.1:%d" % p2p_port(0) - deadline = time.time() + 30 - while time.time() < deadline: - if any(p['addr'] == zebrad_p2p for p in zcashd.getpeerinfo()): - break - time.sleep(0.5) - else: - raise Exception("zcashd did not connect to zebrad within 30s") - - # Phase 1 — transparent coinbase (blocks 1-12). - # Provides real t-addr data for GetTaddressTxids / GetTaddressBalance / - # GetAddressUtxos tests. self.taddr = zcashd.getnewaddress() - zcashd.setmineraddress(self.taddr) - zcashd.generate(12) - self.txid = zcashd.getblock("1")['tx'][0] - # Generate a single unified address and extract its individual receivers - # via z_listunifiedreceivers so we can mine explicitly to each pool. - ua = zcashd.z_getnewaddress('unified') + # Generate a unified address with Sapling and Orchard receivers via the + # current account-based API. z_getnewaddress('unified') was removed; + # use z_getnewaccount + z_getaddressforaccount instead. + account = zcashd.z_getnewaccount()['account'] + ua = zcashd.z_getaddressforaccount(account, ['sapling', 'orchard'])['address'] receivers = zcashd.z_listunifiedreceivers(ua) - - # Phase 2 — shielded coinbase to Sapling via ZIP 213 (blocks 13-24). - # Heartwood is active from block 1, so a Sapling address is valid for mining. self.sapling_addr = receivers['sapling'] - zcashd.setmineraddress(self.sapling_addr) - shielded_start = zcashd.getblockcount() + 1 # = 13 - zcashd.generate(12) - self.shielded_block_height = shielded_start - self.shielded_coinbase_txid = zcashd.getblock(str(shielded_start))['tx'][0] - - # Phase 3 — shielded coinbase to Orchard via ZIP 213 + NU5 (blocks 25-36). - # NU5 is active from block 1, so the Orchard receiver of the UA is valid - # for mining. This populates the Orchard commitment tree, allowing - # GetTreeState to return a non-empty orchardTree. self.orchard_addr = receivers['orchard'] - zcashd.setmineraddress(self.orchard_addr) - orchard_start = zcashd.getblockcount() + 1 # = 25 - zcashd.generate(12) - self.orchard_block_height = orchard_start - self.orchard_coinbase_txid = zcashd.getblock(str(orchard_start))['tx'][0] - - # Pad the chain to at least 100 blocks. Zainod requires a minimum of - # 100 blocks to start (see test_framework.py:prepare_chain). - # The three mining phases above produce 36 blocks; mine the remainder - # as transparent coinbase so the shielded block heights stay stable. - current_height = zcashd.getblockcount() - if current_height < 100: - zcashd.setmineraddress(self.taddr) - zcashd.generate(100 - current_height) - - # Sync zebrad to zcashd's chain tip before starting the indexers. - sync_blocks([zebrad, zcashd], timeout=120) + + # Phase 1 — mine all blocks to the Orchard receiver (single restart). + # NU5 is active from block 1, so Orchard coinbase is valid throughout. + # All 100 blocks are Orchard coinbase, which populates the Orchard + # commitment tree and provides spendable shielded funds for Phase 2. + zcashd = self._restart_zcashd(self.orchard_addr) + zcashd.generate(100) + self.orchard_block_height = 1 + self.orchard_coinbase_txid = zcashd.getblock("1")['tx'][0] + + # Phase 2 — send from the Orchard account to both the transparent address + # and the Sapling address in a single z_sendmany transaction. + # + # After 100 Orchard coinbase blocks the block-1 coinbase has matured + # (coinbase maturity = 100), so the Orchard balance is fully spendable. + # "NoPrivacy" allows cross-pool spending (Orchard → Sapling) and + # transparent recipients (Orchard → t-addr) in one transaction. + opid = zcashd.z_sendmany( + ua, + [ + {"address": self.taddr, "amount": Decimal("1.0")}, + {"address": self.sapling_addr, "amount": Decimal("1.0")}, + ], + 1, + Decimal("0.0001"), + "NoPrivacy", + ) + op_result = _wait_for_operation(zcashd, opid) + send_txid = op_result['result']['txid'] + + # Mine 1 block to confirm both outputs (height 101). + zcashd.generate(1) + confirm_height = zcashd.getblockcount() # = 101 + + # self.txid is used by test_get_transaction and transparent address tests. + # self.sapling_txid is the same tx viewed from the Sapling-output angle. + self.txid = send_txid + self.sapling_txid = send_txid + self.sapling_tx_height = confirm_height + + # Push every zcashd-mined block into zebrad via submitblock. + # This sidesteps the known P2P propagation issues between zcashd and + # zebrad (ZcashFoundation/zebra#10329, #10332). + tip = zcashd.getblockcount() + for h in range(1, tip + 1): + raw_hex = zcashd.getblock(str(h), 0) + result = zebrad.submitblock(raw_hex) + if result is not None: + raise Exception("submitblock failed at height %d: %s" % (h, result)) + + assert zebrad.getblockcount() == tip, ( + "zebrad height %d != zcashd height %d after submitblock" + % (zebrad.getblockcount(), tip) + ) self.zainos = self.setup_indexers() self.lwds = self.setup_lightwalletds() # Wait for both indexers to sync to the chain tip before running tests. - tip = zebrad.getblockcount() self._wait_for_indexers(tip) def _wait_for_indexers(self, expected_height, timeout=60): """Block until both Zainod and Lightwalletd report the expected block height.""" - import time - zainod_ch = grpc.insecure_channel(f"127.0.0.1:{zaino_grpc_port(0)}") lwd_ch = grpc.insecure_channel(f"127.0.0.1:{self.lwds[0]}") try: @@ -287,20 +347,20 @@ def run_test(self): print("Testing GetAddressUtxosStream...") self.test_get_address_utxos_stream(zs, ls) - # Shielded coinbase tests — blocks mined to a Sapling address via ZIP 213. - print("Testing GetBlock (shielded coinbase)...") + # Shielded transaction tests — block 101 contains the z_sendmany tx. + print("Testing GetBlock (shielded)...") self.test_get_block_shielded(zs, ls) - print("Testing GetBlockNullifiers (shielded coinbase)...") + print("Testing GetBlockNullifiers (shielded)...") self.test_get_block_nullifiers_shielded(zs, ls) print("Testing GetBlockRange (shielded)...") self.test_get_block_range_shielded(zs, ls) - print("Testing GetTransaction (shielded coinbase)...") + print("Testing GetTransaction (shielded)...") self.test_get_transaction_shielded(zs, ls) - print("Testing GetTreeState (after Sapling coinbase)...") + print("Testing GetTreeState (after Sapling output)...") self.test_get_tree_state_sapling(zs, ls) print("Testing GetBlock (Orchard coinbase)...") @@ -313,8 +373,7 @@ def run_test(self): self.test_get_tree_state_orchard(zs, ls) # TODO: GetMempoolTx and GetMempoolStream require submitting a transaction - # to the mempool. This needs a wallet (zallet) to sign and send a raw tx. - # Add these when num_wallets=1 is wired up with a t-address workflow. + # to the mempool via the mempool RPC. zainod_ch.close() lwd_ch.close() @@ -601,34 +660,38 @@ def test_get_address_utxos_stream(self, zs, ls): assert_equal(z_u.height, l_u.height) # ------------------------------------------------------------------------- - # Shielded coinbase tests + # Shielded transaction tests # - # These blocks were mined by zcashd with a Sapling miner address (ZIP 213, - # active via Heartwood from block 1). The coinbase output is a Sapling note, - # so the compact block's vtx must be non-empty and identical across both - # implementations — unlike transparent-only blocks where Zainod omits vtx. + # Block 101 contains the z_sendmany confirmation transaction. That tx + # has both a Sapling output (to sapling_addr) and a transparent output + # (to taddr), so the compact block's vtx must be non-empty and identical + # across both implementations. # ------------------------------------------------------------------------- def test_get_block_shielded(self, zs, ls): - """A shielded-coinbase block must have matching, non-empty vtx.""" - req = service_pb2.BlockID(height=self.shielded_block_height, hash=b"") + """Block with a Sapling output must have matching, non-empty vtx.""" + req = service_pb2.BlockID(height=self.sapling_tx_height, hash=b"") z = _normalize_shielded_compact_block(zs.GetBlock(req)) l = _normalize_shielded_compact_block(ls.GetBlock(req)) - assert_true(len(z.vtx) > 0, "Zainod returned empty vtx for shielded coinbase block") - assert_true(len(l.vtx) > 0, "Lightwalletd returned empty vtx for shielded coinbase block") + assert_true(len(z.vtx) > 0, "Zainod returned empty vtx for shielded block") + assert_true(len(l.vtx) > 0, "Lightwalletd returned empty vtx for shielded block") assert_equal(z, l) def test_get_block_nullifiers_shielded(self, zs, ls): - req = service_pb2.BlockID(height=self.shielded_block_height, hash=b"") + req = service_pb2.BlockID(height=self.sapling_tx_height, hash=b"") z = _normalize_shielded_compact_block(zs.GetBlockNullifiers(req)) l = _normalize_shielded_compact_block(ls.GetBlockNullifiers(req)) assert_equal(z, l) def test_get_block_range_shielded(self, zs, ls): - """All blocks in the shielded range must have matching, non-empty vtx.""" - end = self.shielded_block_height + 5 + """All blocks in a shielded range must have matching, non-empty vtx. + Uses blocks sapling_tx_height-5 through sapling_tx_height (96-101) so + the range covers both Orchard-coinbase blocks and the Sapling-output block + without exceeding the chain tip.""" + start = self.sapling_tx_height - 5 # = 96 (Orchard coinbase) + end = self.sapling_tx_height # = 101 (Sapling output tx) req = service_pb2.BlockRange( - start=service_pb2.BlockID(height=self.shielded_block_height, hash=b""), + start=service_pb2.BlockID(height=start, hash=b""), end=service_pb2.BlockID(height=end, hash=b""), ) z_blocks = [_normalize_shielded_compact_block(b) for b in _collect_stream(zs.GetBlockRange(req))] @@ -640,18 +703,18 @@ def test_get_block_range_shielded(self, zs, ls): assert_equal(z_b, l_b) def test_get_transaction_shielded(self, zs, ls): - """Shielded coinbase transaction bytes and height must match.""" - txid_bytes = bytes.fromhex(self.shielded_coinbase_txid)[::-1] + """Shielded transaction bytes and height must match across both indexers.""" + txid_bytes = bytes.fromhex(self.sapling_txid)[::-1] req = service_pb2.TxFilter(hash=txid_bytes) z = zs.GetTransaction(req) l = ls.GetTransaction(req) assert_equal(z.data, l.data) assert_equal(z.height, l.height) - assert_equal(z.height, self.shielded_block_height) + assert_equal(z.height, self.sapling_tx_height) def test_get_tree_state_sapling(self, zs, ls): - """After Sapling coinbase the Sapling tree must be non-empty and identical.""" - req = service_pb2.BlockID(height=self.shielded_block_height, hash=b"") + """After a Sapling output tx the Sapling tree must be non-empty and identical.""" + req = service_pb2.BlockID(height=self.sapling_tx_height, hash=b"") z = zs.GetTreeState(req) l = ls.GetTreeState(req) assert_equal(z.network, l.network) @@ -659,10 +722,10 @@ def test_get_tree_state_sapling(self, zs, ls): assert_equal(z.hash, l.hash) assert_equal(z.saplingTree, l.saplingTree) assert_equal(z.orchardTree, l.orchardTree) - assert_true(len(z.saplingTree) > 0, "Sapling tree is empty after Sapling coinbase") + assert_true(len(z.saplingTree) > 0, "Sapling tree is empty after Sapling output tx") def test_get_block_orchard(self, zs, ls): - """An Orchard-coinbase block must have matching, non-empty vtx.""" + """Block with Orchard coinbase must have matching, non-empty vtx.""" req = service_pb2.BlockID(height=self.orchard_block_height, hash=b"") z = _normalize_shielded_compact_block(zs.GetBlock(req)) l = _normalize_shielded_compact_block(ls.GetBlock(req)) @@ -671,7 +734,7 @@ def test_get_block_orchard(self, zs, ls): assert_equal(z, l) def test_get_transaction_orchard(self, zs, ls): - """Orchard coinbase transaction bytes and height must match.""" + """Orchard coinbase transaction bytes and height must match across both indexers.""" txid_bytes = bytes.fromhex(self.orchard_coinbase_txid)[::-1] req = service_pb2.TxFilter(hash=txid_bytes) z = zs.GetTransaction(req) @@ -681,7 +744,9 @@ def test_get_transaction_orchard(self, zs, ls): assert_equal(z.height, self.orchard_block_height) def test_get_tree_state_orchard(self, zs, ls): - """After Orchard coinbase both the Sapling and Orchard trees must be non-empty.""" + """After the first Orchard coinbase the Orchard tree must be non-empty. + The Sapling tree is expected to be empty at this height because Sapling + outputs do not appear until block 101 (the z_sendmany confirmation).""" req = service_pb2.BlockID(height=self.orchard_block_height, hash=b"") z = zs.GetTreeState(req) l = ls.GetTreeState(req) @@ -690,7 +755,6 @@ def test_get_tree_state_orchard(self, zs, ls): assert_equal(z.hash, l.hash) assert_equal(z.saplingTree, l.saplingTree) assert_equal(z.orchardTree, l.orchardTree) - assert_true(len(z.saplingTree) > 0, "Sapling tree is empty at Orchard coinbase block") assert_true(len(z.orchardTree) > 0, "Orchard tree is empty after Orchard coinbase") diff --git a/qa/rpc-tests/test_framework/authproxy.py b/qa/rpc-tests/test_framework/authproxy.py index 10839d781..25598a465 100644 --- a/qa/rpc-tests/test_framework/authproxy.py +++ b/qa/rpc-tests/test_framework/authproxy.py @@ -153,8 +153,8 @@ def _get_response(self): 'code': -342, 'message': 'missing HTTP response from server'}) content_type = http_response.getheader('Content-Type') - # Zallet uses 'application/json; charset=utf-8'` while zcashd uses 'application/json' - if content_type != 'application/json; charset=utf-8': + # Zallet uses 'application/json; charset=utf-8'; zcashd uses 'application/json'. + if content_type not in ('application/json', 'application/json; charset=utf-8'): raise JSONRPCException({ 'code': -342, 'message': 'non-JSON HTTP response with \'%i %s\' from server' % (http_response.status, http_response.reason)}) diff --git a/qa/rpc-tests/test_framework/util.py b/qa/rpc-tests/test_framework/util.py index 97930b00c..d77d78c84 100644 --- a/qa/rpc-tests/test_framework/util.py +++ b/qa/rpc-tests/test_framework/util.py @@ -1297,6 +1297,10 @@ def wait_lightwalletds(): # zcashd utilities # Used for tests that need a full node with wallet to generate shielded transactions. +# AuthServiceProxy defines its own JSONRPCException; import it here so +# wait_for_zcashd_start can catch the warmup error (-28) raised by the proxy. +from .authproxy import JSONRPCException as _AuthJSONRPCException + zcashd_node_processes = {} ZCASHD_RPC_USER = "zcashrpc" @@ -1320,12 +1324,16 @@ def zcashd_rpc_url(i): return "http://%s:%s@127.0.0.1:%d" % (ZCASHD_RPC_USER, ZCASHD_RPC_PASSWORD, zcashd_rpc_port(i)) -def write_zcash_conf(datadir, node_rpc_port, node_p2p_port, peer_p2p_port): - """Write a zcash.conf for a regtest zcashd node peered with zebrad. +def write_zcash_conf(datadir, node_rpc_port, node_p2p_port, miner_address=None): + """Write a zcash.conf for a standalone regtest zcashd node. + + All network upgrades are activated from block 1. Heartwood (ZIP 213) + enables shielded coinbase; NU5 enables Orchard. No addnode is written + because blocks are pushed to zebrad via submitblock rather than P2P. - All network upgrades are activated from block 1 to match zebrad's built-in - Regtest network defaults. Heartwood (ZIP 213) enables shielded coinbase. - coinbasematurity=10 allows spending coinbase after 10 confirmations. + miner_address, if given, sets the coinbase recipient for `generate` calls. + setmineraddress has been removed from this zcashd version, so the address + must be set via the config file; restart zcashd between mining phases. """ os.makedirs(datadir, exist_ok=True) conf_path = os.path.join(datadir, "zcash.conf") @@ -1336,6 +1344,8 @@ def write_zcash_conf(datadir, node_rpc_port, node_p2p_port, peer_p2p_port): f.write("rpcport=%d\n" % node_rpc_port) f.write("rpcuser=%s\n" % ZCASHD_RPC_USER) f.write("rpcpassword=%s\n" % ZCASHD_RPC_PASSWORD) + if miner_address is not None: + f.write("mineraddress=%s\n" % miner_address) # Activate all upgrades from block 1 to match zebrad Regtest defaults. f.write("nuparams=5ba81b19:1\n") # Overwinter f.write("nuparams=76b809bb:1\n") # Sapling @@ -1344,13 +1354,15 @@ def write_zcash_conf(datadir, node_rpc_port, node_p2p_port, peer_p2p_port): f.write("nuparams=e9ff75a6:1\n") # Canopy f.write("nuparams=c2d6d0b4:1\n") # NU5 (Orchard) f.write("nuparams=c8e71055:1\n") # NU6 - f.write("addnode=127.0.0.1:%d\n" % peer_p2p_port) + # Re-enable the deprecated getnewaddress RPC used to obtain a t-address + # for transparent coinbase mining. + f.write("allowdeprecated=getnewaddress\n") f.write("i-am-aware-zcashd-will-be-replaced-by-zebrad-and-zallet-in-2025=1\n") return conf_path -def start_zcashd_node(i, dirname, peer_p2p_port, binary=None, stderr=None): - """Start a regtest zcashd node peered with zebrad and return an RPC proxy.""" +def start_zcashd_node(i, dirname, miner_address=None, binary=None, stderr=None): + """Start a standalone regtest zcashd node and return an RPC proxy.""" if binary is None: binary = zcashd_node_binary() datadir = os.path.join(dirname, "zcashd" + str(i)) @@ -1358,7 +1370,7 @@ def start_zcashd_node(i, dirname, peer_p2p_port, binary=None, stderr=None): datadir, zcashd_rpc_port(i), zcashd_p2p_port(i), - peer_p2p_port, + miner_address=miner_address, ) args = [binary, "-conf=" + conf, "-datadir=" + datadir] zcashd_node_processes[i] = subprocess.Popen(args, stderr=stderr) @@ -1369,6 +1381,17 @@ def start_zcashd_node(i, dirname, peer_p2p_port, binary=None, stderr=None): return get_rpc_auth_proxy(url, i) +def stop_zcashd_node(i, node): + """Stop zcashd node i via RPC and wait for the process to exit.""" + try: + node.stop() + except (_AuthJSONRPCException, http.client.CannotSendRequest): + pass + if i in zcashd_node_processes: + zcashd_node_processes[i].wait() + del zcashd_node_processes[i] + + def wait_for_zcashd_start(process, url, i): """Poll zcashd RPC until ready or until the process exits.""" while True: @@ -1384,7 +1407,7 @@ def wait_for_zcashd_start(process, url, i): except IOError as e: if e.errno != errno.ECONNREFUSED: raise - except JSONRPCException as e: + except _AuthJSONRPCException as e: if e.error['code'] != -28: raise time.sleep(0.25) @@ -1394,7 +1417,7 @@ def stop_zcashd_nodes(nodes): for node in nodes: try: node.stop() - except http.client.CannotSendRequest as e: + except (http.client.CannotSendRequest, _AuthJSONRPCException) as e: print("WARN: Unable to stop zcashd node: " + repr(e)) del nodes[:] From 034b52bf0e3de0e88a8661e5e583e30b0fb15686 Mon Sep 17 00:00:00 2001 From: Pacu Date: Thu, 23 Apr 2026 12:00:43 -0300 Subject: [PATCH 05/15] Add cached gRPC parity fixture for Zebra-backed comparison --- .../cache/grpc_comparison/chain_metadata.json | 29 + .../cache/grpc_comparison/zebrad_state.tar.gz | Bin 0 -> 144942 bytes .../chain_metadata.json | 29 + .../zcashd0_state.tar.gz | Bin 0 -> 213815 bytes .../zcashd1_state.tar.gz | Bin 0 -> 179777 bytes qa/rpc-tests/grpc_comparison.py | 981 ++++++++++++++---- qa/rpc-tests/test_framework/config.py | 12 + qa/rpc-tests/test_framework/util.py | 72 +- 8 files changed, 881 insertions(+), 242 deletions(-) create mode 100644 qa/rpc-tests/cache/grpc_comparison/chain_metadata.json create mode 100644 qa/rpc-tests/cache/grpc_comparison/zebrad_state.tar.gz create mode 100644 qa/rpc-tests/cache/grpc_comparison_stage1/chain_metadata.json create mode 100644 qa/rpc-tests/cache/grpc_comparison_stage1/zcashd0_state.tar.gz create mode 100644 qa/rpc-tests/cache/grpc_comparison_stage1/zcashd1_state.tar.gz diff --git a/qa/rpc-tests/cache/grpc_comparison/chain_metadata.json b/qa/rpc-tests/cache/grpc_comparison/chain_metadata.json new file mode 100644 index 000000000..0c4f28018 --- /dev/null +++ b/qa/rpc-tests/cache/grpc_comparison/chain_metadata.json @@ -0,0 +1,29 @@ +{ + "taddr": "tmUtDKtdCpW9JK6qCnF7V3HGT17tNMw5N44", + "sapling_ua0": "zregtestsapling1cxqx6jlngx0a6lakm5qjz7pxr9wkf0uq532cfvtny0dw2ts3zdq2zglme0kjkf9u62truflckke", + "sapling_ua_aux": "zregtestsapling1v8g56j8emgfhtwuwgffa6sarj4rp9gkg4q4g7hk5t8t7r8mqpekrhphttm7k2tgvfp3tq8g9crj", + "orchard_ua1": "uregtest16s9p2wgz5fx3d0a9cn5lrervtp4ax6xsey0umynqhnpuphhml9827727gyy6yrwcqvm389l4hw5m34ph83c8ya58jzm3frleasq738sn", + "orchard_ua_aux": "uregtest18ukzh947qqgvxke6gwjjjxx43vacm9a6sxkmjgr4s837ry3gp4qv4xj6f5tury6dye8r83xum4vysc6ujw27kjlpjkrej0dxxg9smtsg", + "sapling_addr0": "zregtestsapling1cxqx6jlngx0a6lakm5qjz7pxr9wkf0uq532cfvtny0dw2ts3zdq2zglme0kjkf9u62truflckke", + "sapling_addr1": "zregtestsapling14pt9c4gwf7pq8mk5tzp2e9gnxn9j324zz2zpckedwtx59vxvgqtygggkd5z4w2pttaaqq40yrly", + "orchard_addr0": "uregtest16s9p2wgz5fx3d0a9cn5lrervtp4ax6xsey0umynqhnpuphhml9827727gyy6yrwcqvm389l4hw5m34ph83c8ya58jzm3frleasq738sn", + "orchard_addr1": "uregtest1hg0vpsvvvsaynkwz7zpwpj2rmcmw2h4ez238j3d8pu0kv9qxf9t5yrrz56yp0pxn7s3ztzgq92kdzrnj6s4q7qc92d92fwlvacqqn6w9", + "_orchard_aux_addr": "uregtest18ukzh947qqgvxke6gwjjjxx43vacm9a6sxkmjgr4s837ry3gp4qv4xj6f5tury6dye8r83xum4vysc6ujw27kjlpjkrej0dxxg9smtsg", + "t_to_sapling_txid": "baf959f54e67cd881eaee54cf0bcd1e5d3c96cba006e7ffacd881b3fd0698fc4", + "t_to_sapling_height": 201, + "t_to_orchard_txid": "1ab0cc4fed1586ed8f90d88575dfcf761967cffe0d9d85d7bd413f3a66f37b15", + "t_to_orchard_height": 205, + "sapling_to_sapling_txid": "3dd8152bfa046fe8cc61c3ee18aa899a0dd20202dcc223c589e37068638be743", + "sapling_to_sapling_height": 204, + "orchard_to_orchard_txid": "568c10845023f4165b41f7780116107376cf0c832fea530721fd60f96da15109", + "orchard_to_orchard_height": 206, + "sapling_to_orchard_txid": "e61e603ab39271f6bfcb9784cf54e05caa6a6765cc78dd2e9be64e2740610cf1", + "sapling_to_orchard_height": 203, + "orchard_to_sapling_txid": "c24331c2281a9875da25050d1d4acea35370d1a07f87407eaf99345e4c14fb79", + "orchard_to_sapling_height": 207, + "sapling_to_t_txid": "1d4e877a5853c37985fed8368a31d7a60d7d254743df09c360c53cfe0c5dbc20", + "sapling_to_t_height": 208, + "orchard_to_t_txid": "37e340059d2934c9f30742bf9aa0e7f047309abd6f81a1d0d8c8c7f4a8370a91", + "orchard_to_t_height": 209, + "cache_version": 7 +} \ No newline at end of file diff --git a/qa/rpc-tests/cache/grpc_comparison/zebrad_state.tar.gz b/qa/rpc-tests/cache/grpc_comparison/zebrad_state.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..743fc8e27d15ed04e7e3ee59a52cbab9ed4a9aca GIT binary patch literal 144942 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 z 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 as+kf2`;q<&17YwzKyyj&s{;-v5Bvwl<)0k@ literal 0 HcmV?d00001 diff --git a/qa/rpc-tests/cache/grpc_comparison_stage1/chain_metadata.json b/qa/rpc-tests/cache/grpc_comparison_stage1/chain_metadata.json new file mode 100644 index 000000000..97b8409e3 --- /dev/null +++ b/qa/rpc-tests/cache/grpc_comparison_stage1/chain_metadata.json @@ -0,0 +1,29 @@ +{ + "taddr": "tmUtDKtdCpW9JK6qCnF7V3HGT17tNMw5N44", + "sapling_ua0": "zregtestsapling1cxqx6jlngx0a6lakm5qjz7pxr9wkf0uq532cfvtny0dw2ts3zdq2zglme0kjkf9u62truflckke", + "sapling_ua_aux": "zregtestsapling1v8g56j8emgfhtwuwgffa6sarj4rp9gkg4q4g7hk5t8t7r8mqpekrhphttm7k2tgvfp3tq8g9crj", + "orchard_ua1": "uregtest16s9p2wgz5fx3d0a9cn5lrervtp4ax6xsey0umynqhnpuphhml9827727gyy6yrwcqvm389l4hw5m34ph83c8ya58jzm3frleasq738sn", + "orchard_ua_aux": "uregtest18ukzh947qqgvxke6gwjjjxx43vacm9a6sxkmjgr4s837ry3gp4qv4xj6f5tury6dye8r83xum4vysc6ujw27kjlpjkrej0dxxg9smtsg", + "sapling_addr0": "zregtestsapling1cxqx6jlngx0a6lakm5qjz7pxr9wkf0uq532cfvtny0dw2ts3zdq2zglme0kjkf9u62truflckke", + "sapling_addr1": "zregtestsapling14pt9c4gwf7pq8mk5tzp2e9gnxn9j324zz2zpckedwtx59vxvgqtygggkd5z4w2pttaaqq40yrly", + "orchard_addr0": "uregtest16s9p2wgz5fx3d0a9cn5lrervtp4ax6xsey0umynqhnpuphhml9827727gyy6yrwcqvm389l4hw5m34ph83c8ya58jzm3frleasq738sn", + "orchard_addr1": "uregtest1hg0vpsvvvsaynkwz7zpwpj2rmcmw2h4ez238j3d8pu0kv9qxf9t5yrrz56yp0pxn7s3ztzgq92kdzrnj6s4q7qc92d92fwlvacqqn6w9", + "_orchard_aux_addr": "uregtest18ukzh947qqgvxke6gwjjjxx43vacm9a6sxkmjgr4s837ry3gp4qv4xj6f5tury6dye8r83xum4vysc6ujw27kjlpjkrej0dxxg9smtsg", + "t_to_sapling_txid": "baf959f54e67cd881eaee54cf0bcd1e5d3c96cba006e7ffacd881b3fd0698fc4", + "t_to_sapling_height": 201, + "t_to_orchard_txid": null, + "t_to_orchard_height": null, + "sapling_to_sapling_txid": null, + "sapling_to_sapling_height": null, + "orchard_to_orchard_txid": null, + "orchard_to_orchard_height": null, + "sapling_to_orchard_txid": null, + "sapling_to_orchard_height": null, + "orchard_to_sapling_txid": null, + "orchard_to_sapling_height": null, + "sapling_to_t_txid": null, + "sapling_to_t_height": null, + "orchard_to_t_txid": null, + "orchard_to_t_height": null, + "cache_version": 7 +} \ No newline at end of file diff --git a/qa/rpc-tests/cache/grpc_comparison_stage1/zcashd0_state.tar.gz b/qa/rpc-tests/cache/grpc_comparison_stage1/zcashd0_state.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..0c70b07764f60c92f8d9f35e98b9d01474ce8f75 GIT binary patch literal 213815 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 z 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 literal 0 HcmV?d00001 diff --git a/qa/rpc-tests/cache/grpc_comparison_stage1/zcashd1_state.tar.gz b/qa/rpc-tests/cache/grpc_comparison_stage1/zcashd1_state.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..1eb5888132dae487c350371a6654c0fa2cfc8ca6 GIT binary patch literal 179777 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

s@+vz-uk#w2NOLiHH62I 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 s3Tp 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%0DNR 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 I9}KYn12)Ij-v9sr literal 0 HcmV?d00001 diff --git a/qa/rpc-tests/grpc_comparison.py b/qa/rpc-tests/grpc_comparison.py index 351073216..bd60da742 100755 --- a/qa/rpc-tests/grpc_comparison.py +++ b/qa/rpc-tests/grpc_comparison.py @@ -10,11 +10,39 @@ Mirrors the Rust test fixtures in client_rpc_test_fixtures, porting them to Python so they run inside the existing BitcoinTestFramework CI pipeline. -Chain setup (via zcashd + submitblock into Zebrad): - Blocks 1-100 — Orchard coinbase (mined to orchard_addr). Populates the Orchard - commitment tree and provides mature shielded funds for Phase 2. - Block 101 — Confirms a z_sendmany tx that has a transparent output (to taddr) - and a Sapling output (to sapling_addr), populating the Sapling tree. +Chain setup (zcashd mines; all blocks are submitted to Zebrad via submitblock): + Blocks 1–200 — Transparent coinbase → zcashd0 wallet t-address (taddr). + Provides 100 mature UTXOs at height 200 for shielded spends. + A second standalone wallet (zcashd1) follows the same chain and + owns the Orchard account used for Orchard spends, matching the + separation used by the working Orchard wallet tests. + Block 201 — z_shieldcoinbase: taddr → sapling_ua0 (t→Sapling). + Coinbase UTXOs must go through z_shieldcoinbase, not z_sendmany. + Populates the Sapling tree; notes are spendable after 1 block. + Block 202 — z_shieldcoinbase: taddr → sapling_ua_aux (extra t→Sapling funding). + Seeds a second Sapling note pool for the later Sapling spends, + so the Sapling→Orchard spend and the later Sapling spends do not + depend on zcashd note selection choosing distinct notes. + Block 203 — sapling_ua0 → orchard_addr0 (Sapling→Orchard, cross-pool). + Also funds the Orchard pool so subsequent Orchard spends are possible. + zcashd0 authors the Sapling side; zcashd1 later spends from the + received Orchard note using its account UA. + Block 204 — sapling_ua_aux → sapling_addr1 (Sapling→Sapling). + Block 205 — z_sendmany: taddr → orchard_aux_addr (t→Orchard). + This seeds a second Orchard source account used for the later + Orchard spends, so Orchard→Orchard does not have to share the + same Orchard note pool with Orchard→Sapling and Orchard→t. + Block 206 — orchard_ua1 → orchard_addr1 (Orchard→Orchard). + Block 207 — orchard_ua_aux → sapling_addr1 (Orchard→Sapling, cross-pool). + Block 208 — sapling_ua_aux → taddr (Sapling→t). + Block 209 — orchard_ua_aux → taddr (Orchard→t). + +Chain caching: + After the first run the zcashd block data and chain metadata (addresses, txids, + heights) are saved to qa/rpc-tests/cache/grpc_comparison/. Subsequent runs + restore the zcashd state and skip block generation entirely, saving the time + spent on z_sendmany proof generation. Pass --fresh to force a rebuild and + overwrite the existing cache. Methods tested (CompactTxStreamer service): GetLightdInfo, GetLatestBlock, GetBlock, GetBlockNullifiers, @@ -27,6 +55,9 @@ GetMempoolTx, GetMempoolStream """ +import json +import os +import tarfile import time from decimal import Decimal @@ -37,17 +68,86 @@ from test_framework.util import ( assert_equal, assert_true, + get_coinbase_address, + initialize_chain, + persistent_cache_path, + persistent_cache_exists, start_nodes, start_zcashd_node, stop_zcashd_node, + wait_and_assert_operationid_status, zaino_grpc_port, ) +from test_framework.zip317 import ZIP_317_FEE, conventional_fee from test_framework.proto import ( compact_formats_pb2, service_pb2, service_pb2_grpc, ) +_GRPC_CACHE_NAME = 'grpc_comparison' +_GRPC_STAGE1_CACHE_NAME = 'grpc_comparison_stage1' +_GRPC_ACTIVATION_HEIGHT = 2 +_GRPC_CACHE_VERSION = 7 +_GRPC_ZCASHD_NUPARAMS = { + '5ba81b19': 1, # Overwinter + '76b809bb': 1, # Sapling + '2bb40e60': 1, # Blossom + 'f5b9230b': 1, # Heartwood + 'e9ff75a6': 1, # Canopy + 'c2d6d0b4': _GRPC_ACTIVATION_HEIGHT, # NU5 + 'c8e71055': _GRPC_ACTIVATION_HEIGHT, # NU6 +} + + +def _submit_missing_blocks(src_node, dst_node): + """Submit any blocks missing from dst_node using raw blocks from src_node.""" + dst_height = dst_node.getblockcount() + src_height = src_node.getblockcount() + for height in range(dst_height + 1, src_height + 1): + raw_hex = src_node.getblock(str(height), 0) + result = dst_node.submitblock(raw_hex) + if result is not None: + raise Exception("submitblock to zcashd failed at height %d: %s" % (height, result)) + + +def _relay_raw_transaction(src_node, dst_node, txid): + """Relay a raw transaction from one standalone node to another.""" + raw_hex = src_node.getrawtransaction(txid) + relayed_txid = dst_node.sendrawtransaction(raw_hex, True) + assert_equal(txid, relayed_txid) + + +def _write_checkpoint_file(node, max_height, path): + """Write Zebra checkpoints from genesis through max_height to path.""" + with open(path, 'w', encoding='utf8') as f: + for height in range(0, max_height + 1): + f.write("%d %s\n" % (height, node.getblockhash(height))) + + +def _treestate_has_final_state(treestate, pool_name): + pool = treestate.get(pool_name, {}) + commitments = pool.get("commitments", {}) + final_state = commitments.get("finalState") + return isinstance(final_state, str) and len(final_state) > 0 + + +def _grpc_metadata_fields(): + return ( + 'taddr', + 'sapling_ua0', 'sapling_ua_aux', 'orchard_ua1', 'orchard_ua_aux', + 'sapling_addr0', 'sapling_addr1', + 'orchard_addr0', 'orchard_addr1', '_orchard_aux_addr', + 't_to_sapling_txid', 't_to_sapling_height', + 't_to_orchard_txid', 't_to_orchard_height', + 'sapling_to_sapling_txid', 'sapling_to_sapling_height', + 'orchard_to_orchard_txid', 'orchard_to_orchard_height', + 'sapling_to_orchard_txid', 'sapling_to_orchard_height', + 'orchard_to_sapling_txid', 'orchard_to_sapling_height', + 'sapling_to_t_txid', 'sapling_to_t_height', + 'orchard_to_t_txid', 'orchard_to_t_height', + ) + def _collect_stream(streaming_call): """Collect all messages from a server-streaming gRPC call into a list.""" @@ -57,29 +157,6 @@ def _collect_stream(streaming_call): return results -def _wait_for_operation(zcashd, opid, timeout=120): - """ - Poll z_getoperationresult until the given operation succeeds or fails. - - z_getoperationresult consumes the result on first return, so we stop - polling as soon as a result appears. Returns the result dict on success; - raises Exception on failure or timeout. - """ - deadline = time.time() + timeout - while time.time() < deadline: - results = zcashd.z_getoperationresult([opid]) - if results: - r = results[0] - if r['status'] == 'success': - return r - raise Exception( - "z_sendmany %s failed: %s" - % (opid, r.get('error', {}).get('message', str(r))) - ) - time.sleep(1) - raise Exception("z_sendmany operation %s timed out after %ds" % (opid, timeout)) - - def _normalize_compact_block(block): """ Normalize a CompactBlock for header-level comparison. @@ -108,13 +185,34 @@ def _normalize_shielded_compact_block(block): Normalize a CompactBlock that contains shielded transactions for full comparison including vtx. - For blocks whose coinbase is shielded (Sapling/Orchard), both Zainod and - Lightwalletd must include the compact shielded outputs in vtx. The only - implementation-specific field zeroed here is protoVersion. + Blocks in the shielded fixture range must have identical, non-empty + shielded CompactTx entries in both Zainod and Lightwalletd. + + Known divergence: + - Lightwalletd still includes the transparent coinbase CompactTx in these + blocks, while Zainod omits transparent-only transactions. Filter those + out before comparing the remaining shielded txs. + + The only remaining implementation-specific field zeroed here is + protoVersion. """ normalized = compact_formats_pb2.CompactBlock() - normalized.CopyFrom(block) + normalized.height = block.height + normalized.hash = block.hash + normalized.prevHash = block.prevHash + normalized.time = block.time normalized.protoVersion = 0 + for tx in block.vtx: + if len(tx.spends) > 0 or len(tx.outputs) > 0 or len(tx.actions) > 0: + normalized_tx = normalized.vtx.add() + normalized_tx.index = tx.index + normalized_tx.txid = tx.txid + normalized_tx.fee = tx.fee + normalized_tx.spends.extend(tx.spends) + normalized_tx.outputs.extend(tx.outputs) + normalized_tx.actions.extend(tx.actions) + if block.HasField("chainMetadata"): + normalized.chainMetadata.CopyFrom(block.chainMetadata) return normalized @@ -128,125 +226,450 @@ def __init__(self): self.num_wallets = 0 self.cache_behavior = 'clean' - # Populated in setup_network; used by test methods - self.taddr = None - self.txid = None # txid of the z_sendmany tx (has both t and Sapling outputs) - self.sapling_addr = None - self.sapling_txid = None # same tx, kept separate for clarity in shielded tests - self.sapling_tx_height = None - self.orchard_addr = None - self.orchard_coinbase_txid = None - self.orchard_block_height = None + # Populated in setup_network (or restored from cache); used by test methods. + self.taddr = None # coinbase t-address (blocks 1–200) + self.txid = None # coinbase txid of block 1 (for GetTransaction) + self.sapling_ua0 = None # Sapling source used for the Sapling→Orchard funding tx + self.sapling_ua_aux = None # Sapling source used for later Sapling spends + self.orchard_ua1 = None # account 1 UA (spent from Orchard-funded account) + self.orchard_ua_aux = None # account 2 UA (spent from later Orchard-funded account) + self.sapling_addr0 = None # bare Sapling receiver of account 0 (funded at block 202) + self.sapling_addr1 = None # bare Sapling receiver of account 2 (receives at blocks 204, 206) + self.orchard_addr0 = None # bare Orchard receiver of account 1 (funded at blocks 201, 203) + self.orchard_addr1 = None # bare Orchard receiver of account 3 (receives at blocks 205, 203) + self._orchard_aux_addr = None # Orchard receiver used for the t→Orchard case and later Orchard spends + self.t_to_sapling_txid = None + self.t_to_sapling_height = None # 202 + self.t_to_orchard_txid = None + self.t_to_orchard_height = None # 203 + self.sapling_to_sapling_txid = None + self.sapling_to_sapling_height = None # 204 + self.orchard_to_orchard_txid = None + self.orchard_to_orchard_height = None # 205 + self.sapling_to_orchard_txid = None + self.sapling_to_orchard_height = None # 206 + self.orchard_to_sapling_txid = None + self.orchard_to_sapling_height = None # 207 + self.sapling_to_t_txid = None + self.sapling_to_t_height = None # 208 + self.orchard_to_t_txid = None + self.orchard_to_t_height = None # 209 + + self._chain_loaded_from_cache = False + self._stage1_loaded_from_cache = False + self._zebra_checkpoints = None + + def add_options(self, parser): + parser.add_option( + "--fresh", + dest="fresh", + default=False, + action="store_true", + help=( + "Discard the final cached chain state and rebuild it. " + "The full cache lives at qa/rpc-tests/cache/%s/. " + "A reusable stage-1 wallet cache may still be used to skip " + "the slow initial Sapling funding setup." % _GRPC_CACHE_NAME + ), + ) - def setup_nodes(self): - # All network upgrades activate at block 1 to match the zcashd config - # (nuparams=:1 for each upgrade). This ensures zebrad - # accepts every block submitted via submitblock, including Sapling - # (ZIP 213 / Heartwood) and Orchard (NU5) coinbase blocks. - return start_nodes(self.num_nodes, self.options.tmpdir, - [ZebraArgs(activation_heights={ - "Overwinter": 1, - "Sapling": 1, - "Blossom": 1, - "Heartwood": 1, - "Canopy": 1, - "NU5": 1, - "NU6": 1, - })]) - - def _restart_zcashd(self, miner_address): - """Stop zcashd node 0, reconfigure with a new miner address, and restart.""" - stop_zcashd_node(0, self.zcashd_nodes[0]) - node = start_zcashd_node(0, self.options.tmpdir, miner_address=miner_address) - self.zcashd_nodes[0] = node - return node + def setup_chain(self): + cache_path = persistent_cache_path(_GRPC_CACHE_NAME) + if not self.options.fresh and persistent_cache_exists(_GRPC_CACHE_NAME): + try: + self._load_cached_metadata(cache_path) + print("grpc_comparison: loading chain from cache (%s)" % cache_path) + initialize_chain(self.options.tmpdir, self.num_nodes, + self.options.cachedir, 'clean') + self._restore_framework_cache(cache_path) + self._chain_loaded_from_cache = True + except (IOError, OSError, ValueError) as e: + print("grpc_comparison: ignoring incompatible full cache: %s" % str(e)) + initialize_chain(self.options.tmpdir, self.num_nodes, + self.options.cachedir, 'clean') + else: + initialize_chain(self.options.tmpdir, self.num_nodes, + self.options.cachedir, 'clean') + stage1_cache_path = persistent_cache_path(_GRPC_STAGE1_CACHE_NAME) + if (not self._chain_loaded_from_cache and + persistent_cache_exists(_GRPC_STAGE1_CACHE_NAME)): + try: + self._load_cached_metadata(stage1_cache_path) + print("grpc_comparison: loading stage-1 chain cache (%s)" % stage1_cache_path) + self._restore_stage1_cache(stage1_cache_path) + self._stage1_loaded_from_cache = True + except (IOError, OSError, ValueError) as e: + print("grpc_comparison: ignoring incompatible stage-1 cache: %s" % str(e)) + + def _load_cached_metadata(self, cache_path): + with open(os.path.join(cache_path, 'chain_metadata.json')) as f: + meta = json.load(f) + + if meta.get('cache_version') != _GRPC_CACHE_VERSION: + raise ValueError( + "cache version mismatch for %s: found %r, expected %r" + % (cache_path, meta.get('cache_version'), _GRPC_CACHE_VERSION) + ) - def setup_network(self, split=False): - self.wallets = [] # no wallets used; required for teardown + for field in _grpc_metadata_fields(): + setattr(self, field, meta.get(field)) + + def _write_cached_metadata(self, cache_path): + meta = {field: getattr(self, field) for field in _grpc_metadata_fields()} + meta['cache_version'] = _GRPC_CACHE_VERSION + with open(os.path.join(cache_path, 'chain_metadata.json'), 'w') as f: + json.dump(meta, f, indent=2) + + def _persist_framework_cache(self): + cache_path = persistent_cache_path(_GRPC_CACHE_NAME) + if os.path.isdir(cache_path): + import shutil + shutil.rmtree(cache_path) + os.makedirs(cache_path) + + src = os.path.join(self.options.tmpdir, 'node0') + + def _skip_runtime_files(tarinfo): + basename = os.path.basename(tarinfo.name) + if basename in ('debug.log', 'db.log', 'peers.dat'): + return None + if basename.endswith('.lock'): + return None + return tarinfo + + with tarfile.open(os.path.join(cache_path, 'zebrad_state.tar.gz'), 'w:gz') as tf: + tf.add(src, arcname='node0', filter=_skip_runtime_files) + + self._write_cached_metadata(cache_path) + + def _restore_framework_cache(self, cache_path): + with tarfile.open(os.path.join(cache_path, 'zebrad_state.tar.gz'), 'r:gz') as tf: + tf.extractall(self.options.tmpdir) + + def _restore_stage1_cache(self, cache_path): + self._load_cached_metadata(cache_path) + for index in range(2): + with tarfile.open(os.path.join(cache_path, 'zcashd%d_state.tar.gz' % index), 'r:gz') as tf: + tf.extractall(self.options.tmpdir) + + def _start_build_nodes(self): + return [ + start_zcashd_node(0, self.options.tmpdir, activation_heights=_GRPC_ZCASHD_NUPARAMS), + start_zcashd_node(1, self.options.tmpdir, activation_heights=_GRPC_ZCASHD_NUPARAMS), + ] + + def _wait_for_build_nodes_height(self, build_nodes, expected_height, timeout=30): + deadline = time.time() + timeout + while time.time() < deadline: + heights = [node.getblockcount() for node in build_nodes] + if heights == [expected_height] * len(build_nodes): + return + time.sleep(1) + raise AssertionError( + "standalone zcashd nodes did not reach height %d: %s" + % (expected_height, heights) + ) - # Start Zebrad (passive — does not mine). - self.nodes = self.setup_nodes() - zebrad = self.nodes[0] - - # Phase 0 — start zcashd without a miner address to generate wallet - # addresses. setmineraddress has been removed from this zcashd version; - # the miner address must be set via zcash.conf and takes effect on restart. - zcashd = start_zcashd_node(0, self.options.tmpdir) - self.zcashd_nodes = [zcashd] - - self.taddr = zcashd.getnewaddress() - - # Generate a unified address with Sapling and Orchard receivers via the - # current account-based API. z_getnewaddress('unified') was removed; - # use z_getnewaccount + z_getaddressforaccount instead. - account = zcashd.z_getnewaccount()['account'] - ua = zcashd.z_getaddressforaccount(account, ['sapling', 'orchard'])['address'] - receivers = zcashd.z_listunifiedreceivers(ua) - self.sapling_addr = receivers['sapling'] - self.orchard_addr = receivers['orchard'] - - # Phase 1 — mine all blocks to the Orchard receiver (single restart). - # NU5 is active from block 1, so Orchard coinbase is valid throughout. - # All 100 blocks are Orchard coinbase, which populates the Orchard - # commitment tree and provides spendable shielded funds for Phase 2. - zcashd = self._restart_zcashd(self.orchard_addr) - zcashd.generate(100) - self.orchard_block_height = 1 - self.orchard_coinbase_txid = zcashd.getblock("1")['tx'][0] - - # Phase 2 — send from the Orchard account to both the transparent address - # and the Sapling address in a single z_sendmany transaction. - # - # After 100 Orchard coinbase blocks the block-1 coinbase has matured - # (coinbase maturity = 100), so the Orchard balance is fully spendable. - # "NoPrivacy" allows cross-pool spending (Orchard → Sapling) and - # transparent recipients (Orchard → t-addr) in one transaction. - opid = zcashd.z_sendmany( - ua, - [ - {"address": self.taddr, "amount": Decimal("1.0")}, - {"address": self.sapling_addr, "amount": Decimal("1.0")}, - ], - 1, - Decimal("0.0001"), - "NoPrivacy", + def _persist_stage1_cache(self, build_nodes): + print("grpc_comparison: persisting stage-1 wallet cache") + for index, node in enumerate(build_nodes): + stop_zcashd_node(index, node) + + cache_path = persistent_cache_path(_GRPC_STAGE1_CACHE_NAME) + if os.path.isdir(cache_path): + import shutil + shutil.rmtree(cache_path) + os.makedirs(cache_path) + + def _skip_runtime_files(tarinfo): + basename = os.path.basename(tarinfo.name) + if basename in ('debug.log', 'db.log', 'peers.dat', 'mempool.dat', 'fee_estimates.dat'): + return None + if basename.endswith('.lock'): + return None + return tarinfo + + for index in range(2): + src = os.path.join(self.options.tmpdir, 'zcashd%d' % index) + with tarfile.open(os.path.join(cache_path, 'zcashd%d_state.tar.gz' % index), 'w:gz') as tf: + tf.add(src, arcname='zcashd%d' % index, filter=_skip_runtime_files) + + self._write_cached_metadata(cache_path) + build_nodes = self._start_build_nodes() + self._wait_for_build_nodes_height(build_nodes, 202) + return build_nodes + + def _build_stage1_with_wallet_nodes(self): + build_nodes = self._start_build_nodes() + node0, node1 = build_nodes + + assert_equal(node0.getblockcount(), 0) + print("grpc_comparison: mining initial transparent chain (200 blocks)") + node0.generate(200) + _submit_missing_blocks(node0, node1) + + print("grpc_comparison: deriving Sapling and Orchard fixture addresses") + self.taddr = get_coinbase_address(node0) + self.txid = node0.getblock("1")['tx'][0] + + self.sapling_ua0 = node0.z_getnewaddress('sapling') + self.sapling_addr0 = self.sapling_ua0 + + self.sapling_ua_aux = node0.z_getnewaddress('sapling') + self.sapling_addr1 = node0.z_getnewaddress('sapling') + + orchard_acct1 = node1.z_getnewaccount()['account'] + self.orchard_ua1 = node1.z_getaddressforaccount(orchard_acct1, ['orchard'])['address'] + self.orchard_addr0 = node1.z_listunifiedreceivers(self.orchard_ua1)['orchard'] + + orchard_aux_acct = node1.z_getnewaccount()['account'] + self.orchard_ua_aux = node1.z_getaddressforaccount(orchard_aux_acct, ['orchard'])['address'] + self._orchard_aux_addr = node1.z_listunifiedreceivers(self.orchard_ua_aux)['orchard'] + + orchard_acct2 = node1.z_getnewaccount()['account'] + orchard_ua2 = node1.z_getaddressforaccount(orchard_acct2, ['orchard'])['address'] + self.orchard_addr1 = node1.z_listunifiedreceivers(orchard_ua2)['orchard'] + + print("grpc_comparison: funding primary Sapling pool from transparent coinbase") + sapling_shield_fee = conventional_fee(4) + sapling_shield_amount = Decimal('12.5') - sapling_shield_fee + self.t_to_sapling_txid = wait_and_assert_operationid_status( + node0, + node0.z_sendmany( + self.taddr, + [{"address": self.sapling_ua0, "amount": sapling_shield_amount}], + 10, + sapling_shield_fee, + 'AllowRevealedSenders', + ), ) - op_result = _wait_for_operation(zcashd, opid) - send_txid = op_result['result']['txid'] - - # Mine 1 block to confirm both outputs (height 101). - zcashd.generate(1) - confirm_height = zcashd.getblockcount() # = 101 - - # self.txid is used by test_get_transaction and transparent address tests. - # self.sapling_txid is the same tx viewed from the Sapling-output angle. - self.txid = send_txid - self.sapling_txid = send_txid - self.sapling_tx_height = confirm_height - - # Push every zcashd-mined block into zebrad via submitblock. - # This sidesteps the known P2P propagation issues between zcashd and - # zebrad (ZcashFoundation/zebra#10329, #10332). - tip = zcashd.getblockcount() - for h in range(1, tip + 1): - raw_hex = zcashd.getblock(str(h), 0) - result = zebrad.submitblock(raw_hex) - if result is not None: - raise Exception("submitblock failed at height %d: %s" % (h, result)) - - assert zebrad.getblockcount() == tip, ( - "zebrad height %d != zcashd height %d after submitblock" - % (zebrad.getblockcount(), tip) + node0.generate(1) + _submit_missing_blocks(node0, node1) + self.t_to_sapling_height = node0.getblockcount() # 201 + + print("grpc_comparison: restarting primary builder wallet before auxiliary Sapling funding") + stop_zcashd_node(0, node0) + node0 = start_zcashd_node(0, self.options.tmpdir, activation_heights=_GRPC_ZCASHD_NUPARAMS) + build_nodes[0] = node0 + assert_equal(node0.getblockcount(), 201) + + print("grpc_comparison: funding auxiliary Sapling pool from transparent coinbase") + wait_and_assert_operationid_status( + node0, + node0.z_sendmany( + self.taddr, + [{"address": self.sapling_ua_aux, "amount": sapling_shield_amount}], + 10, + sapling_shield_fee, + 'AllowRevealedSenders', + ), ) + node0.generate(1) + _submit_missing_blocks(node0, node1) + assert_equal(node0.getblockcount(), 202) + + return build_nodes + + def _complete_chain_from_stage1(self, build_nodes): + node0, node1 = build_nodes + assert_equal(node0.getblockcount(), 202) + _submit_missing_blocks(node0, node1) + assert_equal(node1.getblockcount(), 202) + + fund = Decimal('0.1') + amount = Decimal('0.01') + sapling_to_orchard_fee = conventional_fee(4) + + print("grpc_comparison: building Sapling -> Orchard funding transaction") + self.sapling_to_orchard_txid = wait_and_assert_operationid_status( + node0, + node0.z_sendmany( + self.sapling_ua0, + [{"address": self.orchard_addr0, "amount": fund}], + 1, + sapling_to_orchard_fee, + 'AllowRevealedAmounts', + ), + ) + node0.generate(1) + _submit_missing_blocks(node0, node1) + self.sapling_to_orchard_height = node0.getblockcount() # 203 + + print("grpc_comparison: building Sapling -> Sapling transaction") + self.sapling_to_sapling_txid = wait_and_assert_operationid_status( + node0, + node0.z_sendmany( + self.sapling_ua_aux, + [{"address": self.sapling_addr1, "amount": amount}], + 1, + ZIP_317_FEE, + ), + ) + node0.generate(1) + _submit_missing_blocks(node0, node1) + self.sapling_to_sapling_height = node0.getblockcount() # 204 + + orchard_fee = conventional_fee(4) + orchard_amount = Decimal('12.5') - orchard_fee + print("grpc_comparison: building transparent -> Orchard transaction") + self.t_to_orchard_txid = wait_and_assert_operationid_status( + node0, + node0.z_sendmany( + self.taddr, + [{"address": self.orchard_ua_aux, "amount": orchard_amount}], + 1, + orchard_fee, + 'NoPrivacy', + ), + ) + node0.generate(1) + _submit_missing_blocks(node0, node1) + self.t_to_orchard_height = node0.getblockcount() # 205 + # Restart the Orchard-owning wallet after funding lands so it reloads + # its Orchard note state before the first Orchard spend. + stop_zcashd_node(1, node1) + node1 = start_zcashd_node(1, self.options.tmpdir, activation_heights=_GRPC_ZCASHD_NUPARAMS) + build_nodes[1] = node1 + assert_equal(node1.getblockcount(), node0.getblockcount()) + + print("grpc_comparison: building Orchard -> Orchard transaction") + self.orchard_to_orchard_txid = wait_and_assert_operationid_status( + node1, + node1.z_sendmany( + self.orchard_ua1, + [{"address": self.orchard_addr1, "amount": amount}], + 1, + ZIP_317_FEE, + ), + ) + _relay_raw_transaction(node1, node0, self.orchard_to_orchard_txid) + node0.generate(1) + _submit_missing_blocks(node0, node1) + self.orchard_to_orchard_height = node0.getblockcount() # 206 + + stop_zcashd_node(1, node1) + node1 = start_zcashd_node(1, self.options.tmpdir, activation_heights=_GRPC_ZCASHD_NUPARAMS) + build_nodes[1] = node1 + assert_equal(node1.getblockcount(), node0.getblockcount()) + + print("grpc_comparison: building Orchard -> Sapling transaction") + self.orchard_to_sapling_txid = wait_and_assert_operationid_status( + node1, + node1.z_sendmany( + self.orchard_ua1, + [{"address": self.sapling_addr1, "amount": amount}], + 1, + ZIP_317_FEE, + 'AllowRevealedAmounts', + ), + ) + _relay_raw_transaction(node1, node0, self.orchard_to_sapling_txid) + node0.generate(1) + _submit_missing_blocks(node0, node1) + self.orchard_to_sapling_height = node0.getblockcount() # 207 + + stop_zcashd_node(1, node1) + node1 = start_zcashd_node(1, self.options.tmpdir, activation_heights=_GRPC_ZCASHD_NUPARAMS) + build_nodes[1] = node1 + assert_equal(node1.getblockcount(), node0.getblockcount()) + + print("grpc_comparison: building Sapling -> transparent transaction") + self.sapling_to_t_txid = wait_and_assert_operationid_status( + node0, + node0.z_sendmany( + self.sapling_ua_aux, + [{"address": self.taddr, "amount": amount}], + 1, + ZIP_317_FEE, + 'AllowRevealedRecipients', + ), + ) + node0.generate(1) + _submit_missing_blocks(node0, node1) + self.sapling_to_t_height = node0.getblockcount() # 208 + + print("grpc_comparison: building Orchard -> transparent transaction") + self.orchard_to_t_txid = wait_and_assert_operationid_status( + node1, + node1.z_sendmany( + self.orchard_ua1, + [{"address": self.taddr, "amount": amount}], + 1, + ZIP_317_FEE, + 'AllowRevealedRecipients', + ), + ) + _relay_raw_transaction(node1, node0, self.orchard_to_t_txid) + node0.generate(1) + _submit_missing_blocks(node0, node1) + self.orchard_to_t_height = node0.getblockcount() # 209 + + def setup_nodes(self): + # Match Zebra regtest defaults up to Canopy, and activate Orchard-era + # upgrades at the start of the shielded fixture range. + args = [ZebraArgs(activation_heights={ + "NU5": _GRPC_ACTIVATION_HEIGHT, + "NU6": _GRPC_ACTIVATION_HEIGHT, + }, checkpoints=self._zebra_checkpoints) for _ in range(self.num_nodes)] + return start_nodes(self.num_nodes, self.options.tmpdir, + args) + def setup_network(self, split=False): + self.wallets = [] # no wallets used; required for teardown + self.nodes = [] + self.zcashd_nodes = [] + if self._chain_loaded_from_cache: + print("grpc_comparison: restoring Zebrad chain from cache") + self.nodes = self.setup_nodes() + self.txid = self.nodes[0].getblock("1")['tx'][0] + else: + if self._stage1_loaded_from_cache: + print("grpc_comparison: resuming from stage-1 wallet cache") + build_nodes = self._start_build_nodes() + self._wait_for_build_nodes_height(build_nodes, 202) + else: + print("grpc_comparison: building fresh stage-1 fixture chain with standalone zcashd") + build_nodes = self._build_stage1_with_wallet_nodes() + build_nodes = self._persist_stage1_cache(build_nodes) + try: + print("grpc_comparison: building stage-2 shielded transactions") + self._complete_chain_from_stage1(build_nodes) + # Zebra and standalone zcashd disagree on regtest difficulty + # throughout this standalone fixture, so replay via checkpoints + # and then wait until Zebra exposes treestates for the replayed + # shielded blocks before starting the downstream indexers. + checkpoint_path = os.path.join(self.options.tmpdir, 'grpc_comparison_checkpoints.txt') + _write_checkpoint_file(build_nodes[0], build_nodes[0].getblockcount(), checkpoint_path) + self._zebra_checkpoints = checkpoint_path + print("grpc_comparison: starting Zebrad") + self.nodes = self.setup_nodes() + print("grpc_comparison: replaying built chain into Zebrad") + _submit_missing_blocks(build_nodes[0], self.nodes[0]) + assert_equal(self.nodes[0].getblockcount(), build_nodes[0].getblockcount()) + print("grpc_comparison: waiting for Zebrad tip") + self._wait_for_zebra_tip(build_nodes[0].getblockcount()) + finally: + for index, node in enumerate(build_nodes): + stop_zcashd_node(index, node) + print("grpc_comparison: persisting fresh Zebrad cache") + self._persist_framework_cache() + self.txid = self.nodes[0].getblock("1")['tx'][0] + + if self._chain_loaded_from_cache: + print("grpc_comparison: waiting for restored Zebrad tip before starting indexers") + self._wait_for_zebra_tip(self.orchard_to_t_height) + else: + print("grpc_comparison: waiting for restored Zebrad tip before starting indexers") + self._wait_for_zebra_tip(self.orchard_to_t_height) self.zainos = self.setup_indexers() self.lwds = self.setup_lightwalletds() # Wait for both indexers to sync to the chain tip before running tests. - self._wait_for_indexers(tip) + self._wait_for_indexers(self.nodes[0].getblockcount()) def _wait_for_indexers(self, expected_height, timeout=60): """Block until both Zainod and Lightwalletd report the expected block height.""" + print("grpc_comparison: waiting for indexers to sync to height %d" % expected_height) zainod_ch = grpc.insecure_channel(f"127.0.0.1:{zaino_grpc_port(0)}") lwd_ch = grpc.insecure_channel(f"127.0.0.1:{self.lwds[0]}") try: @@ -272,6 +695,22 @@ def _wait_for_indexers(self, expected_height, timeout=60): zainod_ch.close() lwd_ch.close() + def _wait_for_zebra_tip(self, expected_height, timeout=30): + """Wait until Zebrad reports the expected tip height.""" + zebra = self.nodes[0] + deadline = time.time() + timeout + last_height = None + while time.time() < deadline: + last_height = zebra.getblockcount() + if last_height >= expected_height: + return + time.sleep(1) + + raise AssertionError( + "Zebrad did not reach height %d within %ds (last height %s)" + % (expected_height, timeout, last_height) + ) + def run_test(self): zainod_ch = grpc.insecure_channel(f"127.0.0.1:{zaino_grpc_port(0)}") lwd_ch = grpc.insecure_channel(f"127.0.0.1:{self.lwds[0]}") @@ -347,30 +786,68 @@ def run_test(self): print("Testing GetAddressUtxosStream...") self.test_get_address_utxos_stream(zs, ls) - # Shielded transaction tests — block 101 contains the z_sendmany tx. - print("Testing GetBlock (shielded)...") - self.test_get_block_shielded(zs, ls) + # ---- Shielded transaction tests (blocks 202–205) ---- + + print("Testing GetBlock (t→Sapling, block %d)..." % self.t_to_sapling_height) + self.test_get_block_t_to_sapling(zs, ls) - print("Testing GetBlockNullifiers (shielded)...") - self.test_get_block_nullifiers_shielded(zs, ls) + print("Testing GetBlockNullifiers (t→Sapling)...") + self.test_get_block_nullifiers_t_to_sapling(zs, ls) - print("Testing GetBlockRange (shielded)...") + print("Testing GetBlockRange (shielded range %d–%d)..." + % (self.t_to_sapling_height, self.orchard_to_orchard_height)) self.test_get_block_range_shielded(zs, ls) - print("Testing GetTransaction (shielded)...") - self.test_get_transaction_shielded(zs, ls) + print("Testing GetTransaction (t→Sapling)...") + self.test_get_transaction_t_to_sapling(zs, ls) + + print("Testing GetTreeState (after t→Sapling, block %d)..." % self.t_to_sapling_height) + self.test_get_tree_state_after_t_to_sapling(zs, ls) + + print("Testing GetBlock (t→Orchard, block %d)..." % self.t_to_orchard_height) + self.test_get_block_t_to_orchard(zs, ls) + + print("Testing GetTransaction (t→Orchard)...") + self.test_get_transaction_t_to_orchard(zs, ls) - print("Testing GetTreeState (after Sapling output)...") - self.test_get_tree_state_sapling(zs, ls) + print("Testing GetTreeState (after t→Orchard, block %d)..." % self.t_to_orchard_height) + self.test_get_tree_state_after_t_to_orchard(zs, ls) - print("Testing GetBlock (Orchard coinbase)...") - self.test_get_block_orchard(zs, ls) + print("Testing GetBlock (Sapling→Sapling, block %d)..." % self.sapling_to_sapling_height) + self.test_get_block_sapling_to_sapling(zs, ls) - print("Testing GetTransaction (Orchard coinbase)...") - self.test_get_transaction_orchard(zs, ls) + print("Testing GetTransaction (Sapling→Sapling)...") + self.test_get_transaction_sapling_to_sapling(zs, ls) - print("Testing GetTreeState (after Orchard coinbase)...") - self.test_get_tree_state_orchard(zs, ls) + print("Testing GetBlock (Orchard→Orchard, block %d)..." % self.orchard_to_orchard_height) + self.test_get_block_orchard_to_orchard(zs, ls) + + print("Testing GetTransaction (Orchard→Orchard)...") + self.test_get_transaction_orchard_to_orchard(zs, ls) + + print("Testing GetBlock (Sapling→Orchard, block %d)..." % self.sapling_to_orchard_height) + self.test_get_block_sapling_to_orchard(zs, ls) + + print("Testing GetTransaction (Sapling→Orchard)...") + self.test_get_transaction_sapling_to_orchard(zs, ls) + + print("Testing GetBlock (Orchard→Sapling, block %d)..." % self.orchard_to_sapling_height) + self.test_get_block_orchard_to_sapling(zs, ls) + + print("Testing GetTransaction (Orchard→Sapling)...") + self.test_get_transaction_orchard_to_sapling(zs, ls) + + print("Testing GetBlock (Sapling→t, block %d)..." % self.sapling_to_t_height) + self.test_get_block_sapling_to_t(zs, ls) + + print("Testing GetTransaction (Sapling→t)...") + self.test_get_transaction_sapling_to_t(zs, ls) + + print("Testing GetBlock (Orchard→t, block %d)..." % self.orchard_to_t_height) + self.test_get_block_orchard_to_t(zs, ls) + + print("Testing GetTransaction (Orchard→t)...") + self.test_get_transaction_orchard_to_t(zs, ls) # TODO: GetMempoolTx and GetMempoolStream require submitting a transaction # to the mempool via the mempool RPC. @@ -660,36 +1137,48 @@ def test_get_address_utxos_stream(self, zs, ls): assert_equal(z_u.height, l_u.height) # ------------------------------------------------------------------------- - # Shielded transaction tests + # Shielded transaction tests (blocks 202–208) # - # Block 101 contains the z_sendmany confirmation transaction. That tx - # has both a Sapling output (to sapling_addr) and a transparent output - # (to taddr), so the compact block's vtx must be non-empty and identical - # across both implementations. + # Every block in the shielded range has at least one shielded component + # (Sapling spend/output or Orchard action), so vtx must be non-empty and + # identical across both Zainod and Lightwalletd. # ------------------------------------------------------------------------- - def test_get_block_shielded(self, zs, ls): - """Block with a Sapling output must have matching, non-empty vtx.""" - req = service_pb2.BlockID(height=self.sapling_tx_height, hash=b"") + def _assert_shielded_block_match(self, zs, ls, height, label): + req = service_pb2.BlockID(height=height, hash=b"") z = _normalize_shielded_compact_block(zs.GetBlock(req)) l = _normalize_shielded_compact_block(ls.GetBlock(req)) - assert_true(len(z.vtx) > 0, "Zainod returned empty vtx for shielded block") - assert_true(len(l.vtx) > 0, "Lightwalletd returned empty vtx for shielded block") + assert_true(len(z.vtx) > 0, + "Zainod returned empty vtx for %s block at height %d" % (label, height)) + assert_true(len(l.vtx) > 0, + "Lightwalletd returned empty vtx for %s block at height %d" % (label, height)) assert_equal(z, l) - def test_get_block_nullifiers_shielded(self, zs, ls): - req = service_pb2.BlockID(height=self.sapling_tx_height, hash=b"") + def _assert_transaction_match(self, zs, ls, txid_hex, expected_height): + txid_bytes = bytes.fromhex(txid_hex)[::-1] + req = service_pb2.TxFilter(hash=txid_bytes) + z = zs.GetTransaction(req) + l = ls.GetTransaction(req) + assert_equal(z.data, l.data) + assert_equal(z.height, l.height) + assert_equal(z.height, expected_height) + + # -- t → Sapling (block 202) -- + + def test_get_block_t_to_sapling(self, zs, ls): + """Block with a t→Sapling output must have matching, non-empty vtx.""" + self._assert_shielded_block_match(zs, ls, self.t_to_sapling_height, 't→Sapling') + + def test_get_block_nullifiers_t_to_sapling(self, zs, ls): + req = service_pb2.BlockID(height=self.t_to_sapling_height, hash=b"") z = _normalize_shielded_compact_block(zs.GetBlockNullifiers(req)) l = _normalize_shielded_compact_block(ls.GetBlockNullifiers(req)) assert_equal(z, l) def test_get_block_range_shielded(self, zs, ls): - """All blocks in a shielded range must have matching, non-empty vtx. - Uses blocks sapling_tx_height-5 through sapling_tx_height (96-101) so - the range covers both Orchard-coinbase blocks and the Sapling-output block - without exceeding the chain tip.""" - start = self.sapling_tx_height - 5 # = 96 (Orchard coinbase) - end = self.sapling_tx_height # = 101 (Sapling output tx) + """All blocks in the shielded range (202–208) must have matching, non-empty vtx.""" + start = self.t_to_sapling_height # 202 + end = self.orchard_to_t_height # 208 req = service_pb2.BlockRange( start=service_pb2.BlockID(height=start, hash=b""), end=service_pb2.BlockID(height=end, hash=b""), @@ -698,23 +1187,21 @@ def test_get_block_range_shielded(self, zs, ls): l_blocks = [_normalize_shielded_compact_block(b) for b in _collect_stream(ls.GetBlockRange(req))] assert_equal(len(z_blocks), len(l_blocks)) for z_b, l_b in zip(z_blocks, l_blocks): - assert_true(len(z_b.vtx) > 0, "Zainod returned empty vtx for shielded block at height %d" % z_b.height) - assert_true(len(l_b.vtx) > 0, "Lightwalletd returned empty vtx for shielded block at height %d" % l_b.height) + assert_true(len(z_b.vtx) > 0, + "Zainod returned empty vtx for shielded block at height %d" % z_b.height) + assert_true(len(l_b.vtx) > 0, + "Lightwalletd returned empty vtx for shielded block at height %d" % l_b.height) assert_equal(z_b, l_b) - def test_get_transaction_shielded(self, zs, ls): - """Shielded transaction bytes and height must match across both indexers.""" - txid_bytes = bytes.fromhex(self.sapling_txid)[::-1] - req = service_pb2.TxFilter(hash=txid_bytes) - z = zs.GetTransaction(req) - l = ls.GetTransaction(req) - assert_equal(z.data, l.data) - assert_equal(z.height, l.height) - assert_equal(z.height, self.sapling_tx_height) + def test_get_transaction_t_to_sapling(self, zs, ls): + """t→Sapling transaction bytes and height must match across both indexers.""" + self._assert_transaction_match( + zs, ls, self.t_to_sapling_txid, self.t_to_sapling_height) - def test_get_tree_state_sapling(self, zs, ls): - """After a Sapling output tx the Sapling tree must be non-empty and identical.""" - req = service_pb2.BlockID(height=self.sapling_tx_height, hash=b"") + def test_get_tree_state_after_t_to_sapling(self, zs, ls): + """After t→Sapling (block 202) both trees must be non-empty. + Orchard was seeded by the coinbase at block 201; Sapling by this tx.""" + req = service_pb2.BlockID(height=self.t_to_sapling_height, hash=b"") z = zs.GetTreeState(req) l = ls.GetTreeState(req) assert_equal(z.network, l.network) @@ -722,32 +1209,27 @@ def test_get_tree_state_sapling(self, zs, ls): assert_equal(z.hash, l.hash) assert_equal(z.saplingTree, l.saplingTree) assert_equal(z.orchardTree, l.orchardTree) - assert_true(len(z.saplingTree) > 0, "Sapling tree is empty after Sapling output tx") - - def test_get_block_orchard(self, zs, ls): - """Block with Orchard coinbase must have matching, non-empty vtx.""" - req = service_pb2.BlockID(height=self.orchard_block_height, hash=b"") - z = _normalize_shielded_compact_block(zs.GetBlock(req)) - l = _normalize_shielded_compact_block(ls.GetBlock(req)) - assert_true(len(z.vtx) > 0, "Zainod returned empty vtx for Orchard coinbase block") - assert_true(len(l.vtx) > 0, "Lightwalletd returned empty vtx for Orchard coinbase block") - assert_equal(z, l) - - def test_get_transaction_orchard(self, zs, ls): - """Orchard coinbase transaction bytes and height must match across both indexers.""" - txid_bytes = bytes.fromhex(self.orchard_coinbase_txid)[::-1] - req = service_pb2.TxFilter(hash=txid_bytes) - z = zs.GetTransaction(req) - l = ls.GetTransaction(req) - assert_equal(z.data, l.data) - assert_equal(z.height, l.height) - assert_equal(z.height, self.orchard_block_height) - - def test_get_tree_state_orchard(self, zs, ls): - """After the first Orchard coinbase the Orchard tree must be non-empty. - The Sapling tree is expected to be empty at this height because Sapling - outputs do not appear until block 101 (the z_sendmany confirmation).""" - req = service_pb2.BlockID(height=self.orchard_block_height, hash=b"") + assert_true(len(z.saplingTree) > 0, + "Sapling tree is empty after t→Sapling tx at height %d" % self.t_to_sapling_height) + assert_true(len(z.orchardTree) > 0, + "Orchard tree is empty at height %d (should have been seeded by coinbase at 201)" + % self.t_to_sapling_height) + + # -- t → Orchard (block 201) -- + + def test_get_block_t_to_orchard(self, zs, ls): + """Block with a t→Orchard output must have matching, non-empty vtx.""" + self._assert_shielded_block_match(zs, ls, self.t_to_orchard_height, 't→Orchard') + + def test_get_transaction_t_to_orchard(self, zs, ls): + """t→Orchard transaction bytes and height must match across both indexers.""" + self._assert_transaction_match( + zs, ls, self.t_to_orchard_txid, self.t_to_orchard_height) + + def test_get_tree_state_after_t_to_orchard(self, zs, ls): + """After t→Orchard coinbase (block 201) the Orchard tree must be non-empty. + The Sapling tree is still empty at this height; it is seeded at block 202.""" + req = service_pb2.BlockID(height=self.t_to_orchard_height, hash=b"") z = zs.GetTreeState(req) l = ls.GetTreeState(req) assert_equal(z.network, l.network) @@ -755,7 +1237,80 @@ def test_get_tree_state_orchard(self, zs, ls): assert_equal(z.hash, l.hash) assert_equal(z.saplingTree, l.saplingTree) assert_equal(z.orchardTree, l.orchardTree) - assert_true(len(z.orchardTree) > 0, "Orchard tree is empty after Orchard coinbase") + assert_true(len(z.orchardTree) > 0, + "Orchard tree is empty after t→Orchard coinbase at height %d" % self.t_to_orchard_height) + + # -- Sapling → Sapling (block 204) -- + + def test_get_block_sapling_to_sapling(self, zs, ls): + """Block with a Sapling→Sapling spend must have matching, non-empty vtx.""" + self._assert_shielded_block_match( + zs, ls, self.sapling_to_sapling_height, 'Sapling→Sapling') + + def test_get_transaction_sapling_to_sapling(self, zs, ls): + """Sapling→Sapling transaction bytes and height must match across both indexers.""" + self._assert_transaction_match( + zs, ls, self.sapling_to_sapling_txid, self.sapling_to_sapling_height) + + # -- Orchard → Orchard (block 205) -- + + def test_get_block_orchard_to_orchard(self, zs, ls): + """Block with an Orchard→Orchard spend must have matching, non-empty vtx.""" + self._assert_shielded_block_match( + zs, ls, self.orchard_to_orchard_height, 'Orchard→Orchard') + + def test_get_transaction_orchard_to_orchard(self, zs, ls): + """Orchard→Orchard transaction bytes and height must match across both indexers.""" + self._assert_transaction_match( + zs, ls, self.orchard_to_orchard_txid, self.orchard_to_orchard_height) + + # -- Sapling → Orchard (block 203) -- + + def test_get_block_sapling_to_orchard(self, zs, ls): + """Block with a Sapling→Orchard (cross-pool) tx must have matching, non-empty vtx.""" + self._assert_shielded_block_match( + zs, ls, self.sapling_to_orchard_height, 'Sapling→Orchard') + + def test_get_transaction_sapling_to_orchard(self, zs, ls): + """Sapling→Orchard transaction bytes and height must match across both indexers.""" + self._assert_transaction_match( + zs, ls, self.sapling_to_orchard_txid, self.sapling_to_orchard_height) + + # -- Orchard → Sapling (block 206) -- + + def test_get_block_orchard_to_sapling(self, zs, ls): + """Block with an Orchard→Sapling (cross-pool) tx must have matching, non-empty vtx.""" + self._assert_shielded_block_match( + zs, ls, self.orchard_to_sapling_height, 'Orchard→Sapling') + + def test_get_transaction_orchard_to_sapling(self, zs, ls): + """Orchard→Sapling transaction bytes and height must match across both indexers.""" + self._assert_transaction_match( + zs, ls, self.orchard_to_sapling_txid, self.orchard_to_sapling_height) + + # -- Sapling → t (block 207) -- + + def test_get_block_sapling_to_t(self, zs, ls): + """Block with a Sapling→t tx must have matching, non-empty vtx (Sapling spend present).""" + self._assert_shielded_block_match( + zs, ls, self.sapling_to_t_height, 'Sapling→t') + + def test_get_transaction_sapling_to_t(self, zs, ls): + """Sapling→t transaction bytes and height must match across both indexers.""" + self._assert_transaction_match( + zs, ls, self.sapling_to_t_txid, self.sapling_to_t_height) + + # -- Orchard → t (block 208) -- + + def test_get_block_orchard_to_t(self, zs, ls): + """Block with an Orchard→t tx must have matching, non-empty vtx (Orchard action present).""" + self._assert_shielded_block_match( + zs, ls, self.orchard_to_t_height, 'Orchard→t') + + def test_get_transaction_orchard_to_t(self, zs, ls): + """Orchard→t transaction bytes and height must match across both indexers.""" + self._assert_transaction_match( + zs, ls, self.orchard_to_t_txid, self.orchard_to_t_height) if __name__ == '__main__': diff --git a/qa/rpc-tests/test_framework/config.py b/qa/rpc-tests/test_framework/config.py index 4251a5c2b..63f1657f0 100644 --- a/qa/rpc-tests/test_framework/config.py +++ b/qa/rpc-tests/test_framework/config.py @@ -12,6 +12,7 @@ class ZebraArgs: activation_heights: dict[str, int] = field(default_factory=dict) funding_streams: list[dict[str, Any]] = field(default_factory=list) lockbox_disbursements: list[dict[str, Any]] = field(default_factory=list) + checkpoints: Any = None def __add__(self, other): if other is None: @@ -26,6 +27,8 @@ def __add__(self, other): self.funding_streams = other.funding_streams if other.lockbox_disbursements != defaults.lockbox_disbursements: self.lockbox_disbursements = other.lockbox_disbursements + if other.checkpoints != defaults.checkpoints: + self.checkpoints = other.checkpoints return self @@ -50,6 +53,10 @@ def update(self, config_file): config_file['network']['testnet_parameters']['funding_streams'] = extra_args.funding_streams config_file['network']['testnet_parameters']['activation_heights'] = extra_args.activation_heights config_file['network']['testnet_parameters']['lockbox_disbursements'] = extra_args.lockbox_disbursements + if extra_args.checkpoints is not None: + config_file['network']['testnet_parameters']['checkpoints'] = extra_args.checkpoints + else: + config_file['network']['testnet_parameters'].pop('checkpoints', None) return config_file @@ -59,6 +66,7 @@ class ZainoConfig: grpc_listen_address: str = "127.0.0.1:0" validator_grpc_listen_address: str = "127.0.0.1:0" validator_jsonrpc_listen_address: str = "127.0.0.1:0" + storage_database_path: str | None = None def update(self, config_file): # Base config updates @@ -66,5 +74,9 @@ def update(self, config_file): config_file['grpc_settings']['grpc_listen_address'] = self.grpc_listen_address config_file['validator_settings']['validator_grpc_listen_address'] = self.validator_grpc_listen_address config_file['validator_settings']['validator_jsonrpc_listen_address'] = self.validator_jsonrpc_listen_address + if self.storage_database_path is not None: + config_file.setdefault('storage', {}) + config_file['storage'].setdefault('database', {}) + config_file['storage']['database']['path'] = self.storage_database_path return config_file diff --git a/qa/rpc-tests/test_framework/util.py b/qa/rpc-tests/test_framework/util.py index d77d78c84..7ce61739c 100644 --- a/qa/rpc-tests/test_framework/util.py +++ b/qa/rpc-tests/test_framework/util.py @@ -484,10 +484,9 @@ def init_persistent(cache_behavior): # Copy in per-node wallet data wallet_tgz_filename = os.path.join(cache_path, "node"+str(i)+"_wallet.tar.gz") - if not os.path.exists(wallet_tgz_filename): - raise Exception('Wallet cache missing for cache behavior %s, node %d' % (cache_behavior, i)) - with tarfile.open(wallet_tgz_filename, "r:gz") as wallet_tgz_file: - tarfile_extractall(wallet_tgz_file, os.path.join(to_dir, "wallet.dat")) + if os.path.exists(wallet_tgz_filename): + with tarfile.open(wallet_tgz_filename, "r:gz") as wallet_tgz_file: + tarfile_extractall(wallet_tgz_file, os.path.join(to_dir, "wallet.dat")) # Copy in per-node wallet config and update zcash.conf to set the # clock offsets correctly. @@ -554,23 +553,27 @@ def persist_node_caches(tmpdir, cache_behavior, num_nodes): node_path = os.path.join(tmpdir, 'node' + str(i), 'regtest') # Clean up the files that we don't want to persist - os.remove(os.path.join(node_path, 'debug.log')) - os.remove(os.path.join(node_path, 'db.log')) - os.remove(os.path.join(node_path, 'peers.dat')) + for filename in ('debug.log', 'db.log', 'peers.dat'): + path = os.path.join(node_path, filename) + if os.path.exists(path): + os.remove(path) # Persist the wallet file for the node to the cache + wallet_path = os.path.join(node_path, 'wallet.dat') wallet_tgz_filename = os.path.join(cache_path, 'node' + str(i) + '_wallet.tar.gz') - with tarfile.open(wallet_tgz_filename, "w:gz") as wallet_tgz_file: - wallet_tgz_file.add(os.path.join(node_path, 'wallet.dat'), arcname="") + if os.path.exists(wallet_path): + with tarfile.open(wallet_tgz_filename, "w:gz") as wallet_tgz_file: + wallet_tgz_file.add(wallet_path, arcname="") # Persist the chain data and cache config just once; it will be reused # for all of the nodes when loading from the cache. if i == 0: # Move the wallet.dat file out of the way so that it doesn't # pollute the chain cache tarfile - shutil.move( - os.path.join(node_path, 'wallet.dat'), - os.path.join(tmpdir, 'wallet.dat.0')) + if os.path.exists(wallet_path): + shutil.move( + wallet_path, + os.path.join(tmpdir, 'wallet.dat.0')) # Store the current time so that we can correctly set the clock # offset when restoring from the cache. @@ -586,9 +589,11 @@ def persist_node_caches(tmpdir, cache_behavior, num_nodes): chain_cache_file.add(node_path, arcname="") # Move the wallet file back into place - shutil.move( - os.path.join(tmpdir, 'wallet.dat.0'), - os.path.join(node_path, 'wallet.dat')) + wallet_tmp = os.path.join(tmpdir, 'wallet.dat.0') + if os.path.exists(wallet_tmp): + shutil.move( + wallet_tmp, + wallet_path) def _rpchost_to_args(rpchost): @@ -1168,7 +1173,8 @@ def update_zainod_conf(datadir, rpc_port, indexer_port, zaino_rpc_port, zaino_gr json_rpc_listen_address='127.0.0.1:'+str(zaino_rpc_port), grpc_listen_address='127.0.0.1:'+str(zaino_grpc_port), validator_grpc_listen_address='127.0.0.1:'+str(indexer_port), - validator_jsonrpc_listen_address='127.0.0.1:'+str(rpc_port) + validator_jsonrpc_listen_address='127.0.0.1:'+str(rpc_port), + storage_database_path=os.path.join(datadir, 'db'), ) config_file = zaino_config.update(config_file) @@ -1324,12 +1330,12 @@ def zcashd_rpc_url(i): return "http://%s:%s@127.0.0.1:%d" % (ZCASHD_RPC_USER, ZCASHD_RPC_PASSWORD, zcashd_rpc_port(i)) -def write_zcash_conf(datadir, node_rpc_port, node_p2p_port, miner_address=None): +def write_zcash_conf(datadir, node_rpc_port, node_p2p_port, miner_address=None, activation_heights=None): """Write a zcash.conf for a standalone regtest zcashd node. - All network upgrades are activated from block 1. Heartwood (ZIP 213) - enables shielded coinbase; NU5 enables Orchard. No addnode is written - because blocks are pushed to zebrad via submitblock rather than P2P. + By default all network upgrades are activated from block 1 to preserve the + historical behavior of the standalone helper. Tests can override the + activation heights to match a validator's regtest configuration. miner_address, if given, sets the coinbase recipient for `generate` calls. setmineraddress has been removed from this zcashd version, so the address @@ -1346,22 +1352,29 @@ def write_zcash_conf(datadir, node_rpc_port, node_p2p_port, miner_address=None): f.write("rpcpassword=%s\n" % ZCASHD_RPC_PASSWORD) if miner_address is not None: f.write("mineraddress=%s\n" % miner_address) - # Activate all upgrades from block 1 to match zebrad Regtest defaults. - f.write("nuparams=5ba81b19:1\n") # Overwinter - f.write("nuparams=76b809bb:1\n") # Sapling - f.write("nuparams=2bb40e60:1\n") # Blossom - f.write("nuparams=f5b9230b:1\n") # Heartwood (ZIP 213: shielded coinbase) - f.write("nuparams=e9ff75a6:1\n") # Canopy - f.write("nuparams=c2d6d0b4:1\n") # NU5 (Orchard) - f.write("nuparams=c8e71055:1\n") # NU6 + f.write("minetolocalwallet=0\n") + if activation_heights is None: + activation_heights = { + '5ba81b19': 1, # Overwinter + '76b809bb': 1, # Sapling + '2bb40e60': 1, # Blossom + 'f5b9230b': 1, # Heartwood + 'e9ff75a6': 1, # Canopy + 'c2d6d0b4': 1, # NU5 + 'c8e71055': 1, # NU6 + } + for branch_id, height in activation_heights.items(): + f.write("nuparams=%s:%d\n" % (branch_id, height)) # Re-enable the deprecated getnewaddress RPC used to obtain a t-address # for transparent coinbase mining. f.write("allowdeprecated=getnewaddress\n") + f.write("allowdeprecated=z_getnewaddress\n") + f.write("regtestwalletsetbestchaineveryblock=1\n") f.write("i-am-aware-zcashd-will-be-replaced-by-zebrad-and-zallet-in-2025=1\n") return conf_path -def start_zcashd_node(i, dirname, miner_address=None, binary=None, stderr=None): +def start_zcashd_node(i, dirname, miner_address=None, activation_heights=None, binary=None, stderr=None): """Start a standalone regtest zcashd node and return an RPC proxy.""" if binary is None: binary = zcashd_node_binary() @@ -1371,6 +1384,7 @@ def start_zcashd_node(i, dirname, miner_address=None, binary=None, stderr=None): zcashd_rpc_port(i), zcashd_p2p_port(i), miner_address=miner_address, + activation_heights=activation_heights, ) args = [binary, "-conf=" + conf, "-datadir=" + datadir] zcashd_node_processes[i] = subprocess.Popen(args, stderr=stderr) From db0fa82704ff90177c49201cf8d02fa168a1c943 Mon Sep 17 00:00:00 2001 From: Pacu Date: Thu, 23 Apr 2026 13:54:20 -0300 Subject: [PATCH 06/15] Refactor grpc comparison test flow for readability --- qa/rpc-tests/grpc_comparison.py | 335 +++++++++++++------------------- 1 file changed, 134 insertions(+), 201 deletions(-) diff --git a/qa/rpc-tests/grpc_comparison.py b/qa/rpc-tests/grpc_comparison.py index bd60da742..c341bacf7 100755 --- a/qa/rpc-tests/grpc_comparison.py +++ b/qa/rpc-tests/grpc_comparison.py @@ -89,6 +89,7 @@ _GRPC_STAGE1_CACHE_NAME = 'grpc_comparison_stage1' _GRPC_ACTIVATION_HEIGHT = 2 _GRPC_CACHE_VERSION = 7 +_GRPC_STAGE1_HEIGHT = 202 _GRPC_ZCASHD_NUPARAMS = { '5ba81b19': 1, # Overwinter '76b809bb': 1, # Sapling @@ -125,14 +126,8 @@ def _write_checkpoint_file(node, max_height, path): f.write("%d %s\n" % (height, node.getblockhash(height))) -def _treestate_has_final_state(treestate, pool_name): - pool = treestate.get(pool_name, {}) - commitments = pool.get("commitments", {}) - final_state = commitments.get("finalState") - return isinstance(final_state, str) and len(final_state) > 0 - - def _grpc_metadata_fields(): + """Metadata persisted alongside the cached fixture chain.""" return ( 'taddr', 'sapling_ua0', 'sapling_ua_aux', 'orchard_ua1', 'orchard_ua_aux', @@ -239,15 +234,15 @@ def __init__(self): self.orchard_addr1 = None # bare Orchard receiver of account 3 (receives at blocks 205, 203) self._orchard_aux_addr = None # Orchard receiver used for the t→Orchard case and later Orchard spends self.t_to_sapling_txid = None - self.t_to_sapling_height = None # 202 + self.t_to_sapling_height = None # 201 self.t_to_orchard_txid = None - self.t_to_orchard_height = None # 203 + self.t_to_orchard_height = None # 205 self.sapling_to_sapling_txid = None self.sapling_to_sapling_height = None # 204 self.orchard_to_orchard_txid = None - self.orchard_to_orchard_height = None # 205 + self.orchard_to_orchard_height = None # 206 self.sapling_to_orchard_txid = None - self.sapling_to_orchard_height = None # 206 + self.sapling_to_orchard_height = None # 203 self.orchard_to_sapling_txid = None self.orchard_to_sapling_height = None # 207 self.sapling_to_t_txid = None @@ -274,6 +269,7 @@ def add_options(self, parser): ) def setup_chain(self): + """Restore the final cache, fall back to the reusable stage-1 cache, or start clean.""" cache_path = persistent_cache_path(_GRPC_CACHE_NAME) if not self.options.fresh and persistent_cache_exists(_GRPC_CACHE_NAME): try: @@ -370,6 +366,22 @@ def _wait_for_build_nodes_height(self, build_nodes, expected_height, timeout=30) % (expected_height, heights) ) + def _restart_build_node(self, build_nodes, index): + """Restart a standalone builder node so its wallet reloads note state from disk.""" + stop_zcashd_node(index, build_nodes[index]) + build_nodes[index] = start_zcashd_node( + index, + self.options.tmpdir, + activation_heights=_GRPC_ZCASHD_NUPARAMS, + ) + return build_nodes[index] + + def _mine_and_sync_build_nodes(self, miner, build_nodes): + """Mine one block on the canonical builder node and submit it to the follower node.""" + miner.generate(1) + _submit_missing_blocks(build_nodes[0], build_nodes[1]) + return build_nodes[0].getblockcount() + def _persist_stage1_cache(self, build_nodes): print("grpc_comparison: persisting stage-1 wallet cache") for index, node in enumerate(build_nodes): @@ -396,10 +408,17 @@ def _skip_runtime_files(tarinfo): self._write_cached_metadata(cache_path) build_nodes = self._start_build_nodes() - self._wait_for_build_nodes_height(build_nodes, 202) + self._wait_for_build_nodes_height(build_nodes, _GRPC_STAGE1_HEIGHT) return build_nodes def _build_stage1_with_wallet_nodes(self): + """ + Build the reusable prefix of the fixture chain. + + Stage 1 does the slow work: mine 200 transparent blocks and create two + independent Sapling note pools. Subsequent reruns can resume from this + point without repeating the expensive proof generation. + """ build_nodes = self._start_build_nodes() node0, node1 = build_nodes @@ -443,15 +462,11 @@ def _build_stage1_with_wallet_nodes(self): 'AllowRevealedSenders', ), ) - node0.generate(1) - _submit_missing_blocks(node0, node1) - self.t_to_sapling_height = node0.getblockcount() # 201 + self.t_to_sapling_height = self._mine_and_sync_build_nodes(node0, build_nodes) # 201 print("grpc_comparison: restarting primary builder wallet before auxiliary Sapling funding") - stop_zcashd_node(0, node0) - node0 = start_zcashd_node(0, self.options.tmpdir, activation_heights=_GRPC_ZCASHD_NUPARAMS) - build_nodes[0] = node0 - assert_equal(node0.getblockcount(), 201) + node0 = self._restart_build_node(build_nodes, 0) + assert_equal(node0.getblockcount(), self.t_to_sapling_height) print("grpc_comparison: funding auxiliary Sapling pool from transparent coinbase") wait_and_assert_operationid_status( @@ -464,17 +479,16 @@ def _build_stage1_with_wallet_nodes(self): 'AllowRevealedSenders', ), ) - node0.generate(1) - _submit_missing_blocks(node0, node1) - assert_equal(node0.getblockcount(), 202) + assert_equal(self._mine_and_sync_build_nodes(node0, build_nodes), _GRPC_STAGE1_HEIGHT) return build_nodes def _complete_chain_from_stage1(self, build_nodes): + """Build the shielded transaction range used by the parity assertions.""" node0, node1 = build_nodes - assert_equal(node0.getblockcount(), 202) + assert_equal(node0.getblockcount(), _GRPC_STAGE1_HEIGHT) _submit_missing_blocks(node0, node1) - assert_equal(node1.getblockcount(), 202) + assert_equal(node1.getblockcount(), _GRPC_STAGE1_HEIGHT) fund = Decimal('0.1') amount = Decimal('0.01') @@ -491,9 +505,7 @@ def _complete_chain_from_stage1(self, build_nodes): 'AllowRevealedAmounts', ), ) - node0.generate(1) - _submit_missing_blocks(node0, node1) - self.sapling_to_orchard_height = node0.getblockcount() # 203 + self.sapling_to_orchard_height = self._mine_and_sync_build_nodes(node0, build_nodes) # 203 print("grpc_comparison: building Sapling -> Sapling transaction") self.sapling_to_sapling_txid = wait_and_assert_operationid_status( @@ -505,9 +517,7 @@ def _complete_chain_from_stage1(self, build_nodes): ZIP_317_FEE, ), ) - node0.generate(1) - _submit_missing_blocks(node0, node1) - self.sapling_to_sapling_height = node0.getblockcount() # 204 + self.sapling_to_sapling_height = self._mine_and_sync_build_nodes(node0, build_nodes) # 204 orchard_fee = conventional_fee(4) orchard_amount = Decimal('12.5') - orchard_fee @@ -522,14 +532,10 @@ def _complete_chain_from_stage1(self, build_nodes): 'NoPrivacy', ), ) - node0.generate(1) - _submit_missing_blocks(node0, node1) - self.t_to_orchard_height = node0.getblockcount() # 205 + self.t_to_orchard_height = self._mine_and_sync_build_nodes(node0, build_nodes) # 205 # Restart the Orchard-owning wallet after funding lands so it reloads # its Orchard note state before the first Orchard spend. - stop_zcashd_node(1, node1) - node1 = start_zcashd_node(1, self.options.tmpdir, activation_heights=_GRPC_ZCASHD_NUPARAMS) - build_nodes[1] = node1 + node1 = self._restart_build_node(build_nodes, 1) assert_equal(node1.getblockcount(), node0.getblockcount()) print("grpc_comparison: building Orchard -> Orchard transaction") @@ -543,13 +549,9 @@ def _complete_chain_from_stage1(self, build_nodes): ), ) _relay_raw_transaction(node1, node0, self.orchard_to_orchard_txid) - node0.generate(1) - _submit_missing_blocks(node0, node1) - self.orchard_to_orchard_height = node0.getblockcount() # 206 + self.orchard_to_orchard_height = self._mine_and_sync_build_nodes(node0, build_nodes) # 206 - stop_zcashd_node(1, node1) - node1 = start_zcashd_node(1, self.options.tmpdir, activation_heights=_GRPC_ZCASHD_NUPARAMS) - build_nodes[1] = node1 + node1 = self._restart_build_node(build_nodes, 1) assert_equal(node1.getblockcount(), node0.getblockcount()) print("grpc_comparison: building Orchard -> Sapling transaction") @@ -564,13 +566,9 @@ def _complete_chain_from_stage1(self, build_nodes): ), ) _relay_raw_transaction(node1, node0, self.orchard_to_sapling_txid) - node0.generate(1) - _submit_missing_blocks(node0, node1) - self.orchard_to_sapling_height = node0.getblockcount() # 207 + self.orchard_to_sapling_height = self._mine_and_sync_build_nodes(node0, build_nodes) # 207 - stop_zcashd_node(1, node1) - node1 = start_zcashd_node(1, self.options.tmpdir, activation_heights=_GRPC_ZCASHD_NUPARAMS) - build_nodes[1] = node1 + node1 = self._restart_build_node(build_nodes, 1) assert_equal(node1.getblockcount(), node0.getblockcount()) print("grpc_comparison: building Sapling -> transparent transaction") @@ -584,9 +582,7 @@ def _complete_chain_from_stage1(self, build_nodes): 'AllowRevealedRecipients', ), ) - node0.generate(1) - _submit_missing_blocks(node0, node1) - self.sapling_to_t_height = node0.getblockcount() # 208 + self.sapling_to_t_height = self._mine_and_sync_build_nodes(node0, build_nodes) # 208 print("grpc_comparison: building Orchard -> transparent transaction") self.orchard_to_t_txid = wait_and_assert_operationid_status( @@ -600,9 +596,7 @@ def _complete_chain_from_stage1(self, build_nodes): ), ) _relay_raw_transaction(node1, node0, self.orchard_to_t_txid) - node0.generate(1) - _submit_missing_blocks(node0, node1) - self.orchard_to_t_height = node0.getblockcount() # 209 + self.orchard_to_t_height = self._mine_and_sync_build_nodes(node0, build_nodes) # 209 def setup_nodes(self): # Match Zebra regtest defaults up to Canopy, and activate Orchard-era @@ -655,12 +649,8 @@ def setup_network(self, split=False): self._persist_framework_cache() self.txid = self.nodes[0].getblock("1")['tx'][0] - if self._chain_loaded_from_cache: - print("grpc_comparison: waiting for restored Zebrad tip before starting indexers") - self._wait_for_zebra_tip(self.orchard_to_t_height) - else: - print("grpc_comparison: waiting for restored Zebrad tip before starting indexers") - self._wait_for_zebra_tip(self.orchard_to_t_height) + print("grpc_comparison: waiting for restored Zebrad tip before starting indexers") + self._wait_for_zebra_tip(self.orchard_to_t_height) self.zainos = self.setup_indexers() self.lwds = self.setup_lightwalletds() @@ -711,143 +701,89 @@ def _wait_for_zebra_tip(self, expected_height, timeout=30): % (expected_height, timeout, last_height) ) + def _run_checks(self, checks): + """Run a sequence of labeled test helpers in order.""" + for label, method in checks: + print("Testing %s..." % label) + method() + def run_test(self): zainod_ch = grpc.insecure_channel(f"127.0.0.1:{zaino_grpc_port(0)}") lwd_ch = grpc.insecure_channel(f"127.0.0.1:{self.lwds[0]}") zs = service_pb2_grpc.CompactTxStreamerStub(zainod_ch) ls = service_pb2_grpc.CompactTxStreamerStub(lwd_ch) - print("Testing GetLightdInfo...") - self.test_get_lightd_info(zs, ls) - - print("Testing GetLatestBlock...") - self.test_get_latest_block(zs, ls) - - print("Testing GetBlock...") - self.test_get_block(zs, ls) - - print("Testing GetBlock (out of bounds)...") - self.test_get_block_out_of_bounds(zs, ls) - - print("Testing GetBlockNullifiers...") - self.test_get_block_nullifiers(zs, ls) - - print("Testing GetBlockRange (forward)...") - self.test_get_block_range(zs, ls) - - print("Testing GetBlockRange (reverse)...") - self.test_get_block_range_reverse(zs, ls) - - print("Testing GetBlockRange (out of bounds)...") - self.test_get_block_range_out_of_bounds(zs, ls) - - print("Testing GetBlockRangeNullifiers...") - self.test_get_block_range_nullifiers(zs, ls) - - print("Testing GetBlockRangeNullifiers (reverse)...") - self.test_get_block_range_nullifiers_reverse(zs, ls) - - print("Testing GetTransaction...") - self.test_get_transaction(zs, ls) - - print("Testing GetTaddressTxids (full range)...") - self.test_get_taddress_txids(zs, ls) - - print("Testing GetTaddressTxids (lower bound)...") - self.test_get_taddress_txids_lower(zs, ls) - - print("Testing GetTaddressTxids (upper bound)...") - self.test_get_taddress_txids_upper(zs, ls) - - print("Testing GetTaddressBalance...") - self.test_get_taddress_balance(zs, ls) - - print("Testing GetTaddressBalanceStream...") - self.test_get_taddress_balance_stream(zs, ls) - - print("Testing GetTreeState (by height)...") - self.test_get_tree_state_by_height(zs, ls) - - print("Testing GetTreeState (out of bounds)...") - self.test_get_tree_state_out_of_bounds(zs, ls) - - print("Testing GetLatestTreeState...") - self.test_get_latest_tree_state(zs, ls) - - print("Testing GetSubtreeRoots (sapling)...") - self.test_get_subtree_roots_sapling(zs, ls) - - print("Testing GetSubtreeRoots (orchard)...") - self.test_get_subtree_roots_orchard(zs, ls) - - print("Testing GetAddressUtxos...") - self.test_get_address_utxos(zs, ls) - - print("Testing GetAddressUtxosStream...") - self.test_get_address_utxos_stream(zs, ls) - - # ---- Shielded transaction tests (blocks 202–205) ---- - - print("Testing GetBlock (t→Sapling, block %d)..." % self.t_to_sapling_height) - self.test_get_block_t_to_sapling(zs, ls) - - print("Testing GetBlockNullifiers (t→Sapling)...") - self.test_get_block_nullifiers_t_to_sapling(zs, ls) - - print("Testing GetBlockRange (shielded range %d–%d)..." - % (self.t_to_sapling_height, self.orchard_to_orchard_height)) - self.test_get_block_range_shielded(zs, ls) - - print("Testing GetTransaction (t→Sapling)...") - self.test_get_transaction_t_to_sapling(zs, ls) - - print("Testing GetTreeState (after t→Sapling, block %d)..." % self.t_to_sapling_height) - self.test_get_tree_state_after_t_to_sapling(zs, ls) - - print("Testing GetBlock (t→Orchard, block %d)..." % self.t_to_orchard_height) - self.test_get_block_t_to_orchard(zs, ls) - - print("Testing GetTransaction (t→Orchard)...") - self.test_get_transaction_t_to_orchard(zs, ls) - - print("Testing GetTreeState (after t→Orchard, block %d)..." % self.t_to_orchard_height) - self.test_get_tree_state_after_t_to_orchard(zs, ls) - - print("Testing GetBlock (Sapling→Sapling, block %d)..." % self.sapling_to_sapling_height) - self.test_get_block_sapling_to_sapling(zs, ls) - - print("Testing GetTransaction (Sapling→Sapling)...") - self.test_get_transaction_sapling_to_sapling(zs, ls) - - print("Testing GetBlock (Orchard→Orchard, block %d)..." % self.orchard_to_orchard_height) - self.test_get_block_orchard_to_orchard(zs, ls) - - print("Testing GetTransaction (Orchard→Orchard)...") - self.test_get_transaction_orchard_to_orchard(zs, ls) - - print("Testing GetBlock (Sapling→Orchard, block %d)..." % self.sapling_to_orchard_height) - self.test_get_block_sapling_to_orchard(zs, ls) - - print("Testing GetTransaction (Sapling→Orchard)...") - self.test_get_transaction_sapling_to_orchard(zs, ls) - - print("Testing GetBlock (Orchard→Sapling, block %d)..." % self.orchard_to_sapling_height) - self.test_get_block_orchard_to_sapling(zs, ls) - - print("Testing GetTransaction (Orchard→Sapling)...") - self.test_get_transaction_orchard_to_sapling(zs, ls) - - print("Testing GetBlock (Sapling→t, block %d)..." % self.sapling_to_t_height) - self.test_get_block_sapling_to_t(zs, ls) - - print("Testing GetTransaction (Sapling→t)...") - self.test_get_transaction_sapling_to_t(zs, ls) - - print("Testing GetBlock (Orchard→t, block %d)..." % self.orchard_to_t_height) - self.test_get_block_orchard_to_t(zs, ls) - - print("Testing GetTransaction (Orchard→t)...") - self.test_get_transaction_orchard_to_t(zs, ls) + # Start with chain-wide parity checks on transparent and metadata APIs. + self._run_checks([ + ("GetLightdInfo", lambda: self.test_get_lightd_info(zs, ls)), + ("GetLatestBlock", lambda: self.test_get_latest_block(zs, ls)), + ("GetBlock", lambda: self.test_get_block(zs, ls)), + ("GetBlock (out of bounds)", lambda: self.test_get_block_out_of_bounds(zs, ls)), + ("GetBlockNullifiers", lambda: self.test_get_block_nullifiers(zs, ls)), + ("GetBlockRange (forward)", lambda: self.test_get_block_range(zs, ls)), + ("GetBlockRange (reverse)", lambda: self.test_get_block_range_reverse(zs, ls)), + ("GetBlockRange (out of bounds)", lambda: self.test_get_block_range_out_of_bounds(zs, ls)), + ("GetBlockRangeNullifiers", lambda: self.test_get_block_range_nullifiers(zs, ls)), + ("GetBlockRangeNullifiers (reverse)", lambda: self.test_get_block_range_nullifiers_reverse(zs, ls)), + ("GetTransaction", lambda: self.test_get_transaction(zs, ls)), + ("GetTaddressTxids (full range)", lambda: self.test_get_taddress_txids(zs, ls)), + ("GetTaddressTxids (lower bound)", lambda: self.test_get_taddress_txids_lower(zs, ls)), + ("GetTaddressTxids (upper bound)", lambda: self.test_get_taddress_txids_upper(zs, ls)), + ("GetTaddressBalance", lambda: self.test_get_taddress_balance(zs, ls)), + ("GetTaddressBalanceStream", lambda: self.test_get_taddress_balance_stream(zs, ls)), + ("GetTreeState (by height)", lambda: self.test_get_tree_state_by_height(zs, ls)), + ("GetTreeState (out of bounds)", lambda: self.test_get_tree_state_out_of_bounds(zs, ls)), + ("GetLatestTreeState", lambda: self.test_get_latest_tree_state(zs, ls)), + ("GetSubtreeRoots (sapling)", lambda: self.test_get_subtree_roots_sapling(zs, ls)), + ("GetSubtreeRoots (orchard)", lambda: self.test_get_subtree_roots_orchard(zs, ls)), + ("GetAddressUtxos", lambda: self.test_get_address_utxos(zs, ls)), + ("GetAddressUtxosStream", lambda: self.test_get_address_utxos_stream(zs, ls)), + ]) + + # Then walk the shielded fixture in chain order so each assertion lines + # up with the block narrative at the top of the file. + self._run_checks([ + ("GetBlock (t→Sapling, block %d)" % self.t_to_sapling_height, + lambda: self.test_get_block_t_to_sapling(zs, ls)), + ("GetBlockNullifiers (t→Sapling)", + lambda: self.test_get_block_nullifiers_t_to_sapling(zs, ls)), + ("GetBlockRange (shielded range %d–%d)" % (self.t_to_sapling_height, self.orchard_to_t_height), + lambda: self.test_get_block_range_shielded(zs, ls)), + ("GetTransaction (t→Sapling)", + lambda: self.test_get_transaction_t_to_sapling(zs, ls)), + ("GetTreeState (after t→Sapling, block %d)" % self.t_to_sapling_height, + lambda: self.test_get_tree_state_after_t_to_sapling(zs, ls)), + ("GetBlock (Sapling→Orchard, block %d)" % self.sapling_to_orchard_height, + lambda: self.test_get_block_sapling_to_orchard(zs, ls)), + ("GetTransaction (Sapling→Orchard)", + lambda: self.test_get_transaction_sapling_to_orchard(zs, ls)), + ("GetBlock (Sapling→Sapling, block %d)" % self.sapling_to_sapling_height, + lambda: self.test_get_block_sapling_to_sapling(zs, ls)), + ("GetTransaction (Sapling→Sapling)", + lambda: self.test_get_transaction_sapling_to_sapling(zs, ls)), + ("GetBlock (t→Orchard, block %d)" % self.t_to_orchard_height, + lambda: self.test_get_block_t_to_orchard(zs, ls)), + ("GetTransaction (t→Orchard)", + lambda: self.test_get_transaction_t_to_orchard(zs, ls)), + ("GetTreeState (after t→Orchard, block %d)" % self.t_to_orchard_height, + lambda: self.test_get_tree_state_after_t_to_orchard(zs, ls)), + ("GetBlock (Orchard→Orchard, block %d)" % self.orchard_to_orchard_height, + lambda: self.test_get_block_orchard_to_orchard(zs, ls)), + ("GetTransaction (Orchard→Orchard)", + lambda: self.test_get_transaction_orchard_to_orchard(zs, ls)), + ("GetBlock (Orchard→Sapling, block %d)" % self.orchard_to_sapling_height, + lambda: self.test_get_block_orchard_to_sapling(zs, ls)), + ("GetTransaction (Orchard→Sapling)", + lambda: self.test_get_transaction_orchard_to_sapling(zs, ls)), + ("GetBlock (Sapling→t, block %d)" % self.sapling_to_t_height, + lambda: self.test_get_block_sapling_to_t(zs, ls)), + ("GetTransaction (Sapling→t)", + lambda: self.test_get_transaction_sapling_to_t(zs, ls)), + ("GetBlock (Orchard→t, block %d)" % self.orchard_to_t_height, + lambda: self.test_get_block_orchard_to_t(zs, ls)), + ("GetTransaction (Orchard→t)", + lambda: self.test_get_transaction_orchard_to_t(zs, ls)), + ]) # TODO: GetMempoolTx and GetMempoolStream require submitting a transaction # to the mempool via the mempool RPC. @@ -1137,7 +1073,7 @@ def test_get_address_utxos_stream(self, zs, ls): assert_equal(z_u.height, l_u.height) # ------------------------------------------------------------------------- - # Shielded transaction tests (blocks 202–208) + # Shielded transaction tests (blocks 201–209) # # Every block in the shielded range has at least one shielded component # (Sapling spend/output or Orchard action), so vtx must be non-empty and @@ -1163,7 +1099,7 @@ def _assert_transaction_match(self, zs, ls, txid_hex, expected_height): assert_equal(z.height, l.height) assert_equal(z.height, expected_height) - # -- t → Sapling (block 202) -- + # -- t → Sapling (block 201) -- def test_get_block_t_to_sapling(self, zs, ls): """Block with a t→Sapling output must have matching, non-empty vtx.""" @@ -1199,8 +1135,9 @@ def test_get_transaction_t_to_sapling(self, zs, ls): zs, ls, self.t_to_sapling_txid, self.t_to_sapling_height) def test_get_tree_state_after_t_to_sapling(self, zs, ls): - """After t→Sapling (block 202) both trees must be non-empty. - Orchard was seeded by the coinbase at block 201; Sapling by this tx.""" + """After t→Sapling (block 201) Sapling must be non-empty. + Orchard tree state is already initialized on this chain layout, so we + only assert parity and Sapling population here.""" req = service_pb2.BlockID(height=self.t_to_sapling_height, hash=b"") z = zs.GetTreeState(req) l = ls.GetTreeState(req) @@ -1211,11 +1148,8 @@ def test_get_tree_state_after_t_to_sapling(self, zs, ls): assert_equal(z.orchardTree, l.orchardTree) assert_true(len(z.saplingTree) > 0, "Sapling tree is empty after t→Sapling tx at height %d" % self.t_to_sapling_height) - assert_true(len(z.orchardTree) > 0, - "Orchard tree is empty at height %d (should have been seeded by coinbase at 201)" - % self.t_to_sapling_height) - # -- t → Orchard (block 201) -- + # -- t → Orchard (block 205) -- def test_get_block_t_to_orchard(self, zs, ls): """Block with a t→Orchard output must have matching, non-empty vtx.""" @@ -1227,8 +1161,7 @@ def test_get_transaction_t_to_orchard(self, zs, ls): zs, ls, self.t_to_orchard_txid, self.t_to_orchard_height) def test_get_tree_state_after_t_to_orchard(self, zs, ls): - """After t→Orchard coinbase (block 201) the Orchard tree must be non-empty. - The Sapling tree is still empty at this height; it is seeded at block 202.""" + """After t→Orchard (block 205) the Orchard tree must be non-empty.""" req = service_pb2.BlockID(height=self.t_to_orchard_height, hash=b"") z = zs.GetTreeState(req) l = ls.GetTreeState(req) From eebe5656d7ec64a30401bbc14d356bf74ec92c0a Mon Sep 17 00:00:00 2001 From: Pacu Date: Thu, 23 Apr 2026 13:58:24 -0300 Subject: [PATCH 07/15] add .claude and .codex to gitignore --- .gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 739b5e52f..39deebf54 100644 --- a/.gitignore +++ b/.gitignore @@ -5,7 +5,8 @@ *.orig *.pyc .vscode - +.claude +.codex qa/pull-tester/tests_config.py qa/pull-tester/tests_config.ini qa/cache/* From f0b873e6aff68e96e7154f1bed792a91de3a550b Mon Sep 17 00:00:00 2001 From: Pacu Date: Thu, 23 Apr 2026 16:45:06 -0300 Subject: [PATCH 08/15] Document how the gRPC comparison test was stabilized --- doc/book/src/SUMMARY.md | 1 + doc/book/src/dev/grpc-comparison.md | 224 ++++++++++++++++++++++++++++ 2 files changed, 225 insertions(+) create mode 100644 doc/book/src/dev/grpc-comparison.md diff --git a/doc/book/src/SUMMARY.md b/doc/book/src/SUMMARY.md index 30a7796cb..1bc007380 100644 --- a/doc/book/src/SUMMARY.md +++ b/doc/book/src/SUMMARY.md @@ -7,6 +7,7 @@ - [Platform Support](user/platform-support.md) - [Developer Documentation](dev.md) - [Regtest Mode](dev/regtest.md) + - [Bringing `grpc_comparison.py` Live](dev/grpc-comparison.md) - [Platform Policy](dev/platform-policy.md) - [CI Infrastructure](ci/README.md) - [Cross-Repository CI](ci/cross-repo.md) diff --git a/doc/book/src/dev/grpc-comparison.md b/doc/book/src/dev/grpc-comparison.md new file mode 100644 index 000000000..435da659e --- /dev/null +++ b/doc/book/src/dev/grpc-comparison.md @@ -0,0 +1,224 @@ +# Bringing `grpc_comparison.py` Live + +The `qa/rpc-tests/grpc_comparison.py` test compares Zainod and Lightwalletd by +asking both implementations the same `CompactTxStreamer` gRPC queries while +they are backed by the same Zebrad node. + +This chapter documents the process that led to the test becoming stable, fast, +and usable in CI. It is intentionally more historical than the inline comments +in the test file: the goal is to explain not just what the fixture does, but +why it ended up that way. + +## Goal + +The original goal was straightforward: + +1. Build a short regtest chain containing transparent, Sapling, and Orchard + activity. +2. Submit that chain to Zebrad. +3. Start Zainod and Lightwalletd against the same Zebrad state. +4. Compare their responses method-by-method. + +The hard part was step 1. A chain that is easy to describe is not necessarily a +chain that `zcashd`, Zebrad, Zainod, and Lightwalletd will all accept and index +reliably in the same test harness. + +## What made this fixture tricky + +Several interacting constraints shaped the final fixture: + +- The test needs both Sapling and Orchard activity, including cross-pool sends. +- Standalone `zcashd` wallet behavior is sensitive to note selection and wallet + state reloading, especially for Orchard spends. +- Zebrad and standalone `zcashd` do not build the fixture chain together over + P2P in this harness, so the test submits raw blocks explicitly. +- Zainod must only start after Zebrad has loaded the full chain state, or it can + fail during initial indexing. +- Regenerating proof-heavy shielded transactions on every run is too slow for a + useful parity test. + +Those constraints are why the final test uses: + +- two standalone `zcashd` builder wallets, +- a two-stage cache, +- checkpoint-assisted Zebrad replay, +- and explicit startup ordering for Zebrad, Zainod, and Lightwalletd. + +## Dead ends we had to eliminate + +The final structure came from working through a series of failures. + +### One-wallet chain construction was not reliable + +The first versions tried to build the whole fixture from a single standalone +`zcashd` wallet. That produced multiple classes of failure: + +- Sapling funds created on-chain were not always surfaced as spendable to the + next `z_sendmany` call. +- Orchard cross-pool and follow-on Orchard spends could crash in wallet anchor + handling. +- The wallet would often choose the same note pool for multiple test + transactions, leading to duplicate-nullifier or "insufficient funds" errors. + +The fix was to split responsibilities: + +- `zcashd0` authors the transparent and Sapling side of the chain. +- `zcashd1` owns the Orchard accounts and authors Orchard spends. + +That mirrors the separation already used by the working Orchard wallet tests. + +### The "obvious" chain was still too sensitive to note selection + +Even with two wallets, using a single Sapling note pool and a single Orchard +note pool made the test fragile. Some later spends depended on `zcashd` +selecting exactly the notes we expected. + +The final fixture avoids that by creating separate source pools: + +- one Sapling pool for the Sapling-to-Orchard funding transaction, +- one Sapling pool for later Sapling spends, +- one Orchard pool for the first Orchard spend, +- and one Orchard pool for later Orchard-originated transactions. + +That is why the fixture has two Sapling funding steps and two Orchard funding +steps instead of a single minimal funding transaction for each pool. + +### ZIP 317 fee assumptions mattered + +Some cross-pool transactions that looked simple on paper were not satisfiable +with a hard-coded `ZIP_317_FEE`. + +The fix was to compute fees for the actual transaction shape where needed using +`conventional_fee(...)`, while still keeping `ZIP_317_FEE` for the simpler +cases that matched the existing wallet tests. + +### Standalone `zcashd` and Zebrad needed aligned activation behavior + +The fixture uses standalone `zcashd` builders, then replays the resulting chain +into Zebrad. That only worked reliably once the test stopped assuming every +network upgrade should activate at height 1. + +The stable layout is: + +- Overwinter through Canopy at height 1 +- NU5 and NU6 at height 2 + +That matches Zebrad's regtest expectations closely enough for the replayed chain +to be accepted and indexed consistently by the downstream services. + +### Zainod startup ordering mattered + +One important operational rule emerged from debugging: + +Zainod and Lightwalletd must connect only after Zebrad has the full replayed or +restored chain loaded. + +If Zainod starts too early, it can fail during initial indexing because the +state it expects is not fully available yet. The final test therefore: + +1. restores or replays the Zebrad chain, +2. waits for Zebrad to report the expected tip height, +3. then starts Zainod and Lightwalletd, +4. then waits for both indexers to catch up. + +This ordering is required, not cosmetic. + +## The final fixture design + +The chain that shipped in the live test is: + +- Blocks `1..200`: transparent coinbase to a `taddr` +- Block `201`: transparent to Sapling funding +- Block `202`: second transparent to Sapling funding +- Block `203`: Sapling to Orchard +- Block `204`: Sapling to Sapling +- Block `205`: transparent to Orchard +- Block `206`: Orchard to Orchard +- Block `207`: Orchard to Sapling +- Block `208`: Sapling to transparent +- Block `209`: Orchard to transparent + +This gives the parity checks: + +- transparent address queries, +- tree state queries, +- block and block-range queries, +- Sapling activity, +- Orchard activity, +- and cross-pool activity. + +Just as importantly, it does so with a chain that all four components in the +test setup can handle reproducibly. + +## Why the test uses a two-stage cache + +Proof generation and shielded transaction construction dominate runtime if the +fixture is rebuilt from scratch on every run. + +The final design uses two cache layers: + +- `qa/rpc-tests/cache/grpc_comparison_stage1/` + Stores the expensive builder-wallet state after the initial 200-block chain + and the two Sapling funding steps. +- `qa/rpc-tests/cache/grpc_comparison/` + Stores the final Zebrad state and metadata used by the parity test itself. + +This split was useful because it let development continue even when the later +shielded transactions were still being debugged. Once the test was stable, it +also kept the normal runtime low. + +Typical usage is: + +```bash +uv run ./qa/zcash/grpc_comparison_tests.py +``` + +To rebuild the fixture and overwrite the caches: + +```bash +uv run ./qa/zcash/grpc_comparison_tests.py --fresh +``` + +## Why checkpoint-assisted replay exists + +The final test still builds the chain with standalone `zcashd`, then loads it +into Zebrad by submitting raw blocks. The test also writes a temporary +checkpoint file for the replayed chain before starting Zebrad. + +That part exists because the builder chain and the validator chain are not being +grown together live over P2P. The checkpoint-assisted setup made Zebrad replay +stable enough for the indexer comparison to become routine. + +## Normalization rules are part of the design + +The parity test does not assert byte-for-byte identity for every protobuf field. +Instead, it compares the parts that are intended to match and normalizes the +known implementation-specific differences. + +The most important example is compact block normalization: + +- Zainod and Lightwalletd can report different `protoVersion` values. +- Lightwalletd may include transparent-only compact transactions on shielded + blocks that Zainod omits. + +Those differences are normalized away so the test focuses on the actual parity +target: whether both services agree on the chain and the shielded contents that +wallet clients care about. + +## Maintenance guidance + +If this test starts failing again, the safest order of operations is: + +1. Verify the normal cached path still passes. +2. Run with `--fresh` to determine whether the failure is in cache restore or + fixture generation. +3. Check whether Zebrad reaches the expected tip before Zainod starts. +4. Check whether a failure is really a parity mismatch, or whether it is a + wallet-construction problem in the standalone builder nodes. +5. Avoid simplifying the fixture unless the replacement has been verified across + all four components. + +The biggest lesson from bringing this test live is that "shortest chain" and +"most maintainable chain" were not the same thing. The stable fixture is a bit +more explicit than the original idealized version, but it is much easier to run, +cache, and reason about in CI. From 56f597eb61d7b450b6e10dc9129b21a73537746a Mon Sep 17 00:00:00 2001 From: Pacu Date: Thu, 23 Apr 2026 17:33:46 -0300 Subject: [PATCH 09/15] Refine grpc parity test maintenance and cache handling --- .gitignore | 2 + doc/book/src/dev/grpc-comparison.md | 4 + .../cache/grpc_comparison/chain_metadata.json | 29 ---- .../cache/grpc_comparison/zebrad_state.tar.gz | Bin 144942 -> 0 bytes .../chain_metadata.json | 29 ---- .../zcashd0_state.tar.gz | Bin 213815 -> 0 bytes .../zcashd1_state.tar.gz | Bin 179777 -> 0 bytes qa/rpc-tests/grpc_comparison.py | 161 ++++++++++-------- 8 files changed, 92 insertions(+), 133 deletions(-) delete mode 100644 qa/rpc-tests/cache/grpc_comparison/chain_metadata.json delete mode 100644 qa/rpc-tests/cache/grpc_comparison/zebrad_state.tar.gz delete mode 100644 qa/rpc-tests/cache/grpc_comparison_stage1/chain_metadata.json delete mode 100644 qa/rpc-tests/cache/grpc_comparison_stage1/zcashd0_state.tar.gz delete mode 100644 qa/rpc-tests/cache/grpc_comparison_stage1/zcashd1_state.tar.gz diff --git a/.gitignore b/.gitignore index 39deebf54..0be1501a4 100644 --- a/.gitignore +++ b/.gitignore @@ -10,6 +10,8 @@ qa/pull-tester/tests_config.py qa/pull-tester/tests_config.ini qa/cache/* +qa/rpc-tests/cache/grpc_comparison/ +qa/rpc-tests/cache/grpc_comparison_stage1/ src/* poetry.lock diff --git a/doc/book/src/dev/grpc-comparison.md b/doc/book/src/dev/grpc-comparison.md index 435da659e..bac0307df 100644 --- a/doc/book/src/dev/grpc-comparison.md +++ b/doc/book/src/dev/grpc-comparison.md @@ -163,6 +163,10 @@ The final design uses two cache layers: - `qa/rpc-tests/cache/grpc_comparison/` Stores the final Zebrad state and metadata used by the parity test itself. +These caches are generated artifacts. They are useful for local development and +CI acceleration, but they should not be committed to git because the binary +archives are hard to review and unnecessarily bloat repository history. + This split was useful because it let development continue even when the later shielded transactions were still being debugged. Once the test was stable, it also kept the normal runtime low. diff --git a/qa/rpc-tests/cache/grpc_comparison/chain_metadata.json b/qa/rpc-tests/cache/grpc_comparison/chain_metadata.json deleted file mode 100644 index 0c4f28018..000000000 --- a/qa/rpc-tests/cache/grpc_comparison/chain_metadata.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "taddr": "tmUtDKtdCpW9JK6qCnF7V3HGT17tNMw5N44", - "sapling_ua0": "zregtestsapling1cxqx6jlngx0a6lakm5qjz7pxr9wkf0uq532cfvtny0dw2ts3zdq2zglme0kjkf9u62truflckke", - "sapling_ua_aux": "zregtestsapling1v8g56j8emgfhtwuwgffa6sarj4rp9gkg4q4g7hk5t8t7r8mqpekrhphttm7k2tgvfp3tq8g9crj", - "orchard_ua1": "uregtest16s9p2wgz5fx3d0a9cn5lrervtp4ax6xsey0umynqhnpuphhml9827727gyy6yrwcqvm389l4hw5m34ph83c8ya58jzm3frleasq738sn", - "orchard_ua_aux": "uregtest18ukzh947qqgvxke6gwjjjxx43vacm9a6sxkmjgr4s837ry3gp4qv4xj6f5tury6dye8r83xum4vysc6ujw27kjlpjkrej0dxxg9smtsg", - "sapling_addr0": "zregtestsapling1cxqx6jlngx0a6lakm5qjz7pxr9wkf0uq532cfvtny0dw2ts3zdq2zglme0kjkf9u62truflckke", - "sapling_addr1": "zregtestsapling14pt9c4gwf7pq8mk5tzp2e9gnxn9j324zz2zpckedwtx59vxvgqtygggkd5z4w2pttaaqq40yrly", - "orchard_addr0": "uregtest16s9p2wgz5fx3d0a9cn5lrervtp4ax6xsey0umynqhnpuphhml9827727gyy6yrwcqvm389l4hw5m34ph83c8ya58jzm3frleasq738sn", - "orchard_addr1": "uregtest1hg0vpsvvvsaynkwz7zpwpj2rmcmw2h4ez238j3d8pu0kv9qxf9t5yrrz56yp0pxn7s3ztzgq92kdzrnj6s4q7qc92d92fwlvacqqn6w9", - "_orchard_aux_addr": "uregtest18ukzh947qqgvxke6gwjjjxx43vacm9a6sxkmjgr4s837ry3gp4qv4xj6f5tury6dye8r83xum4vysc6ujw27kjlpjkrej0dxxg9smtsg", - "t_to_sapling_txid": "baf959f54e67cd881eaee54cf0bcd1e5d3c96cba006e7ffacd881b3fd0698fc4", - "t_to_sapling_height": 201, - "t_to_orchard_txid": "1ab0cc4fed1586ed8f90d88575dfcf761967cffe0d9d85d7bd413f3a66f37b15", - "t_to_orchard_height": 205, - "sapling_to_sapling_txid": "3dd8152bfa046fe8cc61c3ee18aa899a0dd20202dcc223c589e37068638be743", - "sapling_to_sapling_height": 204, - "orchard_to_orchard_txid": "568c10845023f4165b41f7780116107376cf0c832fea530721fd60f96da15109", - "orchard_to_orchard_height": 206, - "sapling_to_orchard_txid": "e61e603ab39271f6bfcb9784cf54e05caa6a6765cc78dd2e9be64e2740610cf1", - "sapling_to_orchard_height": 203, - "orchard_to_sapling_txid": "c24331c2281a9875da25050d1d4acea35370d1a07f87407eaf99345e4c14fb79", - "orchard_to_sapling_height": 207, - "sapling_to_t_txid": "1d4e877a5853c37985fed8368a31d7a60d7d254743df09c360c53cfe0c5dbc20", - "sapling_to_t_height": 208, - "orchard_to_t_txid": "37e340059d2934c9f30742bf9aa0e7f047309abd6f81a1d0d8c8c7f4a8370a91", - "orchard_to_t_height": 209, - "cache_version": 7 -} \ No newline at end of file diff --git a/qa/rpc-tests/cache/grpc_comparison/zebrad_state.tar.gz b/qa/rpc-tests/cache/grpc_comparison/zebrad_state.tar.gz deleted file mode 100644 index 743fc8e27d15ed04e7e3ee59a52cbab9ed4a9aca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 144942 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 z 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 as+kf2`;q<&17YwzKyyj&s{;-v5Bvwl<)0k@ diff --git a/qa/rpc-tests/cache/grpc_comparison_stage1/chain_metadata.json b/qa/rpc-tests/cache/grpc_comparison_stage1/chain_metadata.json deleted file mode 100644 index 97b8409e3..000000000 --- a/qa/rpc-tests/cache/grpc_comparison_stage1/chain_metadata.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "taddr": "tmUtDKtdCpW9JK6qCnF7V3HGT17tNMw5N44", - "sapling_ua0": "zregtestsapling1cxqx6jlngx0a6lakm5qjz7pxr9wkf0uq532cfvtny0dw2ts3zdq2zglme0kjkf9u62truflckke", - "sapling_ua_aux": "zregtestsapling1v8g56j8emgfhtwuwgffa6sarj4rp9gkg4q4g7hk5t8t7r8mqpekrhphttm7k2tgvfp3tq8g9crj", - "orchard_ua1": "uregtest16s9p2wgz5fx3d0a9cn5lrervtp4ax6xsey0umynqhnpuphhml9827727gyy6yrwcqvm389l4hw5m34ph83c8ya58jzm3frleasq738sn", - "orchard_ua_aux": "uregtest18ukzh947qqgvxke6gwjjjxx43vacm9a6sxkmjgr4s837ry3gp4qv4xj6f5tury6dye8r83xum4vysc6ujw27kjlpjkrej0dxxg9smtsg", - "sapling_addr0": "zregtestsapling1cxqx6jlngx0a6lakm5qjz7pxr9wkf0uq532cfvtny0dw2ts3zdq2zglme0kjkf9u62truflckke", - "sapling_addr1": "zregtestsapling14pt9c4gwf7pq8mk5tzp2e9gnxn9j324zz2zpckedwtx59vxvgqtygggkd5z4w2pttaaqq40yrly", - "orchard_addr0": "uregtest16s9p2wgz5fx3d0a9cn5lrervtp4ax6xsey0umynqhnpuphhml9827727gyy6yrwcqvm389l4hw5m34ph83c8ya58jzm3frleasq738sn", - "orchard_addr1": "uregtest1hg0vpsvvvsaynkwz7zpwpj2rmcmw2h4ez238j3d8pu0kv9qxf9t5yrrz56yp0pxn7s3ztzgq92kdzrnj6s4q7qc92d92fwlvacqqn6w9", - "_orchard_aux_addr": "uregtest18ukzh947qqgvxke6gwjjjxx43vacm9a6sxkmjgr4s837ry3gp4qv4xj6f5tury6dye8r83xum4vysc6ujw27kjlpjkrej0dxxg9smtsg", - "t_to_sapling_txid": "baf959f54e67cd881eaee54cf0bcd1e5d3c96cba006e7ffacd881b3fd0698fc4", - "t_to_sapling_height": 201, - "t_to_orchard_txid": null, - "t_to_orchard_height": null, - "sapling_to_sapling_txid": null, - "sapling_to_sapling_height": null, - "orchard_to_orchard_txid": null, - "orchard_to_orchard_height": null, - "sapling_to_orchard_txid": null, - "sapling_to_orchard_height": null, - "orchard_to_sapling_txid": null, - "orchard_to_sapling_height": null, - "sapling_to_t_txid": null, - "sapling_to_t_height": null, - "orchard_to_t_txid": null, - "orchard_to_t_height": null, - "cache_version": 7 -} \ No newline at end of file diff --git a/qa/rpc-tests/cache/grpc_comparison_stage1/zcashd0_state.tar.gz b/qa/rpc-tests/cache/grpc_comparison_stage1/zcashd0_state.tar.gz deleted file mode 100644 index 0c70b07764f60c92f8d9f35e98b9d01474ce8f75..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 213815 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 z z?nJK(-7%dM4Np0b2uA{o8n02F2;n_n2=Apr3{y9OJ}KT&fwv(;N|z)M{HY1bC1HLa zdyWXa{b%t(PXiN^wX)+1gBdHk!m=Q~GkzB972C5fy)(a4A+#xobv3+y^{QJ1A|8%v zDbMYO?JlYr%x3w(Z;2^ZIoiXr_OB2$0I})Pj*~9d+nd7iYksjoS}aZ2o|nRhz|qO? zMh{11O>${0k%4c1p`C{XzmXYxwF-?(I3cLlI|q%P(D!xKn<5hAi4gwth45c0MC`_AX%NJ*_UQx0UzO(QQVxv)w5gaW_4cI7l8?nZ`Zhv^-Zl=-G1PLdj&X@DQmp=W4KZ49L!~ zHtlBpJ6C!d;UJPO{SNU2mTV5k6mt@TEfA9-g0M5awmZ+4zUm2r=Xu zv~u2aPs!6d-nW%~u0n;v^YKWopF4$=8{Sa;VhWX!{B{bHj3xIiMlVUVja7*^4UoYW zw1Zk-@YLj7>mqHP&Y8i7w$iV?mCM$UKN>COuMiKw*|#}}e{POyn)b4+V!Xq=?y92E zYxH=t2+o7`j}UTLlI^l_aDOfx(S+Mdzm97=D!03~up&ESIIdvKsjHT2)729pqUQ?{ zy;KN~S;B>NZJ(X;VB?T8?b zm|$Se7BZLb0su_5PUzyq@v$AI{usVf(l&mY4il8gl4QfHw8XhBL81#g4%FlGA0Z;@ zCG>MTh}~rhobU_h2FSTv%Ic^c7Ra?Wk@K>NZy7Y z!^4gd_-dh4D!r%qnREzV<==v~5XBnDq=m%O=@+$mm(n6QKE|O;NCWW#R#&JuzmDR; zCgfBP@25oi&2{#7DwQ7M5QxsWLKRW;xHaMq0fwR>&So&Wo zc29&zpD#rEQlY-Hw}YYI1FQFG+O@XoMRfxUuBAFc`*oM@e@UVjp+Oz|Kyl@W;lipD z44GgSO2Uoa_KC%IQ}A!M>Jpf%h?zKm0M&*U83jwr&hky@7(@KV>qM#`>Gi#G=+YPzy4lIyn>_n#;pyzuK`Y@;%BmDVw9qRmg^%h-r zza8lN@gZgQ6@nh-Q~%8& zSwShs0cYtJ7#aVadaUHg##C&9bKgF28edK)CIxioRk@9Y%jaT|P4$zn2dLV1j>eI` ziClBz7~jKZ+&d^cPDmr1u+{51oBj#`0ox0rQ{1ZykTqF#4V{aGORca2j{r&bkF-lx9ct@ z|4(RR6xAg*p86hp<_gUn-;W~XxjLqO;tKpBb5|mIYwqeXprku+BOD*k%JzW$Hg&oe zO7%MkE`m)Vqvy=0d1b84Cb6KD4G+JoR*w~-TvY!R)sJMCyu4KyRk5 zLA89Uot%XyLKM#zqIjv$>34Zp7~A7BSacO_J#VHsRE+Q1;qH9pbIH!uW?|A0z75g@ zo5UFBYg$+ZIQ=Cl-sRh~f=f*D%R{tuq`p4(w7a^%Z4vt_jmTJN|TnUBhhPr#ogjN-2yEu6IMHOp|9J zZ!MXO>&s%Mc!JZk8#IoE(9);5QAo@$M9$2loF21|Eu;_`M2t5-^=~E>q-2>wT61Ao zHmg`o^&4B`97f##TswpNh%$78Z z5-rwuF-m@-bj%$snmiGre!dX(i}ynea>K3Lrq1wn47ducbE9EQLrGe0cSOjMADR#m zgdxYq^i#m|h9eI?n{C&t8`VxC*9nF03ID`I25qZ@Kw9oTM&9^ok(1`;r}PtkFCC;H zpM1rd@5eMkGLaKB4(!3d3$5V_J1q2LI})-E#Hq}t1_3nU@sz}hE)o4PlOKc>T^HoX z??V7`xFoBCSw zJyW_+`}A90Sy|MiNf(DDHtQDX8&Hxx41H9V2z7N?aOHp;&MUlDXmX+q>b3liOn$C#_VnIe-n6cF*k#wOm8yl z^qAWRcbpbAUlCst=zfT7V+8dCWv(7l$L;=Km{8r z*3NFwi~#hR-8&sWH`mgGF+fsbNib&v)s$!iEfYl3twJ*xe^)=98aok2aPE&%@QLF! zX6R@TmE2}SCLYvmx3ipH^K2yNe+jVxoISgpjw3I7Mr0R5;nJ^JiA&eieWF9B(O;7kuX&C8)hL5w?Ke+b@v0N4C^tR#P?q#e{ydD8$rb5Ibdj| zGmb{1HLsr1wm){Qc9*YUwWz9trJmCGFywdDag}bfu9@by#%a*;R|pO8!Gd%ZFLWD` z-Z~*H*KEyaKvvv9vRnQJI7_3KF5SIeAaWCjhJBq->J=nxTalF7er zc;wR4M~OZWqJO>+{Y!;nsCz$PSQwFsPP|6FO&n};jCYMA`P_1CBp4Vs^t~1ArjdH1 z4hzng)6a%{_|8C|y@-$302%nZ4VYMlC@Z13XTWs{&ebLI<+ZZDccUcGrfP_lv{Mcol1JQxsu0YSXtZ#3^=nCX1(i+d5vXoty+4C8Gs8h2J4Y|z6_NU;= z4FlIc_USLeno{tOJIynll5;2z=1!^WK5fHic)k$BONGL4Ig%Eb#)!MEm1O0-7A6<* zHELBZAxnNmbH{|0{Q{vf76~j+ZaU5F)^7F4`LH?jlK?v6Knb6-==JOYq#pL9U}#hS z4?fsq?*8Bp7LIF0_H_`7d8qx~n;7z6-RnG@A5Rpc`g22-#TAu^694&c4c3o$P2#<$Xh&f0X7Z<0?2I$G?2<%z6$ae-3`nf5?BJGlr9+AZlqNX_KE z`X*`wsKgZ)t-n&b^m`8qI;duf+WHCepI(|y76Pyad1&9{w|LzgWXtd6eWsirdpu)O zF2m~KAisvbZS^}R{Pdb0@$wr^yi|$Z-sJl~LP#gPizu{PNWA|0Lg>~--bTFql{~W`%G36Hzr}|9XjUzda+{(5t&bWE24U~} z`CW=D?2@_-#yLM*2XrZ+Jj5zUn-Aqwi|cfG-tVhKK6*WHf^d4ahPV z!p2!K8~S|4bYsn|#?akqPw^cAk_N;caHcB}Sa?aY>>Gt;3#|&TqN12kWUcjzGT{2& zxFT12uC|a9gK%L-*40Zko~!KYQ(F zNvXIH9f}fwBF-JW{SQ@Gu9S4pD5oY>JQ}2w>A}FbEv%UJ3s6R0a|H?}^}2Xl-{PN7 zgqWW%#QajB5RibGZyZbvUpZRh@Y1b6h{X;_-T%&|23Qpwqrxe`uUHQTr$CY%qVCP; zq9q+wwn**OS-H_m=GS(|PUYfW?P;3Qp5Tc`zJ_ z&_9V|=O8WG;MQ-Sj=gTuoo&otv;W zINAgV;w3jk8O@vXt5>by#i|Wzjyz||y&`^##w(m*XjHWD1xdPmE|2H-oc1XBGCFk= zN_>;y)L>%Mrl2F$wkX3Cdnrg}4|{4%SD&%8tmIqq`qsqNYt60hIvrvSpAZsx3pS37EX{s)>{G_;T%#QYG7SjbAL;1SQ1l}Z_(s$ zP{8{H>nKocL{T7F1lIXW4cdtWcpM#K4Np$FJl2QW(n#_?ML1#1xs#IFdWa~mtX#b1 zw6+A{hFA-Gm}SVNM8s3coh#@!vi5D+6T+`>P?0e$CLJjbUNtY?C71O8Po4;IJYR_8 zr9zZK&6sjH_I4w$x7C@CA^D8zO-dxO>p;2iRQC3BkU>);-cYax9D^pcf4O4AR~iSQ zm&ZG^Z<@URG-q;>j9r5s5uifR4u$A0*x6)Dtu}u(EyDWBqMAaTbzb&NKd9LCu?j2m z8DZ#)qFJDLrX5e3fr_VY5{A*1>ksbu*iUs2LZ>^;LAEI*c{n*~Ix!c^RN#=sxOIN< zDH5WHg*s?IM9X}iX0Dvi7vg+z74{|?*dYIDIo;w)@p6_^AWG%X7a>t@HgMor!7gwK zigie%ART=p!Z1eb3OdI1uv9pnzkfZ~yIp52Y;-Oy!bgm9Ps2%zs(_F-qg$fLkN>*f z6r)N_w#Iqu!%W7(q3h!qs)j6Td*zsjy+!&VlgiVqxu|TmGbS5Nn&@rI>pwzh>Qb*s zD^H@%s7j<~j{W`SG zr<2X8*4^kFI4@9jodW6X9NlJGizdB;2`O)3L$H(~O&wA-aGnZr zKVOLZr9vZ9#EIN1Ev|KpuIerNLe0yaXSs^V6k#4aO_YevW#GThmO$txq{3!}mpg5a z5zn^VW!m#Ktw1yEX)V=akR522%u&JXZ?!h0Dtj%qzkUi?Wdm!m0iYvB(apThGRgic zgbApPlAMcDfX5O1d`$7CVZPc30yVk~=iRrvK@a_htb>TK9$J}SxEHrjZmSxjS5pnM z0B&3VJw^&P4Qo06$xrv@ryW+WpD*{Y!zIAFio^zlSK&zv7L^ zXYLOYZEJ&AND)T>LC?hm`M^}y$8-D8DwQ@N!x@cfHatnttpHl0mfS7WckdTraj$e9 z)-qfN{t*vxU^?ccghglmgj5F%e3q9CNK7#0m08r9RRjTS>WGdwg@>wgKyhkPq-iVC`e_I7OSO@v z;7!+q)>F5~F;pOi4#NC}{zS=j^wjOPaea2sh-f<-qm2l3Sf+-n&f&$YZfrY3X2q{1z+|ZZ38Zz*oVCIb>B7$ui+07Vjf@Xp9t|kUx@$3 zeT*o>dn9Q|JE>znfKsTY+5|d283JF?LakS^eu zEoN@lJf<-c=*ne-`5-=dQzf${-cU(c67>`5nVdM;z_w8vwEqgFqEk+c+5am<1W3=6 zVIn+Q%Jk!8(1MRL_YAMYEkHRTDZTGnT78&hNy+Z*Fw=?4Fcp+FBK;6`Auy_CT6)U} z7YPW}10ka)1obOVgan>1B=Az9@VL4+z?#53Q#xhcmAVfx zsrDV?B*8s|6)w*m6uaVl9p$6YyA)~>=IqGz(EE|zA9Dn_ zTs}gP?DIf9hmjG7pz5(9NgPQBMN(9NC2wXy%6lRt_DG{ts9crZXm1ze!E-o9aV$e{BJQi`FEvF^CYX|%8Ao{pO;1&8LVhx$+|JS3Lo3dpJyd;Wa)qTps6 z&3e2hi|!TFGOZN)O!Zkx`M?t);pYnpzf_3F1SsEgRP143eq9`INW1PoBoNtoT`AL&J{ROcnrLRU?QmWql;9OdgG2+ONS9_ za0yIqo(R2pzR;VO3T4&4`snELUH9?}sl|*Me6qH|t}inMac>)Ws>q;XB}BSkkc%Ul zZc4r+#ai&ut*u^Qv-~*cs(}o>d{#hPNn?UqNqfay$yQi6#t6qXCJT$eZsH3 zp&GCEZhU`*L;+qx6nSRa*rIY^W~n3t86H-C9oA5o`3(9wV)TE6&~q|a`~#3ZrG#6Q z6+7j66t*y_bjOdp-urZ!wWii=4#;xtKM@jrzL4lkg?87Ld%dmd@;Sf1I=fSIq1}%FGhE9fD^<3Xrk$0xyd^uP>6^2lt$ZzM8^;X)dTxL3CLDh}i%fG&5Axxx!C| zS{O4>2%|%fR)8^N8xH$uDJ66foBPWre3Ep08Q%@+{*_*?7{?{Do2bZ$@LwT5fI+)V zALf|a5rc`dJ6KUWdo0J@mVvi}4o|Nk!NX~g(R*p5Y67-Y1im-#S=YII0Z{aW*zGv(`zT#Wm>z@XDp8hiJY2WThdk5dr6Sdk*H`)mG%rLIO z<*j&mjL(C3*~fmDARuMC#@PWd;Vks~L9(*d^2mVaS_COF24aZ6<#%Z}(y6w?oemCc zybxMSx&TXEk7&TgaDU7?xXI)>YfH_$4{ff?AV^MQkX6nI7KubJV0k0(ZizzXG(QoNc)pOtOND0AQ$R5sD&#(Y%RX&! z60Iby7O6RjH34c5a!*{0)xl#2F!}VU2o+#`=*4-}TSReX@ynSlF*A<9r^ENd2q;+i zgk_yGG=3{uCjBYDOf(&*;AOKx&G1G}GNOPA@=2`6zl6X5S(o*s>;tbasj!%4Pg0ip+M1AsP(xMaus5fv2Cq zlYG9A(?<80=u<)WJY9N6)xY75Fb=!p!{>iRC^Kl6t<7)JuhOTP(JE`GRQFP|%>!ru*JimqkygvK`*n zwOJ@`#?*Ppe5W)ULmh|sS-%w5c~sM=CZRq#Ye`uRfAFTSgV(skC+ zsFg#%alH52oi#_V6%7P}Qps&Dl9dZV%`k|fe2^Og+2aO8S5+c>4+n7FK7O1rM+1sV zQjnWa>Dv|>at5hTy~qlrc0FzzDA3Ab>FZ==B@io+Ps+}eWXS~{kC`jBfc6~Shg1n9 z!m0uWNGgCFSZ=s^TNiQwn(^)*A#yx~hAI=1_Fp2qALl4P<8|EuTMbVqC}R{S*|x{s zMJafDwVnvcJYPuWr9!x05;DlJy+tSsHlU~X0c{__FNei{D{Epi#kX}B8vq8~O1=1D zU3)G)$rKaySe3*n+VybGdBhD6NOVclln-aFTTN3426!Ved~$XC8b5K{wCpGh_4{C; zhiM_w6C-;(cIlCekiJzwBpb*kjDnbd3+HiMa$*V*u{=xV=DYkbhCY64swG0n-jtt> zZ(%1(IcsE+!`O#d1bg*`^=m9WtI@UK^b;Z3=L^ZcR7hhgUvW#D=Jj=G|M*u;W=E&6 zU+oDlnV|r`8u3YpGeqW(*dVmcZ^bOj$JuE75xd>*9d%ToXtws!yzqQm9siK4Arz+HM6LvTmx`55I8-;sD>upMME%zpv<=~|Sf zylF{fPL@v-v@!Bxp9sl6Ur7GN9p__UA$Ysx$U)hQ&I@V{0yJ@qIi$wm0TcqorD=ng zp!7{MpV@uBeaS>nRUN_>aMcMkmGK)MW7juY*ciAL$PKM@+>hZ1`*|L^CDIX~gA)lk zC|2jAb}#n%I`FMisQ+IfVZgX2k4i!(a%HZsfyR$C=zn zWtv*B1Lh|>B4%(9*h4(T_;Qk27w09C&&hPmlV+z;PlObnFQo8Nq3-yx8z-(&Kp@j$ zyb2Nyk?IYVqilIo`Fl48_a8t_Cmn@< z8((#vtXwtp=={bg-xg>8BF4K)tsVHv!RZqY>Ljt@l&6%F!X3hMR+=E zG8+=d{KzyYt;|Ds+S!oizy;O{V(T{D(zOAhVZ1H=6<&d$v6KNV3 z9<;wg*nq~X5Qeuga6yiu#~xIFUQ)!jgkg%^HL;Cg)rUJ0p!g`?E@w=9?m+u((+Dvj zNgzq5F15WTW0RI9spi7Z`n#{~X`Nc>`9exB?iOyARf=9MaZ><8BtJzt?VN(oJTAf5 zt6U#!`faswgJ_O_?=AqWq>choLr}X`($l(xdDgTbcET)Ky}J95kuFcie9JVPauv9Z ze4y1$(CaE4)7aLj0ekH345-W6noKZ=#8}c0dX2r&VQExFDY5YshI%ziIDR1g_K_^ltKKZ zXYQ)Em1tI92U4I&v`NCjM@9H2rrKKMxbd$(1U6y2CaJ(phlp$+|6DQ^%EJ1P$Wg_b zzBbfO>Q~al%C6Seppq+hSSveJI5Td-#E|mz%bt&UnQEMx28^gl zhq2%_Vsa=(aRNv8e96!`Qs<#?{KG7B48J=*6WOid^aCa>p|I6y#QPKa33F)*IN`I?qTs?Z0ai4w^= zMi1W5m-+SNXZSnHM8g;Zz1-U4GitL{E$6(h^4aPH`nHR}trCJ1aMPfuK~&fHI23oT z4aucyX{(kZugAPh4-h%L105wQoB`bUmry#yYn!iAsCN`vp~x)KyI80{6@JY(HXlR~L>qy^7Iw}p zo1}dLpNKXJv|Qx(L^Ve2Oo(zD$LJJ~lK5%p^|;y>WzC_-w@ZJlGj0W+y-!Mj3OGzo zjZ<^qq?LK74?znRdLK1e|r@kD|=pf&LXni8|_W43@ zUn-Q+Jo!2Lea;YWx{uWCuZ1dCd%%eV(4B5d`!q0w#%Zw+=20 zeog_k>ZjgcINye_>+R$fE^uQ6c^nk*yzhVB$&0vIo-SFMNrYHUw3@65Q?SH&J>C*_ zbiiAW%{K4bcVdku93+2MMvIG+VUIMFJfX_WhYH$8MqKr9p=%el+~7Ay1n=y5nAP?Z zLq%JqGm5nN*;VxT?WgzsPqZa+>n15|yXc`^E zK&^}*3_h$SNth5wFZ3h4sqGh~l~?*8Nl|!yrAe`?AgiSkzJKflgZmisR<1%s?f@Ir zj({lX<)ssv6L#If$|ZWb*JF**+%L#)QwXR5dR@jt2mTGGiFc<$`Td#IhK3yGLwyMP z`!Ayn9kyr)>H#%UG2|XW__qYZRg{4;V|djByh*CDz^Au7RRCE)roVr_kot>PdmW9k zjnVv@`bomCpJ&0p=O?I;IhB?qDtX(`Y@^DLdJslWM? z&k_7vbaAH-aryUnL^d~(nQHj=l%hIKGWhC|rJEnGGKS=bcmjQ^5&jA>0K`rh*p0BN zyOO?s+Tslh1LtPeLy(a}n8Q1P7kwB*s8~M!lDp;GNF&oW0V!@}+0Y0W315UI2Eip* z@Xt4WGsK=oYK`X$X}nYjOkplh^p+_*#t`vnq_Dd|mnBp!k;od7$q6TTd9xl7-oiJi zbW}_6H&PXK#!>wu`I#+Y$$HNg*tvtS~C%vgBFb~v|*fN!HxdGW}VW4{Z1E4Kbg z5kmp9>O3dE*W-@SV>tfL z+l&Oq!HvMX5LvLT8?GnNo`TuH{=8-w(!fUM{n#!1F`NI6Z4m~bx#RaD}UDi719FC zCD~C*grZoA=*5)f+4P@Nb<|o9Dcc+c$=#s;+s(TXQEA^QE{;M-MfoTgGNt1}Y#BFJ zq`~;it1IACi;Fd*aXt~!e!h_QONH3;nSxK|^(9j{Y3MGMI;)}Z+Lj2)Bi-*j{hg=~ z8X>McvyHDNokRJ)b-F+m6r@jmN^&dxMOHQ_ny&(ts_vV`=LeIux`F5UH46!W6i;lI z{Un6h?~BJhWUw7{UewrMAv%D-BJ0(e^INixmFkML4-A5^6YA!==+gM%YatL1V@R=> zXRD;!Gy&o|BhxircDx4mhJ-*8vaBbAFi}P6qJ;(w@`;en^M!O?Duh}QD$AET2+Hl( z!Q8vc6P>YQ_zoGpLS2f%*D%i%8Y&IM>N-YoGQ11Z-h6n*t(`_QCo3#p={BMnR(Xh7 z-DFm#1I2p{_ z<-WDeQcY_K#o7hqwKXexVL#yUDwG8IgA|s(rI%qg=fXd*xA_L@aQFjSB*X>>HCqH7 zW$Tt1U^eIr@IqhSE2MUy4i@S`j3-p=V06XyZ50(~;dx+7hD}Q|S;yQ_1M#jB)S!|0 zz)8E?z{5RQZEQei!e+ScCQzc%gUCr?xz?$S*$FxG;d$G6*_58hX+6 zS4j|^1=VYaYtFXng6zAj_51-s*J=tgbya8MOIvzw8om>S6Z}2MXPTa5s8x8MW3EbE zITZnsG+q+TO}rjK80B9h$SIoN53t>O11gWVZ`pWiPGvyc26xzUjUHsc9bu2~FKXHC zAc{Zf$ZoIyL%Cs3e_B;osu4Z=DYr^|!Q@hoNV?=m#awA+n#f_V>8kI#9A{lzyA(0z9nm4(MnKpI3ldS7X0_XYma!s8y z{U{ubLriwbs{X^tmz&WAHeO)T=E zr6`M6CfPG^E2fnIK*#`iA%ph{EzUP9V#h$H`m z;v6flvDP85wxi683&F9Y~EVxVykedA);Jc_AQ}a|)%r@Pa)>v4uvrtud zl;f?51IOjf{%eK2>IqomS=N=)oymm)*em`Z;!OR?{|Rw{#Q)E$8vaL!z(g*1+fY6&lB@W$vk}$kPCGF=Zh0)+xc)eG$I4uA|7IiL zJ|#oog$&;-7}rT{r-%p(4_;^ z2`)mqn2ojAC8RtY*oHP$egCS}e?llAdnO&bS%+zOGL*c~8LCKC9f*(tmd_vZD(^hq zUpEQ3OkxYC9g(+?{%HL&9pS<-2K!GXR#;pF9vjoBoPWyIB`*^|$QXDb$wYYJ& zr*VA?9zY=dHPvI!p+UNBWwpV?vPMzIZW;n(_8DAqm8{hDK3&^ebCwrO{1eW8TWf3- zK3}~ia^X*sy|R(dewB))Inrox+hC{eCUH${Cce7&10-Wfoi4&Wo^O?&ILm7h%h=WX zMndlS_95SXhaCO9`!V4sv{sB<^7?X}5|0I!{d)}uKd9go7=hFr1A896CieN>!i`~S zmY-`hRst~RY685F$$Nzy+>$;&(|>0mwX?E#qS>fMW}B=|ZLK|ER><@{#p*!{Tbl!) zaAx#4pt<<|Ph1_E_GVK`N_|0ff1kgttkJuwdXK`LZ5P$Q0qGElziyJYg|va{o7_Et~j^o6vAX}YXl%<2E35j zdxdzPU3MWGw=+?9DR|d{Gue(v`c3qxo)c~jRX(#QF2K`F@ymW6&?{N^ilV%&%-Yc0 z1l`>9g=kIEZ=}2R&QQ;-;4d~bsrv5Aq(ZxT-ZgVk`OD99NmWnCGmILQ$Qt7Rg!n+# z?DJF$vMQJ`h{b|ncj@tTO9MeQNQji%qhenxtSI;?RW46?8$&n?jB7AnMD%Sxa%tk% z@1hMS2-TqBvi}X4s09!*2VThh-93s`nMUZW+r=OICkcwDx!SrGNU3ll)6bYRN&2ON@9Ii5dp*(K;DKQ=h zf&5vZHG7Flxk6r^Tg}z$t-oyNPOOybG>sw9m9aEma0eC5m7@*OA+n)p&`06*q=xVd zM{8+J-GMil6cF!wnn8rd$NDnS#(5fyo-Tvlck8lL4j^O!ypY9vg=`x?Y5F-#pVsxMpNY&CYhYDLn&G1QIpVeqyX{P z9DB(#^b08=2J=u*fs|~DfWcBWT`(M||`x~N_g3|tu5mUsZU|l2#Av`Td z5Gjz$V&>csH3)26m}iXYEa#YQBiCfpQ8myhn?>`+nzO>l=>s0wi8QqL?nBPf#q{V- z6mZcwaL0oUtOyX`0c*FXHI+e^-fxk7iyCyXA4C+@JQfdFT*U!yaBHxG-t#e4Ah6eE zufMX+*+vZtYh5*hhLSdeJYK1A)ZIhuN?uUZ5`3pnbQOqIB>?~-Yv6^f-z&7^7Mq;7 z>p~sA`HyLv5l6HZAHz>{dB#FGK`ofJRuY6Zw^em`V@8eo)}V(JE(^7Zz5APtv1565 z)Bc|BUKHgq%a|j~RVLN1SgLP zRBcrTaFetR@Ip546&jZuL{|FIvM#&;vgl$1S*j^GuDaOLuPH0g+)=Lg9ri5C157+1 z;8C{+kIp1~7P0Rop+wxZn!A!kJdPtcm$B`D^>_YrS%;kB{UUu*!a>ogZoThDfbx-< z+?O6s;#lvuUg_WKn>OT`IIgylb5+r$pAJwd!KT&0EDJP}BgQ~X+CWw3Gy@;3r<50(cZv6DlymJ{1G6u0iv*ufIx?Z##I7%!<3fRHWlLbmS} z!WyTEPHIv~VtV;u8cori!T5{tYPz{Bx>10b%c$f9s^!*9YrAz>pk~rO%Ey=2>TYW` z`EI&4SZWKcY^HLhYtph!l_-ZI;N}OM4jm7F^b@Tv*HHY(=|uN;R8nivI`6k7imv>H ztb>Rz)pZCDBUmwt?nUtISb}WBo5rj|Os};cUqW2J8)6v6L8F0gf_sVCKq0R!wcl_^ zyM4v9ol4&_iIf72e%JvoWcOYn5&hw1N3GvC$Rw-oObr#@31ku(mRUM`_9L*k9nXKk zK+g*tWn zq=1=%xgt^Tce){kjbn)LN4yM;`kA<7ifGnKtQK%9jy>=~_U{!s44%ZORDx0^C5NO5 z)-&Lt>3!5ezEKMnQDSm!Tx^D)!K84!>FqUO@hNB}98Jn@Oig!DI+ZMooxolN5jAB= zONw>2xw_>RT3Z5XKN4N0P32%!uhVou`Lc!H8lkx6^Z$gPLF7L6{dDL3s_IQ@)-+4L zFqgZIma32|?Ltp0QTD%6zBX<-(&ZVBX_A!r3~#Sf4k0s$k^dAr^q(mA&L9^R>OKKZ z`EmeW$l<+0rcSasr2f))vyXJ)rPI+Cg65Q%|!TD^E!V>DPrk@A>bg1gk3t+EX#!-b&pWX_C4!5 zY6Tmr{nIk|7u8Rl9lIVVF`Y?6O8&@;n1dF`a>F)_*#lf;y|WstADgDXh00|nm~VXi zOxx`mu83h!)PxwXp)?5lVdSFpO$ZjG;V&5E@#>}#f(wa?U$1c+lIYW>;APFme1p6B zYesQ))t;k9yYqpZeeEBCM8C!(dJXPf7d_2mKIX0#3R~shK?eXKC*Xyg-YbNiWNhM- z$j1)7t$2pXVC5RO{*(ZBW)X9DcsCnPK<-p@{S8?})eUxJLoJ@A^CD5k`I z^s_flNuOhECYdfi`8nc58$ZvsT!MgCvvwx+mFwlgO+LOcKYPly)e+>uTvx~-)# z+*Q!EN|8R#rEeW^Ha*a^cS(nf0YJzZcp>L^ci>6!+X^UsgaDO2l9fhS6PopkF8lFeeds3lHVZsq3@R%|(17JA zLxnf(ve-!J7W-ognlm0llK&&OV4+m@K-V0)i0vH5nq=DIKtV!DoQK;@u06x__MtyI z3tZwxn}*NZjWNtUdwc0KrZv(x@nmme62}LWrNqBxF~P?_(FI>mYH9Mz&2SD2Clsq= z_p3xc#FZAQx+qnt_#MY>to#Xyy|JaFS&fgK1 zT`luUtU8P zH?tiiyVuk^9IQDreZnoZ$2Jwcjjk)GsCdWsnm$kl+2O*+c?WD;Q4{ z95vWz@O5oFH1fhcvnwX{B8rC8y{`>6=rVk*R45rGbJr2y2JW@-^yV<&WE2kXr;f7a}zvQ`PcBITB_twmD82N%{Qf!guR-cAes42Gg34oZ0BR zkWvAQDg2}~Y|_`Q0px8HS{|V>N2`?Hm66^K8};0US$KB+&u6yXGT>i|DSY4J)a_Uv zyB9eSex8P^*+d2|im-4FV$tzS=SnlZtO-CL~=#QY7%8a2qc78G49V%CII z^iL#agOnQVxe?j`Lax9IxxTxO@sGfKJ&mk*Io^Q}W)|$JT!<`#PO0tLp4mpco|`c! z8`M(ed50#VJRPTc&gE6?-8iaUoj#=E2TamiF+Wr{vwp%pe`wQRY9Xq`zNCbCeM?Vg=cY{X$#dcpO2;D^7T|Hy@z?tv+ zcBhWX?)JRo#!PpW%1O#WK^jeU{zH8?P5?74jQKi$2m%2nDaXVof)7(69-mFBw)8D)ci^B62`{(Pg z4B}w5ma0+)2K4Jp?1sE$?IYqy*r3wibK82zp~jT!$y{LZ0uwQ)8P(9k#8? z5n2Uw7}pddVEWM2vqGvTi*Ti&ZDag|xBYI&9!8W~8*RkVodApB)nc0HO26m`_uG^4 zqKz7P?6JRWqfqM*zF?iMGgUHyvu-~VRV*F-uFR7JRI4PgI@)0+;J|`% z%M-~I{#{(>myt4zfxtw#FE8gFmzL{CXwA1rPWP*Daf)CC$&E@bUGQzUR>}Jz*?%A# zaH}G&95r5mG4Xp7vSu|kl-6U}8He-WoI=!(ZpIe&u2kdQ_G)%qdd-(*uj4`Fky&`r z+}iVt8)IIdp(e&G8$DoAYGNodtr&^m13FZy*UZM>G%zx;7YA!6(lx!oI z$i5i@6mww1X9D&g5d%o1h|O^6WRK*y=>09WUJRaw zHKK7?%@=yso7~qi@L-};7}Ll@)MPw2%#RSwZS_O&%lCp{x;PIMtnJeX)0h)7fMYFu zfG6^KHxc;CUn(vrH9lOdBjh2TJ{&`5aH5^q%cD_ z8DA|h1j-&rbeVl`eg1SI2z0~{1u(40A8u~gJ#3zPB5(R;Y)B_4^Xah&U*!!yRipX6 zoz;&j>VprIgd~a`E{Ay5E48DG+B1+>sJ5hQ%@fO8q-!cpl9bz* z{Lc0rnB16SN1s#fgl=p2?fu@?;O$`B_L_Mr;S^ll9(C(7JKgU{>Z+ zQpY@RRZxPGd21q*3gI>$Q~9Y)vp5kTlN}GXooG-Q9{D1VwcMZkuCcr(-EM7WuVK4T zj1dSkT!ogl!HXetHUMG=bm`Bvq&woYfku5KK=0@_T!m!40Li2;26jxW-_6 zDivTj6qXe_aP`TnXFL+4zTSzvSQnuk7L7i`rDrrZvfrCM5lGDNgUcYv6cfo<>2*Qi zjHCk)`2$bn|8An}l1DL`kPm_XtfFW45~KX}tIYRH&K;gX{`}8>z0MQp+P^v$z28yD z{+gNOVVA@SiVEX=_>PEbw31or3u03$;{7rA(a8xxa?DDn9^I@&L5C5Nd8a=bpcSp> z+9)AX{v%=onU(-k*QAh6@efQ6?eB!z7UA3@Hj^v-wCI6#|N6auH$gC)ibL7av(pz=g8^*i3;>=e;N3*s>xFUf!{EmWJ$5o{x^)M-B(Tl0 zkXA5s8^`BG)PIrYubZ4=_zj!T%QO1O`Fy^g1eNT2Mh3ZW7FE&y-GJkP0FO44HZG-g zca(T!3JwU$Log+!agr6-nEk1PLS+>0|Nn^aK+03`GTgagR`e-jU6dbf!f{6kZ%4im zAx-%F{hvRX0$*PqiR}f+%$bSaB;5~j12mIhn(8v?#lXmz@X+nc_9t~8z#5rA;E4j? zO%&}%8>ZbiUxIu|H)UbJu zbF8t1U?7jH=viGtrv^l8)qU2fTSSV+P< z@mU8%b7d*ykjlknuYs;)Wln<>4qTX#WEzLQ>VXLoqtcX4@AvFR%lPJ+_nh)oyY)(8 zvrgdhuMu+biqCwYItV?*J6-tdlr6^bE3NvtR0p#scK&bSSi|R4OYSKb$n{mxEMyo( z0#9`1YrBoLybS%V*HKMixlzay2N%e}hJ#-{aXe2w`oU8U`DfUEF;NjDqw%Z02vDj6 z5QP9w6!LDO6+1|~TtW44SoBuZf#*g=aWanL?;W*f2Y9K=hvnmlk>T`I&gXujGh4C) z<2L)uYgxw^V4f9)G79viPSqqZNH7viCTQt6cGR}cx_6OhK3$wOI7r*dhM=A#vo^@P z{%`jpg~tT-rxjzP6l+F8+=xY!AT->cJvL?qkmpaYd)%R-5?EqD#ZaE)1ZUO?3KEj4 zFe%!Nss(Ku7zlaoV z4Wbv|lue{iJbEa?sU=|~y@YH3BfD&`7b{V*Z%@K+H&I`H6X)c#0&^)bEKv9r2r|?Oc2n`SyV#BOqStVr8Fz zu_yB>+Rb@H%Ix_CJ@w=uLIyTU5Kj)uFk)5^9C}FCY#-7A#6KnAt;b_m2CHEVk(1Mn z4KAOrK+D{dl=(zo$Cip6j12xYhi^-yO3QU>arlw4{&@y$kM7zZWGURlAy1!L;Y=nS_tgE#HggWJ5F3qv?2GC*x`^fheI;Anxod z&7qm(Gf$jfOPxcxV{k~!To|333}$whPDsFVg?9S{_-J=n#ss&`^&~_KH+QS|@t^i} zn+^)L4F|lHTYbX#j*`#b|L01FopKOSYs~222g!ije=xx6r0}w?3PZaTPBL7_l`jrP)1p?HQgBE0SHvG8Z zZjL-ej(ImcG^CeuFt9laY?h_62-u*1Lfme(gvE1c@D0{5rO8HDRDOP2JDdp{~ z*jV1`*SLO4<^wpvlW-p65~*9Yf1%nkQbrsb7@=og65(9*5Ie>yZ9f1}B=AI$?=@U=E%lxkH20f*{1@%yJCKRPb@@wSodN_@3oqFWSr0`{aCh(Da+_tt1E}4$_XFm7mRXW&!S{{LZK;v zs4n>KNPH!YuThmar??6dkeLdCRMrP=lV+jFNdQFAz!OEkn@C%XU_4~ex~xhb}uUU^EDKPQZSrvNop;<9RqLi zx7oT!(#fqh-Ddggf6-jMXLb7Ems3=lA#1ggS*AWjUBfit=tJsmVyjFp3TN8Te*i== zz!Sy1n<(f523O~WuQJ2ceE0f>)?Jv*ka{p34v4QA)QeoDBS?6aiN9q1Al8p-uF9Yw z_4qY(?E3}LgM&IycotE)gsRPFTAXi&)a4rL_vC$y)u#HRUkxO6!Av=aj&P++5cUJ# zI?mR9hJ4J*uqpV^6`n}+$t<3&<7I8)~TqwA*5zzBvSdcvg#?3=- z=V2!FpL|(^2_dkZRbZ&j1t5wAo+$R+L=uu>Y1gohaolYidq4Cg;G@q9pCNuZrO)u9 z|6qeWfDF>&V5%K*J_XAdcp@S{@D`$`t#9&A!!GybbJtD;-I4fJDj{E;p}9Z`;j6Jx zH;hS?5J6BXffs+1zTws+)*tv5+~3Sq4-3To4Sgx~mmvuT-viuaZXh_g2-;Wf*Xt@F zkd57z>_+y(3@p#hSkO3Mwpt{0MEnCigDI$6(yFv1?8lSn;~UI^<>}87d&QK=fyo5Ke_A-g*+WPE*NU;XNC{*P%p^{DyjDR9zow(c|TG zoW!XvNAZ~v2sq@LI>#9lnlq+sT5|x)&=Y_sN_aQXGwY%h!BpY(w(z0pS8?$f=WAYg z^{S)F3{314)6IQ&)CEmQ=+m{(9+;XFv73WGUB4bWUm85Pr#_1mBvLvQn0??Lr{gR6 zlp?tmyS{%Sc5D#57Ig7ME__pg>T>SH_8$>02uqzA@i(wM^NRMGkcWg&k;c+ec2H%x zR9k#h#@9UKJ#3m`YqQD~^k&)96lThfDddl+GnO7d^a~;*6jsOF-LyymqD0_{65mZU z$9bwqduL`umemfS14jG!bM)8YDABG5RE*g-Wbsub#m@(UtJ~II?&7)I8dmwPrvv98 ztGHA}x|oRFcG6$xQx$(pp>==3^3emQknb4Sf5MxMa}W7qtBle`3|Ft*82I)@<4u{c zK!b~?)<(pRS`=)7{HysN1ye?bin@mlL6*YA{5-j_Zp9tV8K!w~y9TQB~6lm$vUluayU zxY?JG(GajNai#lZ)2b-b7^BfxytAtNbh)w+boe)OhjF}%R|m$#(@Y9qXY_qH;6I@X zFJi^?u4Dy?DQh}U=OgC*2V>at^mla{YYprcKPk3={vLt-Gaq^)oX7j5&G67jAaI4xvKaay+J1iW z&e2)+W5KGL`#uAwfGSpYXI;?SNB{iPt0HbCMNC{!vPk}+K|m;toeD#C2vx7^?scUQ z9L03(=J?>RdCc73UIA?r87znsN!)f)KX)LI4bjFN+FI4R0Ep6nCrW!aQ6d!FjJlUF zn<6%W&6vxFLBDXEFhT3J153VaY!~}ZXwEMiAr!)YO11F08~0iJW5dI^x3t2FGfFck zX+J?J@S#{mb(F`u)m>e*K!iK4DR{R-Rvzm>@a{~WRhI}s3Ix3!*X;$LRQuifW@qxB zbY~(K?jpRVjncbJE*e!g?O(5sCk54{A)^VTq^A+kl+ulQFUUkGwmxe%qsNT1*mJ`Q zYuIrBMCrg2rN5g91$y35YFw;pY{s+BtyR+0eb^zxKQFyYpxU4<%Nq$Q5{z7WzNTsV z7xGr8+9(g4KT7` zd3$u^;1j}}DptU*IJk_Ns8WOcB*C&OuP@Dy;aQR=GXu4&^@?;&Q@noXYWEyI>Gnvs zSLg>#H3<$C;PeLuA@VutK?bufaOuy6Df|S|Gx6Cge zlRtg!f`urN5szm;^wWidRnZ~oFt(TH+*H=(X>SXWad6caG&z}?1Dqq52|Q8eyNO<) zh^`|y2gw)bezcKAoIGeQs0HuMHT-y3ntqO>C`L4piA?vihw=8Lc}$N&w%!nS&~=vy zDU>uq_n<60Vx%@0`KzoD-g+{F?WCgCUxj6}M3ITT+7b1jW$r^RPk#~o_C{0tw1hL> zG9^p|=f1pM)$Q+Q6`5pDy%A}D=d=I%Llc8M^OH+e@8I4}d5Oc%rO#6QP0>4$c@-Pqba$swB48t(%oGb7q!cn$__OTg*z*gVTew z-r?@+n%~r*E#HDK`=>_2uO53{jtTZ5q@R4qf!S6IkwH&jHeP)Q`fTsgSnL-cUbBHC z21YGGgQ}f>3-cclD2VFhaxe%hBYp%@Gk$YxXjDEKcWhWSs-<6O5ZV6_q4mUI!nPMC z-C|sCUO3D^YCckMnYYd8)Vi$lU!%DO>ftHv0uW^bPn7*`qABP^8l%UBQL7JY1Vs$u zTaHBk1aklF9utcF6v)F_04ryYc2|?=Kgs6N)~j-w18qsmcChn|c_a@eh70xL#a3VdBwEtBs%>=_PSUI>T@Ut^OZED03L3PuJr?k6=C$HO^QOQJ@=rNKGC z6Xm>{C=7vcj2vnLemxRw{)e39KQfd>r{W>sY3W>l;zvs%c(|Xs&UD^U*qmH149WM) zqV4>ik_cnFRF9Rt_I<%&rhIj#F`p$sTa+N1H0wN{rfG8h$qWpIgjichy`s>g=hN))zq1GiK)u3B1Yu{v^**@v~8|Qe0Cf#NfYXtxC z-P~B~ufx=F_ky9a{=o!Vi1&h5Gji7iVYG<`<$T+&F;-6#VhL8GgKqhi=87fCUfxgl=}>%Ev*OFpT!9~uA6?BE4Y@B*d zY625JSkSx$@ub;v$k#A^QZG|v=W>9fFA9JsDtLc6D0*sJg>U&)pQyAV9pmZ35!U0G zt~9-W`m>E(|JOSx%TRK|Z~L()^r}kNuuH6;j_Fm>&b3U4L6f&q%O8p{dO1{(INM|J63QRKB1|IL|05y3SK;mI(D6&fn~=EFtcOX zTCn7r)fp0nzEl7Z6#-9F^lqXiGeVJV-O=we2j#Z3dfcCyjNwr#Z)43%=jE$yOBTU2 zJ37m05!ps^b+?3r^M(dfSy{F#+Um6H`+Z?SM(_T8-IUyHrL=3yIg+HHnuNN622p1z zLxpbCQCJ?k%KMfQ@^)Mkqh1A;5THSNtRswISYe(Cwu*OzRISWEmTA83%7f+W$2CIm zNIoOH3Kf)K?`mFv>rs}G_>kpuf)yv5hSANCgAYLT6L_MZ?|-9N>Um=L|B?)Z4hzz` z|9t*qqumJV@VTs|h{~fW`4n++$C;ou?T=*7zY-97eb**jx?4UhT6ky41vAYu_1Y%? zox^UbsWl%_q04%Cf>;nCy6rWX=7tV)2AE!Hci!WWw`?qtwJsfc(Y5gdmo6DrtleV_ zIJ9*P}Il9<3MXyt4pm~imY`fqU z0)N?p^nHpV|2^&m5dg^nm?ZiIJkhUr6LF!u1X4Ap8jc;zgAA2|pD~R}(Rfe_rDg3> zviQMWK@`Sisk5^o!)=y*wKZqlsy30TCyOSZb|Hm%AJeLJqxHsxvI+Q!&%=?ObD&Z7!<)ZC*{AE-LD zMf$W~Kl3}k#T!CTqumb8ig+B1ltk9!(W@{CUv z2pv!!*EXOvk5B~Z+89Tp=jr&_X)SZLCu)Fwu@%4*RlJ*sP4gB8HH|u*U3A7v=IFs_ zi=2(!x{z}l${+aH2S z#dGG#WhH$DTR2mB15K zzMJUFyk}Af(xkXmoDqD{{1$%7-pbLO3EEyay+K6sD)mnGFciA8?q8sTX`!q8 zpiW(zwlwBo0DUNRgNJk2TR$2sT$KVLv1n*cY0x;;qUL>O?cn-1iOv8P4!U2jKeSJp zdJqn3aokKcNAA_bydNtuh4N}~96Xic@ivEz(I8PB0m~k$fhVedHxV^T!yiH|{QyhF zZSM<5w5NZ;vF%Mxz2AubdR`-s;lM*e`+Gi<7?+ddzJN0J-lTd~fVA`$?6Byi(6Rbx zuCv7Gi%@M-(01V4I19_&)T}w8v9eZi=DXp|yBML69)1mbD@`YPQswF{O*qt#*}_Al4RT)?vXmLM3=Tu9YiO?6*H=SdpB>%-Y3^vuMHT>R~$FUjOw*oZZNB+U@$* z2S8Kx6SZTjGwR!3<0yqoeo< zy*@w^q+|b}>K4&c<44>*8>wqV!dpD7T5cPUz zCLE{JuGwF4q8HLc*G@1Pd$m7K=Yu3_H15z>B~5)FNpA4_qLoQ_>7RL{WksPI8}iyY zaDu7g`4N##nCqlI^cPrVVVI7%G})Bq=&g60@8U4*-Pc!BThu7<Gk`R)R>;3+K`+UbY*bn<*kNvRL zZ;Z9a+H=ggW^5A1upnk7B@!$m{<`ZP6@cYAZIh%*fz|4ESGWs!R*wEt`Q*xh(cDg_LC2Gj>%6~`x=b2Y3*vVza zRU_@`^M+nq#(j&9nv?r$a9OsRkB)y^Vca*RV?Jj6px~rd(e;iw@boaIBX%yHGX7I3e-dBOAH-e@>)FOatJI zeD5s1?{km$LuFO3@?%g6SIf*4AODITf3LVqMmy7qb(RUNtykCQWpxrT#c}7aim0xh zKc`RpLu^m<5AB6Bw-@XWqP@f?#=!5Re`JxyMkcD%`Q-mL{?_TxQ>z*EyI5ztJu6#F ztZysclJEJ?7FW%LAA(FkqOa||6-~W*Us>O#NU z`F)`M&r`Zj;{6|u)6BxBSWTZYHmI`fwEuU~AODL+qz5caOyqeqK)Y+?I!B!-54}nc zoBGF~yQsD&Cf78rmXG;w3f4FJd9D)oJ9=$T+Cg3jdd7Xn<|7e_jUPLQCeq~;Rb%qQ z$qY(Gft*p0Y**I62dUu7yQ3w47b~D9{-tkY*>dml`t<2B_E%Zw>7h^nlRV15QsZS^ zr?_Al5+p(P%Ca9H$2j$`chf`LOU12G-A571z=pz!tDn*YAFX>D_Etv&6)bswe9QWe z({x^to#g7uiQbLVhL*ew16`SYs2!kqp_ zbd6!)*@op^Zj+57KC2d;f089ShHJUk^Vp^~wP}ewk7aV+y8o`h|8uG4eZBFg+-zZu zv@EjNI&7@8T?4gI2$Omr*B?4UX9|!IosLKE)5xh3$^WRr*F)pAy|)rPeR#a)V%ip5lTRQz*DQ>r=@X=u#Cq zild#`Kg+;&>79Y3#aljxHBv$V4|l8UG8XQ0$-{FUQYioAS@Ya@%pY!}R9&sg1>6^M z3M2@p_x4WQiEnF}OjA ze11n?Mfc7{^QV%@{9q|LH^#U0H+e-PTjzC~%z-5nbPh46LrWbfrS4qCBJdM>f&Sb> zgF4q7`&y+LM_`&!JCi|J%#R0)B-revg_cyml-}#OJot%f&3&iikrv38LfeC8L}7vg zcksRQ?^1s#)chW9Pxd#*8#^{5?GHa$UJ~rYo7uEV7{(iOV({=D4J$S0V(xW2u;n5* z{nw*~tNixR$DH($YN2TnyrR8-mHZJ!80-kSB97Ly3p{U2VK!>oI_sr{{SxL2RQd6= za4mMs=WD|_+r}76PrSy~_l;AuInYK)+DkS3r*o0jL*^mqNH_u2d2;tFLrMeB0b9AK zPuuph)Fz%2=479tM~Y%6`Z6Z6j%wH+*jTbZbQsSRTz}^b7%L^K>nWPW8#}#USzfa~ zWNM@H6*ELvr4Z7zJRFOW`69J4CjBWu%9Mo)yhL?c{T&*bk`7p{a8Af1vxcq3J`C z1>F&V2;{4UG9Vk?+c6#c8txfsVHo_>sO6g=6OZl#TVd?EZ_*ZNkp*xdelc4QmW>TS zI1OyILa~kO2ZrU3z``WV_tyn~dVNVlP^6hlLQre6>)x~C&zS|)Uh&wjzkMKRa{1-p zhjcnkwBYPS+R!&Kh`HFqmBp1i(mKOk(Ieo@<)B-RhtaDI-Khtx9t!9Y4q5CEA5x3tN89+ZkjLpr?Uox zMa=yom+kYmJfDb2=sio`00%JXTlw49(OK{JW~g0yraPWXntwFfSW-6^{jZ-fTH{kNMsQ9CQ{yq5EE7R`$<&nI{gVWyJ zKYBU-vH5TF^q+OU_Wn(+??0d4`VReB>MRRVzuFNII}`1NqY8_B(4Lc6cTt!bO^X=m^dUCen$MHc(lu-1YgO0 zIlu1%$iHzpL}gGV`n3~GW;!Osdc+$GuwRlm{n4XBweNdH1+xfq{u&OyiXw7#7j7Cx zexMeq*bkRb4%KzmP)4D!v4)@$Z6hfkY3H+xzqsT{praL}ah7;I@;Jb-?tDFOy62U? zjMK284zQisgUuwMEf^R!YsxetUa*x`7t0}~i*St?Teq3Z8R9 z=eJa<*DesEnHdC&^cJ%HeDRLXqsF<%03doZrI`jRx6)>Cqag%8_i--M;aQ;B#VM&)$IGr zxC;h8+vd&0YgsB(38Swg3XJ|Lxj_KqLN?z`J*Kx8qyyAgQ1?)j^F-MN$SlUadzBFmBu2_Wh{G z@?dSl*OxG0aC>7_NPoLC7fAfM<53{YmpAt z2A#s62*!sZX6c2%IND&tJt(Wb{2hSBP38&qgF}7a^evPcUPMx3D|%JNL~eO0 z^U>AkW(ALzm-gLSi+0jc)&sH~-LT2Yr0}wh>HMDe>7^}JO0kW8jz>YH+;XIHKHd2B zwsD+yb{JES$ZlU|JB}v`D8spP(RkO7g#PcsgzgAtf!j#|_2=raO?bf0T-}Q8NNnvly3W>j0#0^P&wt&^?tKz7^=K0NkV@1~!tlqxw=Hwpof_!>* zr%@02HF|dKe#AYkThgXEDf(gSpD)qfiTUc7&OPB0%#G_svkgx?a4>MxDc}V?%zftJ zHM1jY-4yvUl%dDdz3R;(8-LA8m2SL2hy6fwy4)py%sco6%sIF!|FYwQy1fiu)bogll#%xmhCQ>C8*5Tij^%(Z>=a#*Q~Gl~b#%hiLty53 zZ+NEo;)MktsA;PYxs!*uy!cw6XzH#}FXwTYEB(~lj@O4Xbn*?{tXT%rra(ptEDR@k z7Ty$vg=V)69RImTZu_duH>4tdht_ay&1DIaGcL*>pH;Dm0}`J^H3y^2>as(HG!bSe zmOcBQ`A$jFyNO0p7k+@uV!zxwWq68gK|76KomV=QgN`|}!l&ofCO{Uc;z=(EU}`Vb*lwFdU1rOiEZoqMHvV)Uu6q->@^Nzm;2IBh!1OxN*t3y?q3hbjPgh^xH9 zJB0{w!6UqNI0f(rm+25TS5qcy+quP>YxLjI^xgaJ(UiXzMAQwKW-ty1qzScbvy5~( zc_XU&v{~$@6E1WdVi(xu_x5WiRSKne{l(!<&mFz{(hR~|AswFKbNYn#-cz&a&M<@4 zFkI1d(6&Lw;<0%joEUpDE#>%@04W=yFlVkXDQfr}cq$^1Q{I2nRPn~QQdd00{VW3r z+x#xM8fBl<3aW)35pjL9cVALyCv|_AxMwS-^~$v7SAJE(tY333bWanX-^kv@ir<~Y zchQ|{t`kNVv&LZ*kRR*>{e}Z@p4$xP97)6HDxXu50ElK7=0_tHjDUP^oEFzB`i*j{ zX+NBv|BSmkR$F;vR7k=pY2Tn@o-~-Ws6eygE7yQNct5i>%BxCJYZ$=RT<=ugq1X`K zmG;0LwH!V?w#UuL<%@8JCu{(uugyQ+hyV!~lW4rBGKG`L#mCcL8t3EK5Psm!!z5k% zRb3l&S{LIN7>M)_=RwzzZz5%IX2ZzI9L0=o#K}*2&-qij{9P z3QcIO^V}I8Rh2vr@etjvS`zFU%4_b?nTf4UEt+Orb(hb4j}oJV8a@x}i-s4)hvgM( zjDf&ymS?zLmq0R2DdXY^0g2Q7Far_w*%OPd;!Lxbh|v-w(G)LK&Zp_!^JX#<@D7R&~Wz<8&-HVR~nYGg_>LH^c4)dOdKoa7m@Xi6@HptR?8%X z{>kTj_XYYUWO$~RkM>dUvh`@?Ae4qbqZemF$Bwxhg(rlwV{B2 zX8zq?9Q~|(S8aLq$qZ_$q>r<9Z$yWL9@~^^V)~VQ&_el7auBL^juoMfOoyew5NM8`1%w>rwQ*=?KC^z!Z{8>=nWsYz6Yi51U; z+g8`r@qW9RW{y66zaY<@z3Gq!oL-5pPodab*_Pi zdy^M2{;Ue5MwRKDs;n?zi&+jlC67;g9kF{xM{X@vw;b%bI{aBIn}TVTiXe^hEydK%CzWtW^qnk)B{HYU$ux zpt}7zyY1LyX1gEd^0bsL$E-+c-piBb)R^{6=j{=-fVaNDv%QttJrlh=ZLwlYhvJL| z2!-p-(L#O7USnvA=Rw42KO8wKR%r))j~oVwQ#*&GoS%3rO%M)y8BtM>q8lW6=Qg#; zgb5{DJk-{@)w*2Y*8OI@Fh(#5h8OphODxXyUT&q_V+$J!45t5|4_@X=RHE5ssMERj> zrwH%%+?=zhLPl57;mu3BGUTC8s6zm({)G@;m}(t_52;xcp>E6ULVdbCaNO2(78MBt zx4k0|BUE2*Uy~<-8L2aNQmms*qd@IHTuvh#{pr3+U)dZs&+SQuNrxJPe*cdd@^1M1 z<3$a&(Ni9+h)r@={61wCo!GA74@Chu(8y-=3xQ&2f20THyMIv9!A$Uu7EjE-uU<>b3QMtN9U&@uOjcd zBT=|X3Gi9u3a>JW zEe+WVFifp3c#u{u9hJX=synL27SENDZP9^3=#^&=nmDhvEqA8-scY%cE(;0ACP0T9 zn_n3Yj0|OeCw^y}{3`3Mg@&BLxqv3!xerP&9q^K#E6N5-KdRe86}MIo{cXNovhUAK zaJ_%uGoI~FI7KIN9z&m;zjDhjxpSE4CSh?ig9-GWK3=<+A28^Rb?4&|Z$cXx1@nyq zYCMfIxyXX}=sVm4rWqhoPc)i+ah+#R^w@-RGBoDa%9D1Jz{Q(a2z6$uls3oHFnMP&mTTP5&*_+ZTB{_F zfSv#m+L~{q-J+k*7p(*`GGCJl9+{>0sO!~Ptp^}XbIa*C6-OCiS}f*R-OJ}E+jX*! zNlmg1FSU3Wa%A?0PxuuQ8$$QGe@8umxt@Wj8xR7#`X(6Bp#;5aB#K)I zmg8r&!@pQHOLqH@#@z{3qw2}5IX(!8GOVtV4cLL}$i|CSC=?SuYvZT0O+7c0s;Aoq zCj*>UD?X`)TlWC61QFAjFXJQy*?pkrN8^5?49WGA;~3TbfumeB1Oj>EiuebaEv08K zljr%#q2W_LGA0!0jhu;-^KTa+F74UVesW`nBWyOuo--T!+JA}>Kwe7CNEsX( z!(Jw|cpjz}>y*mIzdpgPW2u*=URRu7?pfDPhlKH2UX@}biuA{zIJ*suV^9rMO?ug9S3zySI3w*jv6F7Ptj>T^oBZrv#aG$fqMtP0qBhwP;HMvlcQn0( zns=Y=G0F2tQ#~{83EOLQRSz>ozRxU!X&KLPVTx$TP4~e;*iW^KzC{`&qEZ|Tumtn1 z-2J?t7Wv#*bASuz`)> zv|={j@(qk#bhr*aQPRg7OBE%*T{D%myRgRjSTwEn5>mp2JMHeeX^Vb+{JZVuClW*< zKuU4cS3oLiKQQI_oBvX9_(Ey4b2Ct4W(in-mK_4kL9qeZk}CsH$(&JD=Gnh%%9^V~Wh^u=H7l z12rx@JjEx;Y`RA)TvU(#Huc_V>ue~yZ?LMz7IthS#1fhlrtfh<&Q(Ma?ZI}yIt6I( zY8h_`efO&yGaFnytX2o>mFDxFd(6spGI3?*~SHRU*gg)4*ncNAs;Eo;^c5^i`FV=(s$WdE* zPcN%e0ul(*%6-ZaFY;oROV4_(DAI;;=!J9564r%{0K{JLCrD9gwTGv2UM^9WFUUe{ zv1)@%J?vSkkamx2pj3WLi<@^>Na9PSZ!D;_E`g|Y7TGXk6!-Wki-`fJ(btWB;JR+l z+1^2wzvgJL@7mU9XEnYq0Mej2=B~31q-*bN?y^cPvf7mt+?U=!OKFxNpxP`nIGi_f z<_5SlsjID~_hS!*HwGFOhgsU_KxoF{@lrDq+N-vlm5DsF9kx}FJBNTh^PHbsbY|}E z8cEfj>rF*&b>{P+-=*0+T8J)wV$8eVS$GJ&>!NaY;#Ae^PnQY2RAJ^YXN|1K*=mD< zP0n!q3!>J|W8=Ev9bWn@3^UG6Dc$gCG9O@Wb8p#%MX{6S(rY-GX0?!$k$^4|qQK_` zomC%|zU1-)=Gg0&wyeVJSjFGqw!UDSG&WjEANKn*kw}%?ru~6))vmPZP@A;@rg)l3 zGjYU5YB>}_nX6YFXdDrTyKkP6PauwmKwb{2cl_(x>rOMlPee3?L?vqjg1X&Q2LCcR zm6gczT^xDk-M8Tm2?4JU-hf4ALj$28lpZ-pD1AYnw%PeWaGT)rdD1AOC$V9ir=Z3}iuauT8p2Sy{_NJY07fZRwb@Ot(#r@PbSG zIk`<5>z=7{N2`9HJ|3;}acT#>Mi^s);KNbcH5Sz_9abDH`l{VF_LaP1h=}8k%YKN6 zy%HZQIv7G8yj{u@!aj<$SUU}2w)a0c{bAys-y?avQM2?svv8?BbZ1#f^ZqU&%;%~l zO?!>S3C0;ZXPBB+2L*b&RDVNt$wBIyH99No=aoY|Ls6rQG8_COF!1SsBM&Rxdd{1n zZWHj3+jX&SnZcg&WxgNWY# zhhK=z?$B!{aQ4~SnX~+n{%C5LVvqZpTOCV-Rkq9`=a0#HJ|lu1XCvS0ve)||X2rS5 zpq4hTQRz%QT7gSxv- zyHcM0N5f%3hr@zAO?IJp3y-yLIRAVqCLg}@K6^O8&IwaKB{1K(XAJ9rgtJ>KYq&xV ziNBi(cqLLEUIrYXK2Jxy(y z&710MVng43a-G_%0Sc|IrntUQ8a=ZaYk#Dv%^&0m(#UnU_p5G_Q%hs&eO#pNbm1|Z z%2VRKSD}v`r;8|bQOhk#vxW@PLQu8K~Z^87uf6d{Y{d8)ZL-i5BCq!6A8g!c=s(M>ddc0&27w zh5ZZf`u)+B?PbCF=r&dZFnvx%Xzzo`y3m`=spALkF~bgEq29g-`WHRiVgk15-bGgY z(Po=nn?J?I5kufv;z@${tosjwL^Iysoq_%E4GOQ5o=^;G5%>s=gTu4rxKnqb5fWf_ zuLT2X|2Q zs6QPe=>=voh4Ia!anGM)>E!l?Ae8L|%AVY(ik``fAJxw#LPOMTnv95z7LBlke#dwe zl3DPOLK+Mr!|mtt>lR<`WHuq~6dpdvYZUcxjqS3SFI_WtKB+@udF7-$$G*=f2ix1i zpspJ^y#;8)iSF-sokLd2)CcMxx_38*X6tggHeB60uW{Sv(;(kLPIT}|O@3G(NM#kE zMJhTPZ#Yrr91Ch&s;%E6YU%R?sC?tA{oy~; zxGJONXR3=pA2*h$<(T*pZBO<+&4?>)qm9&uU#{bFn|C3_MOOAELDFN#|H-+f9;W}a z?Jgab;$)FK7}&7!=C;kUXuR6w;nZsGe%)bJS0`>I&(7uLq;+Xp~qgv$(%>ZPiB@ zmy+CVzwS0BIUf!U@&(oF9Lmytu~z=$_PQ0g6}T0+6}T0+6}T0+6}T1ne+gX49ru3z zpBKK9oY~4NZ?9W{TY+1FTY+1FTY+1FTY+1FTY+1FTY+1FTY>-W0`+8MfBxTKz}uU; z_@DpVCwn`;TY+1FTY+1FTY+1FTY+1FTY+1FTY+1FTY+1F%03pRzyBvO00$QRa_ey` za4T>ta4T>ta4T>ta4T>ta4T>ta4T>ta4Yb?Uf?0#k0s3;CU$)zon0dApgX$olfC5K zn6xdoykf+M_r>Mkzp=kp6MmNR;p+>oCrMwwK1$`%wWFuejI4osTGX~+ED?SXjQ6p% z402g+&_wxCRu%@sisk%IeBt(XD{w1tD{w1tD{w3D|Bb*IV7xqAr!B0g?EWKkhU8>F zmXw|UiI9I|#2O#3IT;qVLBPHof@*e>uaOaq2!HP5aoT9&%?>FWgLGRBO8~=}5;tDT z1Q}lni=C|Y50sa6WZF{E2sxJSkU~D6>JjafLSdLrHh?3TANFa2jH zu@{F#`rtuSu*s4sN?5lP4rJ!HiJ1L^`E~^2JS(%FwXB=BS9DAQW(qKoYYc z{q?Z#dGgI2(yZAl!mN5Z?+?^@j^I3SOJ6{Misbly7Hs)}W-KrWF9P0u{CatOc)8!` z)%lLd=Nly*v4U(By?&+>GtShhscb&(j0K0i++*1F%+q({L5>&OLxz2NB;4Y-^K?A9 zs1whVuhk;uIX;N)ZN){!myFc;wG36|tv`8p7OXpTR4vX^f4r0p_1cSUTEQZ}cd;?2 z`JWfyJc!=ILr?7@H8-U7hD8hoxgGXQ(|zQ~d!KWrrU%y0IWtb{9X~g(wnJ4CzlD-@ zP0WGPU#&HQhXi{&Y3A=g`kubQ+#ZyXq69 zZApLXQq?%0J_T}G8md3ZL?M?s5`0?w1`Z3JUp2L+-|Dh{-uOk?PW=U@ zJ5zE19JM^!yN|*%GrWmHtMWf`?DjXd?KZ!%k!kvi%*G|lDwc9cNu#Mfm~HzfrfR(= z{VuD$QN%cm5qPDtbsVA>i_&viUtrZY5D0k;L-(FVI9~4~dEAf;H$kK8F+Y_@g{tmG zm1Mh6_5f17mGz0ECnU&*mV$ec!}jtoZ=~YJ5(2=(f*bQFR_f~jiDBq!j&f{!-ZvqP zA8dUF4$Ko-+yg<|p?iR6qtzhi)2;9FEpRdlR@aZ07_F8uxPM9{W277D$U69wTKL!H zHLdyeeD@IRgV+1kvB6NXo;S@f%toM+)YiVT8I?%MtEU-|Hp!ySqh5|_>+x<^wudsQ z`rA!844PI{A`!|H--OLB*euO@|3s<^C|IjwDnl47JoMFg4}D4kzIM)D%QOVvl?q8L z`{@-}R52K<7D!BBLomBP6w5_6dmE#hGxB1WF4aPDgVvob#~`_XkTDLHS4+d{hT1`L zcJCn6<4M_3s~eI$g2bBnTERDDV*pwDyrB2Szt8yZslyae+QD1nm;Ahw0s`Kj$6iK$ z6SQwbxZ(VF9!RCaWyoQ9e3lnyf&HM z3+~>05#=)th^9jxC1Wmw&f&*zYOI5iF%}vLzQ?=yL9eG|M`x5R`B^PP z4}e-ibVGkIN}Gx)G(mb31{ku&PP;polO zZf;E2(y+3fs#n9&EGW0|*d}sAxU=y!gbn!L#g~RohQ_`=;O~av7mb-V*pQXF0q+jl zR~#6XkQnu-yYB=z2Sd6(HVnN3T_5B6wclt?$!7g48WyM=k(cP&wMLuPr64D@YjI?4 zUYMct$+>0EKsB>dVK3)0{ep@~CTOGM6mTlwh zyI9)BX$AK@SK&CM1h8f(g-yt9A+O~FzvH9U_Hv?3-b}ey!KUGAxo|%SAxeeFGAEka zg34MHW?~+=Ur+Etzl$ie9geep5|iGn9G+5ZIAIU-c0Og>G>Z9m9PpOh)2D+zO4UC^&}cRgtzDOMQ1Y-}`F z3CZt&VBp9VMIKDABImBdac#Gr9eW}&H3ZhLa-CSLLVnoanO{MqfkMm-n{WO-O32Z6@P@BDePcHO7D@ktCu{)0{f%i;??=$i`povbc;Cue z#)aYFaV;u2$<=y%nZ@AbaQC}TH4d-zOGymDhG4?WiCrm4+lvoXd|4sl=r3pSLa#6+ zbO0guk9%6Ob%N)@WvrB6Pg8=a?A3S|aY?Ndan}l8y|O3V89pG>Hol)|&jj!oy_wS| z?uOyrOkIG_PdbFV)m76~@7OQ&q>`o@xlBmySD`zaDfkUPHCRmYq$z#2`#F%FDGUy& zpZGM-%^txPwuFFoyVO3=Shz_INLkkeyJ2b!p9b_Wg-YQ1S4>&UX!l$1N-Fa@Kkum% zFDS`f9^r}gv8YoKiCA&_<}SsdSc1HdxJ6QX* zM~$IWOVskZHim*1ybP^hyxE;{JZg9jn7*E9lWX`uvdz{k8zX18V&vltJ9P4CDehO_ z>9P$!Pmv?wQKB)eE9bVCo7cV9v_mzZM3^P~Z2B!aoe>k{GoONE5 z4hrm#4JN69X3B~lA;tbmn9~oq*e+h@)r&tU47q?d?zhoZ@w8t1sr+tG+q#~h*r=)8 zDOuA~s{ipQRZ>^UAi#BUyOW^Kuw6DakRUB-N~q68c6qu!ydFrKHc)#4@xfTf9)}Lz z{~|cds!&JJ(bo8oCv}S2wAd3^!dJLxwL!MTtMSHd+19L_F6$1dC{W&R8nb3$7T_8w z+PVD6Q^}#xIK`*IQ-QV3QnCB=tbM7vY9Qf1na8m*F!1})2x>F&+H(0gM_J?8h zbsQ8lfu>-VjhJXRuvw~8bVloiKcRDZwJyG3m0e&M89%2Bug;XEmLKM=;3i#56>&-l zYmIBx`@*g%pge{rUgYclv}{=I%qh2x507&O?jO@WB!(?zuSo}C@7qifQUfgA?U1U0 zIwm_W507avwbyfEWgqY>?`+>M@61X_!E>I!n`=u)}X`gI(V5@UL8DviE&RuIiM! z$El}|p4I75ZV99@2_aF!=KvJznv>JDxkQz7N8_=z)ogbMF7KKez=PCxVLg&;s#2#K zjtFwykgcTPhMIZ#^||5OYn#+~DNh`Z>3=Sl)*lu(&Vqq6vDE1G4uWQ0H?nuoQmCx@ z#KxF$+3|Xmye2vCK48qjB2Zty{Jbf50_$fMZs>IO(-QxQ{gsyWO;=- zoKeib4q1B=8ss$31%5vniEopid^Dy|Tm9<1gJ!v@7p^R6&|BmW%adpg=8y>ptWr+b zj@Zvd#iu4tr@Q--O2XYPp1Tu?bEkIp>4QgW92jY@rG5$HxjiM=9V|p6#Py>?+f20` zFntmDZ*FLkV&BnookgoXH(4XAG_p&&22%vuBR(u`1ioCWg=n1+qLFC}2B?Iu3-JvL z9qk)pGWo8@pC&x>wNJI#Eo{Ci1UEUgHa1AG*W}!E0&)`cLQRKF=qoIpg*BU}{PJ{l z8vWwJ+t2#s3^m91p>~A}O)OyDy4|>=C5-=6s(TiOKkU$_!d9u#Qy>b7kSZ=5??2?) zNTwE0_c!s?m4Jb3^x9fklH_lonWk3<{qmP}+>*d!gtmSRL>dc96M`wp< zk~Bd}E^nZ8nAv};P6OVXOw)PdnbTleLc-mh>bu`hr`#pg=BZ`v)*Hieh3Z@*9NbK$ z7I%rzKeb6+=$jkm+MN2(J)pS<&L~~+E9cE@qqFz;Vsfe)c<#KS|InOALJr3yA1^c{ z65FTfZ3gh~&N4G)tZ9-|?JCiKcMwUjq1KN(`_rw&7qk1Mw{lFTF_E^eD#z|( z(04bv!6Ll1!l+9%M!Pa{-S!&x`!DHK`mExnm{Zo#yu1b?1sw`;0+=#1)yc zcL=pEohAU`bD9Lgi@%nZH|GP`q3-Oe%$Hb%{bst+miEk1EYR%jaVQR#lKOs`D%)6g zY|_SL^(2$n!XY)->Y?J_&D`F5@I3f5CU@j0iUe>^x|#g`jEg@wobw#N&Q35~yzJ;KSKo^9b=nFA@mL0! zAoVSF(>WalJG|okNX`{g3~8Ks{@{8~i}pP>_}P!Eg#c#aXX>KrJ$SX8_bWS3L)S^w z2Hy)FrN8oNwSgk#2Z7G6<$eMI|swoW6W@eJhORgIq>CSqarf)6#ari=! zH!g&DmTe z&E5(13;K!WK{d)iCr`orXULcH4Lh^rdTf=1-#ZMPd`m4Ar3tFOe#_S$ZRn3L8? zmE*BQv&}9h%kp>6F+#vX8}{H^Ef)E8p}kmKT6NC+U;IzxWK?pMS7N%U>&lL3;D>1# zz06ALS z;V!b`X@2)AKs`tmx5I`jh=nV-ozGXrT{;`zbO&DEj|H1q9sz_u7Z|0;^TNbxe5u3piGbod+*PEM+tIRAS7^C}X1fkFQ-oFRY&Cz(Dn# zMhgktSdYMx{wcP&v<}Y6@5xW5a3<3&xP=0nZJkv>w0)9G_jy0DqQA|U;n@--fBgHx zNbm~g!$4tOY&sq>n)k%rxO=>)z$MH$e+N#hatfgXI>Sr6M-3RYToGRI6A)q2KaAUv+B33c+Msn@ z0CX;_dNvbeaJ?5oR)g7o?7VReU4i=7-chan9CQ4~Gcn%HbyBYX za-+z$O#qp~%Kj0F4Zr?nbBxxCILHfk9`@5kcJ#dRwc2}|TP9#>d9@p6H<0Zs70W-B z61;{!tm#R_YG=RxbegUF>9dpHA|T8jI^nMO+?Rw&t1(JnS{;vaZIxu`;4m7hKm3j30==zah@I>82Se)&{skk8{m&I-+N1+m##SOx91{OtlGDjCKFKCfhz?s?>SzwzvGk z&dx2+E>0_5JO6q;CKc$pzk13JjKYCLq_LftF6@wp_BwS^`Lf=!?{TwrjHk8hIlk%* zBejiJYtB`!ubyMf*0OaJe{%?vV67L1c*kgXgR%psBcbT0P(2+x{Q|=Nwd?l^^z{af z$GSZusL5m(gtvvd2+FO!X*)OhrJtRqgG>g;oB--U3zfeARa}vyUfW-|Wv0{iJdFll zDOSzLZiWS24>!uURj@p4u-vBR46$mGTO8tN+c?xBYxs^zHBlThZFrnjA$la3-)h7^ z#S-#q5r(i^to7WgT4VY_czx`w>O_6rJVtaGcqx4 z(Rs#fm9^@WQ$0j()HccpnF2kr)c5S%L(6?Yo`v_Ggf4U*=hqj0;Nz4NRvtIuoab~_ zC{-n*wl}btJ?v2xR-e-q*2QLUcaA6)!mpMPE73uEJKWam``l@X`-qYh270BlM;LfM ztW{$nssb7&$m>R^=8INObzs&kR6{O$`&Vi0YQFLTmz-HZ29&*E;Xt}d!~FS13!jlf zC%q=Je!JcqS{vj;~c0$hVz5`B68R1tba=7=B2TbD8c-k98@DTlnG@Pg zm%O?8a!^xQ`T+P7I{T}?BwrdOTh}NmGK_CGFk|r7n0)XwP30adT6NVr#J0 zR(4LlBZYiF8EMLplz$>`T*T^d8Q4iau}!0G35WcYPWnc9`;pedrED^V@|9z7!JC>I zGryc!;+-ar$Y_^bj5wc{b(@GQJKfqwT@n?Z=_RW$zCNYJULmkl3!OvmNxNU;nx>6n z@hMkXuk)|VgydMX3dq#*OAR!YrR$nEDx4(-#C&m8W>FA#^M29q!%^k?RgWML{mbfuXDYYB|gtmf!QS=xjMHL`aA5~w;*2h zwaD%8IarGH+n!5@aadmMJl^tMRc}tK$xU*TZj2hbR?5_v?|8tv3^Pgi zEuS#CDrIGFfXOS*XKib;Ix;eKgUd`5c4dXv#_qw51|U zBzEqK_`azsUvBPredCQNa%Gre@Vn_&##JnjsjRZme--ehQ?5i;)L`;!P&dZDhT=;liQnBTh%kAUs8>DsOE zFnscO_?M`Zd)JH#&;=oDe;-|PhT<+{#lp$*m+liQ^q@Q=^UHGj;oZI9_6J{6fThi@ zdHup@q8&I{cfN-UMf4Sby-3XXi4tJN^Hq2yxn@fe6sIW-e2JXZw6J_$!unF}%d*8j z&lBOhp@T00N09x<{A{ft$XpYlHj zXxTmK$*~5<6q=dw%ei~wN@d>}`MAXO`x*70O9MmKP>~-nnvsrw!=m$J!I+_40&iI}P`+KZ^TuA~bVd3mO^tJ2 zW+#x;&?=yC>%&kuJKc`DYTo#_ssf=b>v;9|9UCKG@tSs^X#_X3>s! zs%pECE+LPIf3(?$+niEHcM$52AcunzsF<=PtN=xH#@wZp^8q-EssJ(V$CgcoeEW9n z7!chCzpREwgubW9d19*G(i6%h&Bj;hlY{GWS5C=QoA*vOeZ}zYt5LO<1ijlVx>~>5 zy{|-MxhpDqWlz6@SvEjFL`m0Ts|3SHUY8)=BvfrHws_JdAa^8jSq@agwo;TS@YB1u zUoLO9P_rxhrZhAE^x@~>ICO|d4qDO+Y4-U*sUjb;_htDDBv&{iwL*!F*^zN(~$rv-iu_^zKf)9(lHvZ-`EVL#5*l;G97~uW zfm{{T6Wb0+eG6Xr)`eL?mVd6}peW>Y7VZS~cPdY2wfnLwVAayw zoyy_{w0r20YIv(oQ7iqptnk=BPWkkkH!oioKbZR~_2mD>CDgl57HVd0yEgP({Q-gD z)WGaE26fgd`Yjg@z2oVWHZC(e^vTP7-J2E52le}K%uaKopr66x3aOmqXJ&PkDj2@R z>eZURAL`Wdo@CH^@5kv)JtlQj+35RugQ%p-;ia>Os((4Ut9kHt$W7jzv{ATXNOJVc zmyWajnpF3#s?)B?y-=i8Q1sf@K0l)V57g7t3{9vO_sTeQF?*E0Mwn{TmL#i&py02E z*VMnX@r`p0&%12BYT%qv9Y)HTCQa}2>BEBi>$(c^YWf|zXJCHj-Q3?f;o$Gdmi}c>vcJFU2TJ`8%4--RW0Ur5x?y|E&b7i%qt~2F6`L?@_?^ceUj|z|iuhzY??<~%f*XF~ul676 z>UKEZ%wX!4_dO<9SUc9*zmF*I-|bcN#?xYmuf45#PDlBM(Bm0R@8|od-*)P|!qB$E z2>nHJxhcc1J`8=Hxp@zI}2_Ue88xS=2|Bc_o&TC%1NXco}jgPh!&6T>&Ab zdFR&N?LQ*n%aXfR;|gpAhv!{PS$@=N{LPNWnZMJny}yyX?Y`baQcDI3#xE|2dN#~R z*34~{z{WN zk7=p*Fe%`(`PcQiqTZEngC81ibchO^o%PplMM}`>RQ+5_!;L{fI)2BJ54dgHXt4U# zk};7hu9sb$);xEoMr|{VSTXob>rbm!4z|6a|42$*tF-@=!h2Fmv6qfL3et%X{)q=9 zGFs*I)T}XHTC)E1q=D6zwIRXVF1PH{>#OCXFOm0E6qUKiGP-!<9W&7Sv5PZb)G+Yx~KMs;$!1v%TImD>_0Z_gsrCTc&+IhQ$-^L z!Ylt+H3v4|naytT+T~a3d5;r0HDjsw>Z~1+0}>zh8GS=X<+$YLy%GYKx~p^IlUrD{ zIqO~2a{O-Rsj(Vge2<*pU3~5Em;(cZ4KrV9cZ@A~buM?i=epUst&Uk4e3BbqfBuTB znc)VF^9@>Zon;Q4-EI~6qn?`J)yWO}zcl!}Uwe^QVe@ip(?zG)_6lEmHnedY;q<+p zXj{nYXyWM)dKl5xxFEJzt+Ub`~qDMkXob z362ESDXjm{Lq)3b(TzsWk!4e4wtd}U9Who}NmTyBgod!_=N1R^zvjM^tM(~;5$cup z^7)g|zf-T1`>ZU{N$L+Lo~kh~`83F9RfL|4vgQr>2ZrOjU(j@r5ElQVUccsg8SSf= z{Yt&XJMS5r?L6-uIaXM7?t+v`ZtY{~Y|DT{dJ;p1+L_;#h%ubLP@%n8{;b*OKTMyn z)+%{Q{|4=GB?sj~d$=4rXS~}Y{6ogFlp`kxcYQTlw_kitf%Vyr8n0c7@0@wJe7xVs zcM*R-S*B(=@A)#X%KTC3>pskKZ;HKcFL#Fe%qhfP1O zBX(o&H`xW7ZzV=5UC%MyW~5%0lXc}!JXv`0UWA66ts6Fp@)=eGZT!p17 z>(-jzI(GD8!pM|Kwa1gv($<$vFX%B_&Fr~|(EMk;<_$~v*w|m%uM9I9Rea{fjQKJr zjMT@N-MhZp`0A#K0bkq6M?{`#B|A{!#*L|4#FC05-tL|GBHMXdR+;>X0b#EOmaE8% zED#j88mT@`>8+B?)ECryf@SGgWD+jy4HQ34LQM^*Ut}232lEr^hLK+i4-$+$)tx`zkRVq#9KK2Kb~*VkrZ*=91Lh)Bx{;Oy1i#^61@wxb1BO;L}sGGuzuUCK3Xhk8+K)??YKDYoe!+*D=rjX&}!(J@8tO)I`oWo zm#VSpe?6+g^F6Z8&pg`gT7qHoojyb9J_Q8}Wn)$9 zMy(#4oV9qkRDxrWNl5TFJLQxyJz}CwV&DFOmV;DEdymSCPPq73yQ-&4kDU>I-<+g( zt-B(lcU|sn)LfxzRmQUI-HwaNyI%KR*6*EIgR)k?v_-`^Gt!D4W#V23 zZ~uJ1)7SQ`+M6$vHp!^0R~z!COT0p0%!01Z#e|wa<0*Y_mnyZ!@0XtMY;iO0#OIsa zS{+ZDS~V}Sx7==%DNdGp(uOZss`**Ia%{fY0Rl+zfuAs;6sl!Do8irg={(I{wA-J4(>V%B@ z!qn3>8$<1$rrey}-zMn90iD_wlUDWmo=)}kSgY|18oL>p4WAHS`ynXrlx}wX2E`pN zZ7NOdbfO1l&w8EuCmv0*TYlC0g@|C$S^44qrDj2gq&wuS3<|qArt6i#F(vclw1!*@ z>u0)HxA?)h+BEOhSH@fFON~z*+dZLclG78vth(P>LUjk^s*GwgZ|*hg7tY;lB>GIt zo_=t++6j@K8ji1C@0J%4+Wc(S<9oZ$M)BUi(ym*{unW_awVDzaZRnIz;=7^7bFoXO zbc;7ia-9z4XA%XATsTP;rTJZPQGjCgmq@8R1mG3R;*vThwkV92f z-FVA6vxQdTkDKrEiOHw7YkzC=xhkd4cJuOfl@8QzqbRR3tISX5t$uFB*Uf1cOg{X9 zcEwpvG6M~Jy_6pPvi4oa{ijctEwHm3u%hGaEtiGwJA}%ZOmI^@*wDD^N#KmRF17vS zBTkR)l6bCs+34NdVrRWby8Syh*uA$Njqa47dG46?@avBf%xaP>$|Lk*Z*I8ZnP21o zP)3;ek2SM-?v@v8-uR`#`&T!A3zm1h9pd+{MeA8HyLE2P`PTB&Q_I{^#hR84-)5~d zvJQBv`1bGtuYx4Av9^2kwP#cv_}Fr&(SlCeGI{M3lg!Uc{dJ30PLQioVP%l<<;L#9 zrcs(&()#T^eL63>*{-OcoTT({5kc0D#@z2u&fMeC)ZL6^<35)!lou{7s@oR0Jr>^uG{W!R0zT%hq)f-P| zFDP)=dcE|c+*P%f!rXtc7KZ=*cti{7Bcs~38?-htHLO_ou2bWV%)*E6 zHhC*e%nkN8Un?8v<$k*})%=%^iBYdAnyx6WFhBAS)a%o0 zK$42V+6`S_End~ZLm_U0^s4%X#L8KVW*&_a`Lw39VB*`>%O`&o+h_8o`(fh_);`Xg zL^k(n`8jQJ=;Sj|9moFrqZc9iNN85p{>9g+b#0ubv539J#SnVe#;@kJ?HtTAlRr+`sz% zyHAGM{^u>e|2=JC^z5MY>f!kb${Jx})4EEB-);TMA;{s1>%eTKZs%`@Ejb{WA^acq zasQ9q{{N==aA)8?^x1>EWAAF3#7)uP)2safFGbb3LB~A{r1m*2HJKzKRQwrE>if`b zShPa&SK93}6&XE6(_VYp!4H)xX8RnQcAZt*_2i6}h*-$9)_o?4mLDpW7mW2U=pMDr z@yYoRDb=a77U$duo)qi+V3O;`Q<{_1r6g!Wty1G_4U|F{Y zFPD)A|9U?|OTo=eqTO0l6q-zs98~iB?#7Mve&!3)zdWxWap3X%=5|}0>yN&=I%k=r zlHb-Fdsq6c)HQql*}yq=YxO%TX4jV2 z*JpjYt(WyK;(1XgGv~Hlc3io-V)}iJfrpDj+|P>$_x)qVRBt}sm3x=z|I)eon?19h zZS|O|=n>j?y!nt!@9Mz0IyZwqEZ-9J!unN_*z?3k-$Jc*lEzHX$u>!Av-5*^lvs;z z(W%eVN*v@%l&(anSd}?EH`p~&%s}JQt(VbOcWYlvZ&$L#F||H@{r9iCNicxLnY-kfB!PjQjgeU(4lE}a@u*>a#l|GO$1 z3hpO_4Ib;Xuw;+i?q`3X-l$+_>u|Hvquhh{pBVA>rPM&9eQ)f;x{fHlI)Amu7p2@| z+va=-KKbm;oY$Rl`?RdWON`rf`SJ^gp?>KQ2%zv{4U)619=DkTxtX$uZGk8#e?NuS?0KSe$K$&NFLCR@BzJGMEkX&2rlM_t1vGAaJavOJw7#gS`m z0*__?fp|;gygI*AN?C7w*ZWdkdmFpk-a)Hmoi7`Av2U|KOQ~Ca&9P3#E=x9ky&%l& z>%0Hn_`UCM%{v*nW$>$I<}n{7?fU)B3EscBjx5yq*-qnoyORqde19cfzsQWsr<`~6 zl3&sytyQa=W!7!4rCtmlJl@oAyJzYR1(`QH>xXXBI&T}{RM}yaiQ=B&Wj!q3IL^2e zv8LaIRM^f<((%*|1Byp{-)CvJY3(q&R_s67r0@sQJ$xsBNV)i{LjE$3tfU38tpqbeFK$uo*cj8QXUHO{l3Jf! zf2o>0ZHsm-I#}Iw+w=O`^Thb;#|u+NJl~g+H%&b2x39Cvzp_~;(2o*z`&XxB!a+Yv zT6{0rC=;*qDm3;Y$W%QewptYw z{!-s|>7%Z=oVWOJO4WOEyFn`!J&V>U8-3S&uxmT}KTxvO;Y#(Q*TWu;5Tsf@&yVye z4cce}C@C)cXJukLePcVJ(s*Q;|1-Gso)#-P=>|z@q#FdEy?)2Nb^j+12kR}IYvwz1eP*ul$EAB5T?+XBjD$r#}yKd98eD<1%yc6^*8_qSE!CN+jZKh(54k=do|meKSIr z*1wPCHV|14YAiNq456w^a}Lh;2>akl5e1ZftTh;tDV%(c&cZC{r?Hia{>JLWC8I_6 z6zOB=+0?9I7$a_n`Hwz@GdKXxA9@V`z}qKGrhE#!U|f#G6~;;8J}V_zIggduRea4l zl^e*?qbTm^;PN8?m9eN_p>pd*Zl6wvTTaBz!Z!lwkYgo$&SIX$V@N&hS)riT;c0%@ zGw$Jl2n&bJV!K8N#XQtu&m9c;de=rbr{C-%hjZF(Ro6n)<9jVDVh#M-JBL`#VN%MD z-u5s5!w%ZoYKg`8GJKIHS9P|#C57+JtNhbc2N@Tk899OVUrwx7Oyn=XE|HrXNeI1P z^0Pv-BVci%nR=r@&>Q5y`id7C`*kI5GjR+FD#WSVvwB^K_k(>}_1%DjIYKvHs3xs8Ar*9MBMD3M-sv~f+0 z-dOn-5|N*(kPr7Y897u?T#ewr`lb}fKpiS)dnB5|r-Hb;+Ffx!pmUj{-P z|FA;{9>1z%*x@K8u24&0las=Dz;lI}!(n*LT$2)2Ji)AQA`pK8b|5aM;MYgPrLp^* zy{Y8fk(Q5!$uxj-A5V(F2+>4>fhKrS8`!EJ!s;#lH_|!T6_Ng~D#p@Xp>v(v7>82k zUe8II>etXHsZ?pKqBGua5AKb>ld-T`=d*7@8pOy&82I<+kXBaA3SlQ;5X6?BZnU+DA%z+bxUfWZC49om>-NPPI>k89dm_q_C z+Cyvn6}~r)8nFXSS$sa<#2O`mDQV>0tA>Zk6zw&EOZC@^X^PIA%H$6Jsw{*cYo=y9 zq3KK)v{Q@{B27MVE2cf4zOpKQ6G@)Qp1RZ#l>tEU+ONq9Wl0hhz zqI%KgdDg>MRNZw}qsrE&{&GLj|7Smdi26!RadiUXZKRiiA!9l&#IA8mWh#u&^bf)%xPYtGIh1;kyXa(k2QeETaQYxg`BEdzD3o z#x+c=BzQsAVFq1KkXnR%HJJ-?M!jSY^SlERmQ%J<7MWHp`52;9N# z7pQiZAa~(w3$WMFHesjy|L4tUuy(cau$8Lo@Eb&t$fAxY79{_|ea+mVyvK%)b{KJ3 zKB%^Mk7sA=u8nK2F zX4gg;vvtSApnJENCAhs_bb>AQqCab+LK^+qU%sBNu@9HGM%$Sp5zk(?n}PBs4ehqv zix{9$5?J!_|JcETR2?X@Iml}x@;ai0ECrCC!nE`4y}K=Vbd}+S0er^rI?mLwbRo_UTHWf*}a5CARnD(X%RXsTw3 z%A+DY2d_^=>j~i%f?gn6BRUWdVjCY|0i*wkJW*iewY)wedkVe34LcEbLkpzD6)RL` z@8Vy_f>yqR9plV_?A}_Bc;9h*%faB?vQ*&I;`2DL`9=wMI^0%~XIf!oPx@7SRbfa# z3@+!tBT1kj-#R4TAy&sYJ+wha*7$N`d<(3-4>54;^foe{0=9YJ!#|htFPsUW;uU*P3mmq3lsHZ^CFYCSze9>~2Er_JcGd zfi~|@m!;cVZ#Hay4!uT+lAn<#DcoWk5Q_Fx#qMrb#GuLM^3PhEjbumQ5Hd;lx|g>U zh-K>mD>LD|2btU8D%%qE+6fep`yY6~K~CR!>X|1^a{B))yRCemyao;7XRs{wohDIr zO2uD}P&P=&Dp4bA2mDi${Fm*v5{o5J62vT5eH9ISEn+QiPYZe$G~o%@`nchyg^z`= ziKBi(S3&8WFrz06K!U*Sl>hKIm^josh0{Ypr|IGoPEp}ih{0S}VB z6ca7RsucLq8SMHPS?s-ds0UJc^w|WMEL1cQIm`%Rmqtv^;6T<4bok^zU zLs~AjBDRxft1VKC?^FM$ws4bMj52WuiHQX8L8YPKYv4G<+Lr1h*^z$Ag2UeO00kiZ zVF~#U%5V-}r>Bs-b$W12Y&M8Dx>QAHhK21dOjuebmUz!-gf ze`KG_N2H^niFL2KB4>Kj+~qofSikERAX%v6lE~dL%uqC`oXHtj0Tm@r6%*R;g{`Du zH6m}wc@q#mj#-X5NHZU{(#ZU}AA#&x)!FjXW2WfMmlA)1?<&vv06w~ILo{w?plp+K zuLftZ91!=LzN37Mzcy0RW|Cik19<#FXAUeq4;7mjpVT)bRD=)c6TCD2q}K>acAc#l z^^-TzC_%pm;jJ|3*=qz&n+Th)erJozpHE3idsh#>X=LmU>decrw^(9Sm(F`Df^?ok zZLEKT91!%jM`q_s?RxbVe|~ix%RcI3u5ulL_wTttWh`XA?PPAEOY}EITEws_ITHN< zwt(rlz{q`|M=mVioA%H20H|a35-J_Xt&&%LxQ%ORc86^?V)Ao~&Yu{p?TlZ59jGps z64i;XzlajNyG@r9D1$QuvWFk5>T3{g*eY_nCK6#Dv85kot-ki1#|EdZXPLyDAHy|W z7bEMaVoF@Tg+8Zm;5A{A?>{YZGcdm|i8G{S{BZdoKVOj+3J*$R zlPH$^q>}RuWZ;3=kehgF`rE7!H=TJCVxub2puC>Jy z&5RZo@X1Q7d{1hqbNSfq*&s04&k4l&V>7`A%F;KD4ZLndJKvGy5>) zhuyXDDyyHJj|HXwiUrw70`;M(S zNdmDZtwq$aKR@`Y-%1GtWJx2u)mSMw6l{-SnC;iDuJVsW73 zSiW1eW~dvJbB{%~u-1nMDExs3EM9z)&GMd9y!`E7VXiVww?MLnB!W?ncK^O_B5!Ej zOG^0d=Ep2|E`J}pC z!WJm_-`OCoy@xlm*)@Bg9`)*{HRrsNpg(XLzFhOjiQscUCat?1b+D90n{H~|?SQIhylXo6f=eL6QxOp$7l&*AyX70ARoNbymNB@< zb9UD2_JArftFs@Ir|TQRKj8z)oOfk-OxF{~M@Xb$Kh|G)x=)d;#GQOM?>LKM<;=_6 z9A>FFeF1hoUx}y5Sdx_z;mkU?qCn)T=+!D6GL8&BzK?s8c^BH>&m>s9zz((`R;ez{2w*c)QS3;Qh_fpyk?JW3%-e|CdRJNZ*g#R=3}0lWwPLgC)PCmd{iz zcTK);QzraO9&q&mR*RO4H|l{#hhr%2>+wXlEeeUXXr0gR;RrY0eC9!fUo~~`_g^ui zm*3W1&z18(`jVY#@WJF%zlx z<2A<{Lh+NGlUA&Yb0haXr{@zHaYU2(W;ZM-?vwDS1){#Z^l6{c)pe(Vwq$uujRY2u z@SnB;IN9P`^Wp20Mq9R|A1PI3I{o9~{^Vnzseg9Lq~gV801wV= zDZ7(<`=<$1@A0;_{_D{F%f9N6q z11}d4B=;0{DsQf(xMA1L(C%%85m@34?u#x3YPtJWPk-%*DYY|!55LB8e+6l>FUI75K+~mh}n5So$7sw*C9e47&eBIT1P~k9PDCrCNfk72QF=fZbPYvD1#_x zn~xdYhHbqzNuT=lB|jR`IeOU}6SKzb6ns!@=q(QnFMLkqiD_t2zJ5=oPej-ap&-#y zYDxRE+6P4A2*;|BIV;R;O}oHFcj!ub{NZNQfE~ za76??iU`Egkyk5G{ub^Go({6p%Du&lk^e^z1;i_@^WvlXl(MAHbbhxwAdgY z%^`ouR5^i!Rh#-t)DL2Qxa6n`3Q~<*MZ>yV5Z&9W1Hdtf%EVW1Jknqr8c|iKsos(G z(bt&ikLVdl=zyBB4;|o0n!@k?J46iuvRaB8A{XS~jUDRQ^KsKTJd6=}6{EOx!Cg}k zXcYm)9!Ym5=f;Bnnit)Y^gb|l9%?fOBfkGgcNO{*zTK=GT}}22(EC|(e;qEB*`_@g zZEN*ud#;ss}0{V_e12D z?B<^!lGK?4Aj_W;Vxj<0Ys^qh7VUcR^hrpxqvWkhCPvF5q1EbbF%DM-v=Ufhu69l) zrmIy*8b;FYs+dxg_F5mm%$iWZ5&T&POUaue&k16}@5SE z3KY(ef_Y+JIew?4!CtxO>a3xd#V}jbDo(K2I>0FXhSI%sx@z(g?+xL!5`>CN&?mVI zNbG@u=?VMIy5Fv3yX7oCc_wTnk*6SYMKnG*h;qx|eUWm7ogo$opBQS5>FFx`{`lj_ z~3cA1f zz$}Sw^QV370qrXENO-83<{?!HxgdH@-yq}1 zgV%dN`PqlN086R9jY|WXAsn$I;L#5XnpbaQ9s&^ghn+hxgC?-|C_V*V#yJ0cJ+-u0 z1@4|NMkdU$%qM9&tunil9rN|LckU(t7RaTl(++h6Sz310&*v90w__;wb@~wUuP{ii z-}s@poA(p+`BUk0rd*zq7FkWt!g63zeKIy6C3fW$`bytJ^zT~{GsvV%Ih+~jNWVR2 ze`HVHtULi*)_2&su3^p02B1+A$la6%c$-+f68LSc#{_SyJ~-ms`Zxdg5H5^DH$=(P zTZ=C4FY&})I^ErZFXFTg-ukT}Eii$6d`6Z_9Pt)bY%_$4+QJyLndGO)%aV}gX+EXEQiYy?`o3y1HE zH8i03Ki@wxAiYzXCGMxtyO~Uu-_@K-5^GN~8#wqHZy8Ncs!MTZwSrVIH-hYkNbl^U zD7*{G8(aG5?|ayeAGQ&2?skTxU3_bT6Uw4EC09V-3S#eBpUf(^m6Gm20(+YFYJG|s z{;C6EfciuuJ@~h~acD7XT0SQi+D4zxxc7N^yQ+kECbAS#s&Zo)7m%Kz)6bY;O)?Bt z`-GH+(IA~IaBVR}}z{}d2H zUzH1*RUu;z2A51}Z`ZEEhcUgCz-3_7<~aoKtM5K9)GyP7=+xOw^PJH8o24J%;~#pq zK&|XSu#Mp<@WvztkrY0(tO+fEEV|l2l&K4hDKED4t4s4YcT~Kyg*nOe1QiPi_^H!_ zOKTc7i_rHgzC_HehO>%EES4=eo4#$2xit5&yhBF*Zt-Mh`H*hGLbzL3eag)(D!+2i4ybw+h<5q2f5M$OD9Vnb?jlg zmFZ+srqJp>24vw@dEG!YbB9KHbs5h$qigmJU>PIcAk$zZrrh;tH!*O zy05BH7pEw5m?tSW6!0Q-D{BVyqZ-g;cYj!ib*#v(ps)phPSf|d<_v)I2OiQt@ILDW zK|W~~S7G$3*2Mc0pEVYOppY?zc7bNJ>4oC!6P9EvyeSzdcp1(Lqnz&k)vJcFl}sFb zl}oL!bD3fi*w{s(^H*x+miK~Zg27T2bYaXv^E!`eZCfeDE!dRAV(u*7N{MS*|2BPZ zKm?5`b?Ns~MkQ}<1MA-}MK~+2G9)Y`Jk+y$&;G-XK3iG7E>5=7Rf3WI*QHp5!jhy6 zaT_}krPI*+lT5`_7gPPt7hu<`zo5?*US{}h;O@<5#Vfc@)STd)@LmC#MWHqJoyd=z zLSZvQa{|{DH^% z;c?*mTNVxVBrOXkH3Wd|A9T9FxSRF*qWTnee>1#J1-!qHR-FCRi)m**w(y~gRx9Uo zaK6$*NE@v3D6@viqD(i61&M0E`(sfm;XQv($OuX>P1&!=;fn1z!5EFke+QHBLBQd= zrMNTZ{kuHAZ!*=;yoY4&g7*GCD|+TI;0cVoM2HV0FuX0jbhDq&`~!QNuORn_U!g{T zud`9Hgws;Aem8%KYYcf30O~8wah6X5eRvx1o4PsSyxB9U=Ls3>>y7U-BV6iy7uCmq zRd&J!H!a7x^8OSO)D8SV8B`fGLwL4~$pZ77q^bHKi$_-Gty)9g#3^}g2iI3lJ;IIBHu98H^Zll zkA@J~L~L8%`t8_#m^hS;EW%S-}C^d%HVQZa#7m} z7GaYIdb@bvsD5GYA#l4YrKz3gs@PlZF=ozri6;g`PTbG(u!-~VZcXrLDj7v)JlJDP z$hH}>rlLr?P!{@ABQ z*FtK|;)4qskO;E*rO2*2@?*YES6?hN}Cf$Ne?61k5 z3u)!SqgZ-Nr%QXvvx9l~l#((0tk{si;)LfkQzG=G{r8X?GDwCi6}W66Hh*{5jL(=V z&BE2n@_w0OJm36+G0&3$8l?PeDyDvI_ecM@}3fLr#FwdarHLJOnB6 z1?XM-@`L!hM~*WXGjgB2x|)Du7iu@O)bJ?sag)emw*2knD4_2@EV+P@nDc5E)X^1!H427dx;E(ipi#LVlju2yllB5Ei~Gz7GLdfT=*C(ajFdCDw?EKE5wug0 zujMxPa`RESl*JwoaZfZyLjMQ_=Lwfi}1K8 zEsSy)hY+h^G_|btF?6g(_d@e8z|Lji)+^Gs7u+xd%|?xEixltkjAdtG=}rPzSE?>i zJww*nEIlh73K&VJd!5pW4Xrw3Xa5?s&W~C5E9qq~M7rk`Fn>Ea3Xu8(j~56pNIgsI zDe%tbWp(y<2`pk$BhZu|<+zF}ZLrM15O~2|owhVrO~3-#E8eNNHN5%pS*WsK9n>PF zX^7L`26DQitkC3y`$&OY0Is!Jpr0t*xAKi>0e6IC=jI3&QphQYko#)9ykCmT?*b;M zTBTFia6xmP4NnSm_v0&~_S{|6(6Cil+}n4+mL1n#VBAfDDIIfG(xNAS=503&CC>_K ziqmxt5BouisAIW%>PrZnt@^${@(VR4t=+2S^~Y-^4KF!PBrk|OjUgk23kUnPqy zV`(vHD>E)w?(CH-s&u~-p}yE?cz-_$U{HD17GLNN$=6oY>A;IRz1{D)BAW*2nK0Zv zS~76)q0W`dpn&}UWK9C#7x25pbTQKRPL&ZfO|cpyJic(@ zsA6>j+mNVqZsl36g^JibiuU1xu+g%(VW%v=(bzSX^Dm-}qSem6^FhD2iK2J)v(-v} zl^2MymeldC^QjN`E6vWd)+)@Dg8`RmS3fz{D+{|?3QeFd2fU_f|3X{5q!6%^oJ0D` zNv~~CN8m+Hfyr`z4YN2`C2N%aI08vQ!pDeLHVzTpsuRT(&Fg8-S+*gl$0Ej?c%W*x zTH0ndylgchY9sXH;jOm2s7mVN1=({{>e}mZ|CW!A$5JV9!nxjWDmn;A4$W#p4h$20 zH+w$80+|26qx^^6%=%U52AyS#s|Hs}8^&ZdDLesgPP|7$v2ieZecTh^SeZ!;zP?SJ z?~q7y4Ejy}mE;Dt*;n!P^UI)7Hg!Yp-EWIkVK0Dg!ShIs-`R$}$@cOdMj|EWNly8{-7%57x+-pi{T%P^Ckx53uk&`cm_in-Mo1DWO=&qWdUtEbqE)$aV8bypa!ix ze11wH84&XCa6p7_d7R6P(Qn?8~aL zm=${tli>Q6Q^8`-1Yl1aHa^m32M6H&0}r^x_d_uGNlScx+sb7TU4L~fot;z+2K^!N zT3FpAOk)Q%1XS{t>y@ukx^$Qu#cQZGin^v5^KTwnjuwKj26<==^1FN=>}4x{$$QN? z{dRO?#w|%fce8?$({GtP^nqy++e$-7Sx*kTH{Op*U zth1^uBvLg>#sz<$7Tf7g;gB^<*c0&?@-0?9DZaM!iD#{?dnJBCoD{Q)HHIsg|Bjcu zvwSdTin`PN+Ndbgd&^XCek)(GX;8enk-%kFL0v`b0Vh|XCv%^7M-IE$jRW&YtNX90g`g9{) zP=RyDbgqnR>^F&`@&fQw+tU2|!AvSye~57h%<3ccubJBr7WqSCEu}nwTFHuSVI@{& zlz-^=_yM!1%6d#*5nVh+o%{xhQi|~2J|6V@a~gI-A`C?zBTU%QMRP42z&91&pNjd? z%|bj&szO=w(_t_GnE%j|Bmf2Z*spbp{1keB8=Fb;IsOcU>&j^&YFl~kyY9FD4!2N%5aa$j z2W`1kGku)phK5K8#>eA=MHQ`!<5lGN32YSFEHmxztrlo;58%f)4m$I?F^x`_RZ1U% z>ap)8_@H+tbv*t+TZ?R8{PoZ8H$6Ri-~W}{8fh?sZT?iv^t&9NH7Q3P+@kqLhZ=jn z-g*W2%wJa!r;oUJxgPSt;N|8QPSkdfw=+eZ&n~g<&aAN&2XR z1g1kAaNl}vx!jOwru!!>Zb35$J|}Jd&6NWn{D&UfKcRPRk*56=c8_O-$9<4SMI$pT zssOhg(zuC5*fC=F8$a8iBsE1v1h3m=^IER5z^X3?pD#!PXYVCUMlEZ{?IqA=0Ejo- z5aqOQu5M{Mz)Mt{)g5>*l?O$AR*g3}gVCs7!51d#@;m?DB;vF~$(MQ8IHSZr`-vJ% zeBKmvyv7D)jN(T!63{OR9@E8ZGWB!PgG5uz#k|Q1R~O>Qj90V<4H6eAdClXw2pH5$ z_yZEFp7O;lX$P>n1vh`{vZ3o}!9?tbmkQ14DZ|#9vxZb=N1x`^iWOgvajfKl^biRaXOYR&oe-LCSwRb5-!9W+^V|LQVRWVK@6lWlH@DhGp>!Y&III8$(C9^%Hxa@p1Fg$#xrOdWiOPe-HjZQ{3{F{j%Hj z@g-z4WeNJ`?}7hR4371lmkIe}otyI(v6)NBahKF4)r#9U0olZ+LGP&E^s&I!&Q>s= z5c02^QP^*oDWi!PnGN|qM`|g)Oxj%+trC#(cM6{(A_46phX2IXasZwT@$HQTCpf_K z4>~Jgw|=GBqWlzgt(iJinHg?BFdK9OPw`GpN^s@TJ}+fx*P(x(kNhePD(*E_!d#^| zAvbB?iP*GPVA(-?&2G?@;nSpb-Xg@;W&-gp*|OK}YvWPhuQz6pUdvy6n@+~(E9iqm zI0zRAOuTE|U}jH6}Sm#|o^O0TfZ-ZRr1!{b?R4drgU{V`EO^k{HX z_Ab=>Y+2KT!LLJ)?NDJy>F(WY=$JGCu0|(y1WZM8T@_1hQp;!EbNk!6G9cy;JTG9^ zkdEI+_oUg*2~T96E47qWZ=nHtGcoJ3?`wY| zd<`8`I6SqhN7<2=%eMYJxAp??Zar{ad^)UC-*D6NSVeJZR+q9ZQwYBg5=nA%B!X5% z2WK+-oY3gq{voMk@}Ak^i*Z_1ix)8qd~v|w5q5l3-g5%aS^6`HzZCB5Pb06{qSN3Z zZkcM$Bhx8tEvkVMpRcfhfIsXUf$Rb$I+UKmZa;Vuy-ER6nS>02I{2Ld7j^GXEu<@z zU||IYx5mY0xETy`r>ovx118_RR)Ueltj3fySA}DV@|X#%6%bJ~rqsk37n_S~PQleB zkoE)7Z!{@v%&K+jj>x*-(OSdhSABo8li}+t^x)Q0_8~EEnk8G9%U(lGk;|5HeN7`? z4(#|~*00&pWa)lTCo1w7U0){eL!=WSjpsY|A1U_EAQj~6JiNqQ(i(9?OT%YLFB$9a z@#N0OHpV;w5{6n3TDks`4(OBdTHs>+`yVDvE1SenObbj52?dP+~@ z#6ZdV0DVA$zxCCvF`8Cu!wn;I9kJCM$EPXE;Fq~$@Nc``suR#*`fixbiuO}#Pgr;@ zkm5?i0HmOaRS#@=ds#SBNQvV9_1s|uS!gs0LexC8l#oPWyZrUGj$G7jjY)I;cqQoz z9&jR_LW|!vWVgf&nHcKE@O@|ZGWr5SG$`E=+9iplL&hdLfl1FxtjOenXx=L#oFcazS%l*)Y>RQP3PpZ?mc~3rB&uT)D`C z7x^4^fAehzVEkbRJRMwY^65#JgB#3LP2u0OxhU>gGt#4eM>HMX?+2TPzp?ya>VX}z z1L}rZd}7~gL}EZ~yfSzzL8~CA?58h|3D%1@KArRsK-3A~$&Ti9gv`0r|Mg|c&@(C} zT0MaMu*rk{$KyFLrvYi z+n{Ocbs_3=c2{K^_3Xo~m@2Qvzw{dt7+l~~V-NIxiJbYqV-}<_OC=|6^L=<`|0N+D zk1y8VG&mPUcjClX|M*lMhu3c3DcAe2Z^>H(7Gxq9sSxyQi!^-82MgN8AO%96lQWMj zbBp%Y&kUe641!J$hJLC0E5(b>0^T*mHfLFNK>!^8pwj~uD+|Q6L{Hj8`OC!2Z56Ak`!(c5dH$}Bn$>h)|XP%jpUGhpqfZ#;(p9dfK4au zItG8^>t%me4*&LzC|g`U)8x zHzC$>?;Q7m8+^unRB`VbUHEW^Reu^!1)4S^4Mi>$J?_XgsDHP7N7+ItF#H1a2DMOD zP`aGSkX0(WrCEAi?_#=2O@e6ZCXaGw@Mg@Fu?&@d5i#$6UI{LV(SRV?)@n700DZH? zA<8d%MTyX+{v3L?%`nSJD2E7!-QPq8MVNz%s7yJiZmI{j=U3t%F_aMj?f;?23Z$3l zv4!>&dVjN;hk)|;dL%ZfAjA0upzpm(@u~!A>CM|>dY4Sg?5n=U6s<2zxk*mbfoJ0) zBy;s;)d`iExtcxK9e3W<7@1^W?_Z$|4}|zZnWMWbeqU=AMQjtc!``=nNK=$iiwVmZ z1^<8NY^stSHu=)6h>xOY?c>ClG+=e!VK`r39{M26u4g)LcNzA*0KIKqr}mSS+r5E< z4+03@Z@sOi`>Uk=eW`PT&(gZ>{0Z-cCEQUjFeW`l#SZO^kO-S@eF?c-33$fXqr*|l zc+j5HDA+ZMsQWoiAJ_VKLd{`CF@wyT=6DynP0-=R?*_m61_ki`L(dYJIL|Pfg`e~` zRGndr#?0BbyIVqQX;20R3@!Rx+q99@c zQ#PnR^v#)1u1$g9Y0&&Sa`gTRqb|jdwnFi-KyV~&{?@D|O2tZ9Sxyx<@89=pwr<~) zQ68t#1-j9f*k$JgEm1u7{f~f!kTS)TVagJn7Hcmb2qjds@7j_-k0W^A`amFd8HV z$TJgbQ0JliC_F7_h?5d4YhSjB8#e8dpr5U^xZxR~{co_vQIKk_GXs|0dE5L@jPMsp zf?Fpjw1djH^XVY53bh9mpyfY-2sFw4m?pgaB$wQnOUlkr7-$d9$bK%m?^a8)Ce@Uh zq!{8Co6MwGR7aqVdlB(gd5GaLji>dgX@FQ5=N5l@FjK}Eo)32O!zX89Jme2OZ44q@ zKk)r*{m?H&-Hq3OxQ0ZEU#Zyc)O&7+{qY%p%s(-ZMC)(Ad?eBe<9vLNGlmL1Fo}eQ z>?a6p`r@Tx#!++%UQ^*k*$I2ZgtkFf23*F`ed2NAQLFc&nrn)edjXbKPE4At7_gz> zTpX>!9mRZ5D6iW?pSkFfX6cn90F@=jz2;jg!DR9GQcCcrMT$ae z0NB{)6fo|I+K;bo=}7FYEFY-XYmitbYf@Tk_Za0eJ|1KCAOb}Gz%vEL;T~cm;gi<+ zTHHC?Q#lNS2jEGHr+OUN)JQh1tkxNrR>|vF%|1b!YlBIwke0dKrD^)8&vJu`iD2)x zwZ=r^@zkp$;KqcfM9=H z4gZE!vuiBqk?Ziuu=LYG;q8YBKf%=^q!QqG;FMSlnDpT#EZm@+b6_}Pb2Q9p*y1I2AFlWBOxM9m{jU{Tq!JF945&13Bew%XT@Th7!5W z$hJjvbx*T>xgOX)mis~-<8^ji%_IK?jP?KB%%pC8{d%~o6R~&=#d*U@1jUbX^Zytp{T8~&S^653YHC%B= ziN{|x=J~J3?GXxaREGafo6{+o{!JiqQF5o^F<6B4&Zag|2lr#FN%gq1kihCQ1xQ)&W&O zg0d)l6s%U#Gk=vFTA0##F{<*06e$C&l?%*)4dQ#^k4qnR3iOX~()LNT-Fwe@rTxnV z3_#X@;Nbwpvcx87e?``_V%wEAX(S?B3T!wwk ziZpK?+cUdqiN9CP?>U0Y-`sHkWPj)Z;WaRaJ&E1lZb~<4Pfo*qyQop>0i02OPy!c4 z9q+CXI8;sU`=#pym_&~Aid@>3tJz$Na+R2wv(DN-1h@?5HuU3xB1opLw}RXKe&=&r z5W;M~aSdSEj@0*5w(-hIE%c)d6Y4M`!U5VnLKbzCY_#`G52-fIg=6uNTD4JXY}faC zNj5I=%b9=6-49BBiMuFg)D6?1aN&6!I=hxbK?4_*KI#%fF$n8=vEB@c1DfxTcMIAW zLIVhRz_Tpkw@N&+Lt`){`quoqgWwgiS6^*Br(VhDf3r&E;u3q9^g2i*r?+(pWFxjcp4fh4aTzXBgPK>9#h3Vu~^);p^F!>hHStL*Dc zu=r8P%xD1vrh{}P?$q-lV})xhzGPGvT)IU6pPT~ul34>?b7;bLb8M>;sfz=7@g=dI z?pN6kbkm#r{%B0F3F~cY|BBRLAfX;vn@idl)`*5;Nj^lxPWQ-535VvQuv0xL8vj|AL%h-O)2gSEl< zJwh@MR0$FIv_bg^n^WADoLF(}9e$MZKc?YoG^_vg9^QuOn74W`Gl1B_01G@;)9E>% zyuTTA04DyEHN}CSyl#wRucy!(4dYZ&oeDQDy2DeKFKi4*F5`+Tis*ZNyR0)GSq=&L zwozbkkdvD(j6Nbe0c4_^4UVxEcCZZZ)e3v=@jO%5#IL15r?9>I5=Dsohqw6eP{}>G zbsXXzA{0}j&t@U7BYwB+()31kciQ0R(qH*->YdS0atG~&K$Gc)Hr-bVfDVsJY|Fy! z@A6_0XKYvE0(i{pPl(Ga(i04G!UtZt< z5r5!$0wXWQt=H%&?EW@sNXsI|kDd_XP{*vv{`gP{hI{@AL7Yo&%O*vD>f>cO8c6Nv z@g05wm=i17j}QlUD5PSRyE*}=CZg_|nfLeXxgUSa)X`bpUgw+`X>O9A6F(y(j-roQ1k7;t6P z$LDbSG&VdEjrX7P#q&+eNXuTIu!t63NouD(b+(;&4S?(nVqyBGLC*2|5fp&(2OjJ{ z@Dh0Zah}5NE1bg63cdqD>C|wCnurz3!)x$(BuE#I-mXFUY*1TJ%w8Nmc8ZQ`+FLkb z#3gQJR6He0X9FQNY!Y@PFujH9;1WD)G4h=jlY=_!pe{nkN9}0s@9fwBz6KqoriV87 zfA6?Sf}HE5gZQ1X2~HzXng%U1)gJ1fd$Q*rW|-$u%K)<`Yhf}Y<9MP7s+i#d$(V0w zF;qp6twf)Nl>u}E`mhmExK`W?u+wop6|O&pk4fqswxF@IeYL>7bEwr3#RDIk#)mff zQSz+`5!s=)G^CVudS(;OHnVIh+1627={2j#m=bMsli{<~7M>Ey(*LO~{@Ze|m+#%= z@KKKTT97PQ@M4F%*>Vur=G}2o5r0*H0#yH#LlJ;+*iJR-_!O2|35Ydr=GD;cx$jKF zMrps@iGI$4qJNF5<#U;YqrL>9fI^P2wW~0PYMRS9ae66v3h9B)CO&g!d}=zF(Ootn z4#N@B?Hk~$+3`L)xNWW{K1!&$TeXk(xUbu6P@ru%;P)zu2)ZqDE^Ghzg%&HtAcDrI z@!kjG0r$y;@3wks13uIG&O%H->790t{aBvn*4&shvmIOul;&sQ zNb&v%;kGAaw7DUY*b1V&_Fmx1rnR?+SoWrxRj%9dz$wTI4rPH3212*Jl-_)be5oXA zw=SmdJ1}zDj)C0=+}T)r|q5uQoP2STYVK)!@eytAdY zk(z{W32wcjg8FoaB4UTu4sM67g4c1?xPNwT*pRPO`41yrKDVu)o>dw&zRhWN#G6X|DneZEMLks_pP3E{rNAqsy6!HRj-hOD^HD$$L3Xu`Vm1se*wPSG{XG}4qFiKqLAjO?Rz>*lu`O6lT8bBidIK11G3 zGgVKTOOo6@<@3w)1?V|D2rij;rg^%I68C)h(kdAe)!+FceRXJc$$&1eppa4SZTu3A znZDcujBG|Kw&yWFCfQ^)gdelB_1j$Rpd8fad;$Xj9~T-p80qUd+GFw3ts=x@zP|l+ zmrD)uzVHkcP5~Yu@P{7rKk!b$Qvpw5w+;{0=gwdT7xeM7xiB`)hS_MrCF4&kW_9|$ z9y^Kw1V~zd9mu7wq+ihu$+~wWmJPHjyo!oqe6f`_4duuCU&fWW(o1zkoEU^F`?9Vs z?*=i#KbPsu8BY1jG?Yfpb~yhQI?MYf&gx1eKWIree;c%2B&Fg)v@ecl5_Rh48wQS5 zb0w#PMmn~t;?W`{&yV=U?qWr6U4t_4nJZ8*YBa{#c$a*834>~K-9u#D)K{Q4w^h`* zviq=FPDh%D)R|iOs%pFQ!kQ6yZAcK#3|hLvQ9jb7SkyU+dtr{;NCzsoS==jySX9r6 zyuW$F0W$s*c__fVIlwZ3{Si+AzQX&nCY5&&@j1J4AgQg6R+PJi>ubdt+n$<{Uy67Ia;cvc7-C%Io(I`;KYHcIJL6?pq3OsB~q->J9{m zfcKBDa;k2%Af=T;S%Sdg858@J>@bmMm^(DAS9+nF%9F!2^^Pvy>8%5KU0 z@EQZg9qZ_*^K#5^GOpYh(`MR`{wk~~g}{{KGUEj~hw@17oQ7`w3$XL9Pq#|Zy3xTZ z@Tp$y{H~zOP}Vnc5cd%z;sS~-Izj2cp82hn8W;QJgXQ}@?I5{^#bs`PgeA4IciYED zTu9o_c^>){+xUj*i(j7dXSvAR^1Pdho01;OUJ||f8EnJF9S3ND>>qZ5z`%>r%l3W> zyuaNhj#QOba@~e$Z!c^miVv|tUb<+pSa{fUo5zTMT_GF550T|bmBg0tlSzix_W8Z(_xaYiP zo|9;RNZ<6-$p*HQ+OX>&go<7@IquiLvi?LMSvd;KgvZM{zTAv&;A6}^!kTbPP)Gox~*eeN# zH2?+qbkBM6{wB}?$o$Wf2b8<=`)WPhEm#;AuuK`XzCx;| z89yh_`^$w`z`%dt0VN0g%g}e8Bso9<1*(_opOl5=VQJOd$VYuKWo!}^&#NZp+gvL! z?F%W9ojaogQ!&_#LlQUf79?qKRK>suxdw(xMy1E@@ofeQ!Zd%u`d*Q<#N{V-VZJ1f z{Z8}R>_*5MmlMc2W5@ES-y4|r9R`7%&H8oxxQAi(L^qh+vOKxy*oCn*X^ z!`H-&vRgVsxvhe|=wa%X9w_^nF(1X_shq7ew@+kI+fH`x`*qg2^kaWI27hStes;kH zw5fULe+8Eac!FUv$T7I(XwVrq1*E+An*XpQ0UF}I(H!-Y zF0n%;Q=8n)4q4MJ;TJPVt~nE43FcjG?h{Cq2yD|da6l%Kgi|L)~j`y2DD~m z-F>G_x3K8cHt{0*sKT%k;winyNQ7r>!WU>$I%hi_RUqvm^C9OW?!;{`bztc4tZ(k; z0TYjIMne?kKor@-R9ePWj>!fOx<#f3=nr7K=uJ2}^O-D!ATCa#WM<}A*x<1QgrR5C&)l)tgD2mYfIg8V$XHCh|6YALZ9$=HO%r{criEd4QzHf z=P?UdkR4+4V1VF1@SK6{LM=M+pLCb+FUt}SB0TQQ_fz!X;a8@}c=YoqdMf*&4U{Qe zg!Tr`#p6tued|G%s#kJ{E*)C1Wx|ewu|F?95jK94i!5(r&6&{h`z`o*^Yyk0UuLM2 zs>m)B5|l+(8>WsMpW7298~&;uxYDN-_49-wXeWi3crNXA5Bv_ zO*hO<`{Wm3H*v|+?2qh8Cr!wo3^Q&EnlbS%XKEbDnCH=6-*uj3I7V+;`aRm_m$L5( zoM2NGHh|{$JGw3jfi1&J2pMS@tee-gae6p0?Y+rrBNY%yaw%NXRmM;*H##Ga1-u4J>s7#I1hcK-0ZiamsPaJ z<_CQh7WZ%Bzz>2&kOA#$b%E^Y5%!kHM7kv1um)_d>##Va#_oS-i4uCvjDNOU$0In0 zho>`9F3i$?WX*z)$-lm5s&M2hblL?(yu>E7&FKSqPc!|;9XA+`&f#{=1s5uay2_F? z?%Z8X1RKd?cnt-J6y4Q#S6Z7z7rZ!=n(vXJ6}=2EgXXqR^`CQKBNps$o00&mKk$HM z>MX*bCsnBt%yaz?I*}d9J*>?1!^!B+lF3Y4zatiI`u5kMt<-}Ft%o=%1ty-cDJwsu zv~hFhMyyEh%ATCLK?s+gRQaI`g@d>r*=ukBEaQN+Ubir9L573x#$L1&m_ z`#WK$XD)azAKFWw$e6{o?ogDd{2DjN7h9fHr3F70Sf%bh%GK z7aXST!Yb|5M7)>3T-iF-J9+_jOc9%xEE~AfwT>y_j>`8*uXFJ`xhJX|@i$TfH4M4; zETLqobwBwg?l;a^If|`&b0IShZ@^-ES(u2HH6eLrKPUE#4WNn8{x6CWD(($L$ zkmek3IM=q<5uD4J%cKwlK;=JA9`F#KUlnWrlP>XnT`o$18vxr+>UNM@(rw()C5CB{ zhp>jGUD-b_ruv0AbKdL{$8X$>R+aUQjL*;RAmrn=cXWv7YH=;iuN7DxaIjc&SfpBW_fZ$FBnk7yDQ(>M&b+-Tn@e^ zL>%+`^$!SgJcCz=Y>$ZMu1xgrG6N7+0NMCIC{I%!4NXi5c0Jy%i>dp)#8e>i=5o+% z1Xa(RfO>TEPe*wtR1)5Cx$VGeux<$m%8_MN&=H}s2Bqx1l5&M}S=pJP^GB54pg9o- z@8&Ic9MHb!Sl-`KYXHw5dJO--+t5x$e+s)Dj+2<0t-2eL0%*7pUoMh5kBAR;B#gBK zMjwzyIv@a^-v&UYjhZo>q<`@t=el=*jUwXlA2NQSH;F}~Gq0Q0wLfvKb62cpx2SD` zrJmM~9`?QddYxsnp_Ade&TaVB`S+6-Z9%$*7qWxMV4W0NV7Bf(_)6MPvJHuE2wJ5B zIGH4;a0}(BbsI%Tv%*bAX4tYtf`X2S4iPSqO8#l{eE|bQjN}Wj3s$^oxjs7LQ_Ggb z3QL1*xjz%lC1XsLy)Z#uD?xRlrA2F-*?bt;g<(jHf5(GR;~eG1QJlAVs*U75ZiM>o z)pOYW?Q{Zw?GHPuf7s0+Ch9$fo$gi1; zr6l)?IrvKf4BJ*M`#XcyF9|^P2&0ry5gohZYy!@`1q{{;g*$SV@S?nqMX^T8+)=)n z6vSViFThUFa$kY{M>kaq2~}QRLjmc>%7YF!C=9i=*)>F7;w#Ky)FzL%cI_D_H-{wM zlNyK*ov<>&qWx<^GJ$7_k7Lg&bB==ro$QZf; z1sMK8rwEKz8bHdCp298%!_dT}+EAqE>m(*(sPfLzufY~O;c2TDF%^bf%PV+Gt7CiF z+KD-6(XOAwKi-*d<7C`~kC>6Z+U4BA{;G#3N3BpaXA`op+uQoBG3NW}xMhDd@jj zVopWsWu#%qtcijmPe>0dD9%scbhXKY`4R!2oWes~Ff}=gwSBw!oP7N+iw1y}|2%j= zfBbDr=`c`L;J)a*5*w!YXG>>ka%lux5IIb5LM1cpqlA}LkbNDJ>BiAP zYyHwu3OF8eeYRcT$voeg4y8j7Db(`b>p!A9Uv2G9<_<24nr%5WzUr#M+1skO=GrT!RZOej$3~Lc*CyL8iKWN z7+Pd2W}G=DVO0E9a(KV5nQ|XH5D#tx&MEt|;kq?C7P;|n&@2`jFp5#smtoi<%{*x% z#%POKo~7@YkZ_8VEbid2oel4fxDL*B`>9wiQ>bXuf6Pu*2+sosp!kO#P~zA(0W|+f z632flpjI9Tr9)e0s=+6~l0X+KSyMD6c1gB=;5YC%re>`V_Atq!{YJV5OEz{??51+Y zz9;t>Y{YB9qP;2Gt-0325#{z<;+VhAXPlb^_Xt+3s$fX!nwu}iTd8k3#3Iz$5qOdT zkTno@405${j3V3r9`yo7K^lVUyA4V5Xcj1vvJxzLI~!8r3&87em%){BQ%xy9*wz9K zUIeh@qfUt?kdbG2KQ;x%?K=wYVAwam<<+aXFZY5-5I1I~TS_|TzzvLkFmFjK2V^|E z*s`AK1NpyVOEM(vq`Hp?n<5sz?XWvtUqB>wgpkeBjul@nmb+so6rlJ&hKL7@JeN?W z9G=3G0d6d&@nVLm@hED0fQ(&>fG&GzIKXrPPpo>x-{>3Y1Oyoo%LP|aAtuA{x`1Tct_84jN3&PIwut>pusy6>NhWgoy0FZW zH**Uc2W?5I)-N`8SUXwaeYYw4;Y-j!{8NjA=AI+>81}t#r=jA|^D|fc7W$t3c50~BPIoGDErD^uSHY!{dz+%1Os)3;sbem z(LO(x!oi+u)35ibzc-g~zPx>ZXtZD_61CS&nD}q9gq z+DQ3F%)S;siGah)pR+is45o8VzaPM$uV-cL*Th!@Z=<6+nLs^2S?h+Cd7M)KGc`WI zT1y8ccJA$~!&{=)DkBbo`;VK1lbfH!D;UHOMPFqmPuXf)r@a8WK*w9fHJDF+5XZwT zYO!uCY?KII0#ndKKB(VD22VKOW?9^uR$hu^bDF_0rg_NS#z1(|RhIDGe3+;3nhAlN ze@^gHyV@9!Mk45Sg!dB(dnj-0%9+$>O;?{lJwyTQx)B2K<_|hqpbIT#FVT7myVrdlNS#*bZCojjF;IaLgz5CTfOR%E*aA^9$n z5(vD%`b3X{f`v_5HaSD%e?iM(I1^HcrRNs8YB#JO+00Kx6jnn%jeq}ptop;1{YKHE zK-9wqb_G5%Z^G$rsVRIjL+G&+$_8+_lXsQNkW#?Q7BjxGO(~0$;ydLEehfuU7sN0v zhWQfZz{cQ9jKqIY(lWGS+zzNi*jVso)|qL(&(M93hFu-aDIt(Nixb&}&S|NrR@@Yt zI%v|bn=K&+zgCd2eq|9_b^fR!yma@Rq#=bxBr{yxhwl9LJ^&Tf=yO8rUGoI}23OCc z=Y_5-4FUk+4?OUH;DtK-8a;&_#@7#$pW4EG#BsTttDyS|FXBR5Mt>QhL!_2hH*>Nh z?!x^<&F<#7b_qu0JssSLV(Cojw1GZ*7w$?|cOM+=LFS}X%WcJ&8HziiyUHub@isXS z{j^m*EVK%YdeaX-c6Zj*zk&yF^JzXIq+Mo4cyejH=|;4Bc(` z^2Qm|ag1WNFa|LQ#{0mPw#ZP#ANHEErR0(Irydi?2sr$Eyqg$gAZOv2ML);KhXb9{ zslC+hhd&ypgN}L+`=BRK-5Amls)R+0zQq>0X+-x!8g`8{vN#NF zgO^~ZI4d;?nkRj4KrW-QM_2F=LOuS2F9MCnsqo_w?`Q_=oaCeh zNc@2Z6!iD?b;x;=p#RxjEK7@G?n;)$wer;*w{VQwkq<)h>$!lz6D7NVWhnMx?UF3? z&2Xc*H`mZ{u16JOi9!P#1zufxDf1P&ZGMMQtNE(l zc{_SG`|!y1ceY*!S=LG8n2fzm8l6MsVb)$&IoBPRhbB*?(ZTl*JTxsiKGK@gm~*Of z`Pmb{0l6xS0`-{LsqouRSi4q)XJT;!HZK5AIkwucV{>3tQaIzhTz6qE{)dd2#8i_E z29t^H-00DlG^AfF=340CI_Nf5PUYDrcoa#-h?2t$?svI&MO@(w6-6H6T}*W!j^Xb zTrtha1)q#H4zOGj@<25~>`sbto51Lnj**!+^86jGlzsS#p4cUy*<|tseC{zN3CjN{ zH9bMoeTz;3XnD}0rC!IaULK>c5uyWt3LMNDtkhxm_{7%B1?sDb?62gz5MN#ZUMYha zm%9Hzz@|e*uwz!ZT4#@#6J39D7s#aK+tE`1yqI$og5{To#8`vbd-97Z2{xAPI5(q? zQF|CYqcI_ech7;BB_s?lno?d<{Mi_R_che((jP<_>7IO$azc~K!(*%v0OLRKl!5S? z#4AXi0`FVm_?;8a7)Su~QKA|W4w3pDmE)_bwyIxIunRl$lP~}yWl$%hNF|>rYpW(p zUo)RpZ!@YIsmEy0cToa3-}P=Vs&=F~8>9r*sC5Hq9Gr4-P^XBErr&z} z-bI11*PV**MvsP5bC!D}j~nH_0=0nJx9PoAE3<>pw?UGo&-r{X#A-l8Nm zGN+32WEC$P+8tCySb*gpc3MDoeXKRaPhnTZBrg;nXBW}|v4N8*#p}g@TK41X0-uG^ zyVy8JYE=X=@R2vNgh>GmqCdjgIu9tVJhO&K%EF3jOh3Acuv@C&`^8T(x{tGN7bt}n z402HI3QLk+T{)pSVK*JFUZH1s{(kbzeFJ^BL|L>!Z!7uf!9U})3G7y@MxI-3YQM$= zc7~vP4~#eUIAS5F2Q^8hkiUz-YY>doQU)lDbB#^`6sz)^i>~Ze@r`8)j^@DPVgu6S4%XS5s#XeXgtaZLFJ0P{KQ-2F zpJRA`JJ|&={R2-G2(KNwlI=;&h4xn}v1{dSN??fOXDDag)9^Vb^MiAZ zUui`Y?1g?x{AIh57t&fZ;tb|%zdZuHlvFjRb^_!VfS12IIm3xVyI)_~*}T-I4Oh)y&T>wOswW zAq1g`12g>FI|VTNgHj!cvP-^7;wdQqb}vo`C5nBV0lcL@=hNwYSOjIVQJkTELF36e zwb|Mm=fa+di~7F9-!I&h=^#39ZPwm_)2e>1bla=6w_z?0Hez zFVQDjbST-L+$r&tA~l`2+Hh<+&5N6xa@+67IpT{VdL7OtLb`*iOYr7(Q<>jTipp(D z-CAS(8$;0}3vFegq8{bv_|U)ga{vZ^;JpSKUaj6o$tUeH{N+d$YbG{;uDyyPP>bIF zkr*R`X4~M7?^q}Ac2ERVEo(B8!70&J3RbY81|SFj$l z?|+v#AH&yS7Bj8!ex;K4KpgfWHn|9xVmF4Nq}fsd}zDZh%Y;eXig(cJt(mTU#n`5nLk5zu=};~Yv>!_@B3<5+ zX9Xq7oGfhPGj?a+$9lL9%9uYqqNN|~M9IO#2;nL~8b?hDfkE}_nr}lmfdr-n{Z@S3 zl*9ZyjKIn1!3JBvSEyy-O~QO&pkq(T4oV6K3_a}$RcW{mEq4VdK0Qo=&apXy*4z-W zRAFr8zM5LxOe+c32q!F9Ze&IP-0yCVd ziF55>^V>hv9+ror5TK<-*%3TDs;Z;P?IJJXdQO|~t;P1o zW2Xm@QIpdYoqGU4`9JW0l`_9FtG*|d%22=JEI}{Kq@@pgU#cL7r1I8Brxd}i+@(Ith-R7Fx>G)?`wHJd^^YV8TYufojQlWzn(;9$I7P&E7rew< zP@@?HuQ#Py#qg-XR0V(hM_It{HxITyvsJ|Yd)oUrEN`Vkbf==qA}6kIuhg^dh){sB zrw{8Kl+&Ea8`#XOmL~Qa^Lu=$Nq#UnM7dHzIcvQxaO}aCIKg*$=UFLy@*vqfjbg}B z!BeJqG|3_RYmj-4o*mJOkxNW9mU<`cjs6d5?`nIcDb5Ve0%?iEI?}?#rpgL$yD6pT z_{|TEG?|Vry>G7?NG)bH;Zt=D_k36>i2FLp)5V9BYajsHf9Od7{bnX?q19913D)ux z(LPeUrVCIKim*8{a4p;{*)TPZy!J>ywy-gP*Hq(nU)1VQ6K_otqzw6%ljY5sVi$jy z&5W#K`@sIS*{YU&WFnTyd7w_A@i?{dnP!j#x^ z^cog(4v8&P9+aLCRfNsu%S6G^t&31s^yZBIcXh$> z^bmV16gXj*&MlBX?>?VF0>+*vSD6uT;I1^eOO?|I&4e5~Zky z)34Rt_9qOZp1v?Iu_^wD6=PY9WC*yfg5KciV#!D`xhd1wB9{y8Dt1T|p|Q zn8xK%LBM7CZ@_{IGAO<1P)*msx$x+YpmB?rO=@mKs1@%O3`hvk1zu#>pI(TQEx*>s z%2JUVFGHjeMW>mKcCPU88l~kyQAlL#lqz@uctRE&f=F9!Auws|m8b9;MefcfGs*xm8K!yc`_shcad`?W4!mKP!ypK9Dk1Cm9T*->f@`B z8<(H1V6vB}-R5;+=WTo;1O@juMibNp10er_2lWrU7)^h{r?BHCw-{#O5|I=O5`fA? z!PmlZOt350O|>Tt%Z0<<@C0S)4y`$A#h)&sKfNg>z#&;*ej} zUN*j_ct?I$8+3~5|3v0Sb~;H6P2M5AB6VZy=)M$(?+T$IsZ!`HC%Rdfs5kLzcnOKX z;1+V|%j5?i!R5KEI;P-8(l2<+sXMH_Y85MKj{Ia$v&jp!&aWDINbux0J_fs+F0Dva zfg6;3=tW=+Btp_;dJelXg3y3`Bev1FxSV#7c4*npQU^C!0k@z5Eyr%MItWaY*n`_F$GKV5)(y|2SY;OkIP zP0bGwN&64UMW`=ThBf~kSKh^i<$d~G# zeJ-r5jF~d+;j+YL-v*TcCE3R?KxGTp(s~81>YvYjjrRqboG6=mz3A)KTaF%t39r7c zY{NwOF@lrH(n;by7n~b=Dxo{E2+Jf+0_&20MgJ%{Q@bjD`YoG@lmmV!%jgE!!Ct>%yG?QMpI{Zu(B@Bc&>+SLoWwC z{yrn1W*L}qq`Yw*0Y^H5phP7529FO26ayi4mp6vHxX2`iUGVn_z|IS>`yj|GI|f^1 z=Nr^~Oq+^?Ax;iTu=Pv%y(I@32SL2kr)WHknnbqjsU2UL@Q&@br|lgRqMpOfDjoS(W;fAtmwIjCyI415`;4fcoIUTSShtB!A@C3Zwtv{Y0kRv#uJw2d zyY|@&Z69$Vl|&JJwDGDV7$n}$5QJ7b{>n*9A5St304x~CwF*;~#w6Qt9m~dk%ZTkl zrvyEOJfjBud|^5U%TSU;Xg{~2z;STH@h-&|ZJS1#33R7nHnEG>je=V^$h>|lJ!a+! zJ#Z{xK(WZcia~95C&;nR&+o6Px<^2!0XK*MOR@AA^__lp1kBTObFL3-u82zAe8zYf zTL5)^@|n;g+#rP)VCM@^_JNTrLgy6iAZ1DQ{3s?IKP1^qbO(Q~>(-1Zp{WN~f+BaH zqm)bgYeyoiFCLuV-7`2+?-AO1c`=`9tm`?i-``Hp0EqvelkQ+b6fx+Z z(|_7ozlwEH>9dfR1mJh(qm6tMfS;`P_yITYt{5w6N_9XFPiL|l5aasch_7ZWh5rL# zLED<38)*4CRhg_k_D!_b_8|oa752w@GU=ZA)sN`cIZh299Cu*sfA{z*hR+b$^rP4k zK~uoDP|o*W@t{b$x6=$D>HW|KvcvRe7A*}&VwK#-cHW>jm{0(pe|1PXl4ChVc%(3M zLH{~y=>^!?TFqivtTz#+yX|T^GA1H_Bn4@9?<%o8f(#~!K#dVx)XLC*E7^1@7WrzR zvV4H(y?k@m-S$+}Y?ALFCuDT|bIN2D2(hAy(x1e*l>%b)2l}@Ha3-o(DPhnmd?$!v zDX3roo&Tw{0M&N<6FAqOB)9YSFZWTKAY-NdI5$%neH<9ZCy5}T(f9s?IEdJ2b1iH=d$kiH8f%mte3*-m?Kmc;ue&Zr0 ziODxTTp0ZP5^D9_z5|@k!`RJsib|KbaU%Q$*TpE< z52uf?e(ojKZo@(HV`s9sJRNzTfl?@1lLMSe+RRR<8!2_|p?*E|*%84j zZvkel>(ofuR^^-`V_|L$J#h!{5)yMu15%Bw-!302B?1viinZLAowz4#*_*egtR}Sw z%K^!*;FJfX9U1pOI;f=HI{PnH)vij@U=3K&+Rr05NX$J4-rrg{fT%z4+<`UDIESyo zPl4zC7wKJL!SPhp9n&0bPnsm}8Ow}o@dFhD?L9tYv(uV|d72efb%aKU>$4(7!R(Uw*HV`10;e|h zpW`>{_^oRl>^LLeo9~~hXAZU8onLoY`GUa(6Xny4VV*z(QvTyNL4ov&D0`KjLJw@= z7bVJG3tTYt_jmh`YBG%k_v;Z~<<)6ve%_|HzCsYA)p7t{K%u`pIR=lEO(ucvzsSH{QCDvv3zw{gJf*1S}M;OGg@M?E;#o>1K*c)lpKWjxcNtsWNMdU1h;Jywu;POF=-a_{Dt}*Jhz%Xij@FI*rflzA8N*SZiUhePeQ(!c#-LRg+G^WNr8zpZ0Cs zRN{D&FQq49^2vZiR?Z91+hsDS{!Sp|;pen1P&0070m1!90zVX0ny~Tn+XEqkf1e>o z`RX9bfZwNSE2uScezltF47o^%BC}Po!LYXXGtY@w{&sK;K=g+m>Ob&G#6u09!VW)Z zp?1*uDB2-EkPvp&?Q$z$0c(|op5BIQ=7!@Y9$u=oI~%3SHS=0SU5E^<;F5;`M07e( zP5abv!!=|BOTnR($xtoxp-l0;Mb=?r-5(xG%Z`M-L zdLwp8vjw(ZLTunJQQt%%=SaWrxU7j2^+Rpq+j%k=ZI;)WouMblj%^SIIHTM6J5z0U z*Y5F+wn*P2IIo~~T*7(h-Y554C5RF~$MTxZ2}IX*hwLVIs_bd>xW$@H;gD-C<1H#? zUe(!uoC5_k{>SowtCxN^91Bm{y##!Cc;9^tdU!=MIwHSMFOQegT|8bk5KP_35rEI2 z3<>40J;Qd&W!u}L>+N`3lOU$8zFqVy`BNiQi(h1PCwGr$ z+*roAOgo_V7&VfbV93(#}3(90)cR|H%nyq3{y-LS|2 z(68;6)il2Qpu+J+irI5ddVx$fw@D}y(v|jO*LyCNizu)1p6lZLa!G>d3385SS6d<) zpfvtB+VZzczX0DqEUkd?%Ncho+*45g?P}GYlP7*+3QIBTUL|#{bA)ti(guZetyg_g z>)vbdUlv$Dy~E#<5TG;nhZM?)7fm#Q(XOJ)X%&HKia)XR!L(fUjcF#ZsBb< z9>07#VU@Y{x90Y|`I-^FS-$bp&xv3DmRbXB{=m}#!W(j_Wqr~MsPwZ?@}4;_&Is{% zwDeocTec9*WFl)wW+$AWm91t(cnhDvim^A!H_X1C^B|nIi-?o(BOu~)A@pnQ7S%$CY9dRQs z(dN@4-Km%^z)6n`@=B>QQ(X@YhpH1I6cL`l98W5>WYpnUEj6(<6q=tbSP><(w31#B z$T8taBnM$1kB(@9EPRd^{hPi6An89|6awf)E0Fr>pQKLxm)`x-RU?aDc??pZW;R*G zDN&N*>k&RYX9P7G>72}2i3t_S?{PP=sYxLU%u0t|Us(x5cB7>858XaPDcVf8Q-G)a z8^5rD{Ez}w*Cdxs3k*&T|K16?F3Pz@WUf#oHs^(T1FUpnArTzGI5#Cj$p;B(Vpav6 zATpS-zk@fQNI>4ub1)E5gMNw0TxO0Oduf;VkYAV%$lsNk$l~havNeskpR&@8~4KtjCd#WRBTO`(t@p?Z$#{eAlR4?QKI>3t$C*L>0; zx4-PhGqlYXb9#Sn$U#t7AI27T)eCs1;5#zTX<)p#Ie05v5K`m#D~>C4{vu>s{Hwnn zP88&jRFk*nqg3&2fQD0u-@ntHVjvS9{Ax+v$n9>6ul;s$*d7e1%X|dnnCSq)Z~w`A z$dS%pkJe;p2038n(i5?Q17MHv5EH9N=3JbYNs3eHS*Og-VqRh!rS$uU6=7e+<~Pz8 z3tKe-A9+6cF(^aR6G2$j4JGH#SYR}SI(j^2T$Gu8jaJR#&%93rfk}~P77p<$+2|P< z_$A#vwV~&c#DGQdbC`4TV4bpGOb=4?Ixcf9M6WDXAfE z^*%|djJQ5+_uED4r~aMF(KYvX{GI*Dxds%g2A0&7LH3p4<)ir#vBGEKeTIH2dzlHc z0qvL~cO4TAr^UNeId2LZ0~1iXiX#@CxyiwE+?U4@WPS#;&qGOui(bGJPpAa=SpV*_ zI}G+1PwT~{I%Q9}(Or4nQSa5@in~%9-&`zC0!KQp72n52TMQkdD`PTTy^(aUKv@hr zT5tCg_(hf&GkX?jB=_S5_!Z0;R$s!-rb=CX#_aFyUq$0*z*YzbzXWf9@f&)CP}0;5 zLv|oOc#E1GnzRM^y$Sc1W!%sXE6qIiw`NN92*&5Q&fXH$esE^4pFI$-B0ckC77B3A zxXR|Hgcp&y3-L-M0)n7!4QOpVCp%r7rMBG00|~$%dXMe5sbjsNGf@1qOb! z+WXp6%11S03F8`oT_b8+9! z|81mXPruo&Y(D-Pa#Aq+dD;l63x6!j0X=7rZG}bsLYITR)BgPn&;$5Yu-c`254eMG zwl~xLWHn#bnaZ(+J7IA>NSZ%orstRig`T=_e)p504x&@9s&nOXk^)M``K@cuVDC7z1eP-d>c@5EB7^I;O+9`fh>9%8We!>4?WU<;0+qb**}Hd z-{xj=`%g1n8l7qTrQVmboO5)%+5p43c`qAUG_<*_IuiY9I;Bgdy z-h@&uQS5{@;w}M(vJuW!5W1`eTS8=5T_O6f;a78-^%!8G<1&g2tdBMADU@#SI&2v&TS&tq1 z$i}0~vj3>^kI%CGJtAR@z}e^h5swq0NzqzW_TCb&S+vw#C+*FG^a2p>6UC;t_<7 zny!>+#hqNCc|!oikS|V(t!>WnILBsTa(bSDsE+E=F6~5-sv{ptf+Yu@<2CxWV|{<%@t z8-i+bxET9p%T<~vVXM5v2_p}XNqq6stid_aMy+NrqwK?3&%He%nHeu#H9b< zq6;Gk;*Zd1D`s|upx)%iq1$l6iq@R!qtm+HuO30(|Iow!)prM$^)ujBta&q|2Q|Jh zi3qcz9mBfwQw*u7+D#o?7|lzFl@)a~SbGS5ju*ZyHGv;t*|HB+5VMhmm{AGKs~kES zT^J@nKW3|SrDhsR`=!bCxf)tn>ftLKkCqmgBsl_g{PT-0!4Ucg|0}wTNcSNrxwS5f z%!16h+d@=m3XQ1FwSL!>7i{@brDq2N@cYBk7MMKT61JH>1?7fEd}{KhJ5}WB71KH+ zws->`dVu)+q@_rbS}09}Gzd*zo9e*Iq#D(wVK)hE4oWloS0g!7=c?T1?JeD{7>a$C zVQ1*GY|64JtE0-(_*!wl_MTJwpR9A0WY^T948*>_XRC|CJ{?d(r#>#Ytv9#Z`n(oQ zIw$}qP*?B@_5YvZV>-&vhe_YnQzA+8w_FO20}uEX$P+45myYdRl=V8|YKw9&QMqmm zhGtuDLiS5h@tx;M`_V^0>~Pa1L`Ur`PkVF%5J4}q9;0u=`#Bcf@a4h3hAk{6Zj^DN z@BKdPdNwlk8p85(GQZJj;$+^{4%a3oSFH{M(e{<@^8#gLiqQAFZIp=4mEZvBKk#^g z@B+|tWS#==Z#(kVu%V)ERgSuM2d$LjsD$GQ83D!Thywb3X}Dl1BFbh{ai&M7UtvE! zQ0sbpnEWMtm{M%6Qxiu553N6cuZ3~#`dc(`h@}U-dR^gzCO}O(uaJwx{Hj>7HioEG zf=HwjI3~yfO%Q8=VBg7etUJQ271w5;n}xOp@#xe)Hi8NHP(K5sgm5$xNKg@%$fZW!@QAS z#BxfS9*iEO?HXrW*W#icb^a1;J}^BRZgJn|bXe#ceC7e&2k3RRFgdg&X4A#nkT;I* zO{D>ek@YLs5};I4)F|2om(c$zR0BX%$LB*qSQ+u65L@tC+QMTBNV(%9>QJl#!b3>^ zp@-TXhXK=3lyZrFzIx&`388sM&SlX)sng)T$bXLdK3ES|Y4as6Y`} zWxSdepX%W-MPA|%G|2zw?|%X=HOm+VTeQYe?UbyomnQ%$L}Z;yr4oEhONQf2Lqvf5 zAAG=*V7`&~AD(m)4C-oqqfj@^9q9ab}k@{;EX=+lW87tD}83*ty&C#}? zE!V>@Xa8!?L4cG@RcDc|Y$9LM?N3sySuZ1;SM z@llqyDYOqGLh`O`iIC(H-Lh$^4HP7x>pzZ@3ut@UCYv@-q30w_wcMEv%jvRd{!5bZ zktF$jCn&U|+NjHMAF&#>C)C-;=5GST7kJ-dm5F)jA9!Qs#i5!$=XY>mhf*f;BOtwF zZj_<>UTB?zZZ_!NY+La`Z~4pdCN{GKNlz_`s3S?_?`1w__t1gUJ%mzLCmA$nUWI~M zjmYg@rU|_KrWrIN6{ZK~A3ZgdPFl_J^Js z(De40o8CPMo=3`?2YNdO5(jI`d+L=sB)0Lo^tOf_=GWQ&hnU@n5lhoxW3G%|JJct3 zSCZ;bG#9HfGU~Ic+hau)%u-Z{C~<9Rooxd*TqD>5Q}SQhL=c0A>9AapqNoS(ch%h5 z{_XNnfOJocV7q5|dJU!pZ#NU~*pHdL&WGXTWhwTRfB>3ac0gw7)+@ht6i&P<9)!kH zcQ|&)ZV?hTfn8OeGyxNz1Dxd-fR}K;-x@GiIcJot>YO=$q4xfJH3_6(-$d^x6%gHn zxF2mru&=O_1kGvA%J~YT)CuuJ4;ea#6iU<^5^^qIcO_f`RDX@Y)nP zp;Zlmz+J&|jNBk9o#ZBe&*xpjizoZ`>!-bZyyC-6;qhxr=PR#C4)Rq2N`M4|HQe6XPKK}-*cBXA9+PaZD-Pl?q`QcVor zo*2ti_yQ+n`KDF|t!1l_=K6$~5rS!FZ6JECC?wt(#9!P%B81KGYA1re1S+z${zL|P z?~Q!u>~s9)-;Rv}^8Z5*IGXD>Vff=ov$+qfb29i7Md#}xyJq^5l9R6Iym0EZdo@`Y zSZQXf+i)nenh;QjOX1zn^#>9cJEL7?x1Eoly|^ddh!!SOI2D@HagWgQeH2TRUW;Ge zK9JZq3|$I2xhE63s77%=c47PXj42KXOQSiF5oo?ebw_>JZBn>sQ$+M85z%cSyT;b8KnL^3>Bk zMo1wdy`K7>gL;g<9g45mEvGcXk()2BymyBhQpON+6N;KOA%*m}AxXEpw46k*rF+Vs zwFKRG84E|k!Tvf}z4T5Fdw{v^%4ID|y^t5&ER*XZ3Kr1(A9z5SPX7RrMknqVBEK9sV1h+d3cBqq_s& zgt#Bd{r>u~ZLj&7hQb(iv&alOutmE%$)adExJ5u=qpeB7$z$1zf;5}O256A^g&I{j z!Rj7O5%~h}jNm`^7(2?YfjVL7nK5_LKHyZ_PZy_fL>hU?f#=$xxy?TaF0|0a=sBf3 ze{q{6ToZchXr{x%Ls%W9G8Rx|_3WC%g_Y(^MPy6^@83Iy{Tbx}GW}L+VUr2V2Mt%kG0*gRprT`3S4I!5IcVmV5wl27|0-R-{Zkb`i@9L10@FGQa%=P@?cjLy2J~ALE&lWh=ye`-ofv zi+YQr;HnjchVW~pZ~_ZrrOtmps#2cG?&l}tgeE>WD+BDEBkXF3&*MAR4KdG&U*>4} zn7Ct)e=vO4-O=0AjQX<7D=cp#xO)m=zaoiL0s(ON1J4i$Z^5{c~8^LDEZN z;#il0^9Pd#}yRYakbzx8wt^4(Ihl+Lrs8=b<4+#RQ^AEB9laGN2pQzG0gX z>>XT)e460K$y$ubAqS$7?){OJb^Xhjkbb0&v^nD93UL>gw!Kp(ArRXADR>;NjXaGzBHKc;HJ;-R*fJ4 zwEp8oflVX7M!dl%b&bS^oX`~J?FWRVe3Kt^Kr|PAhV4?iyKjA_{kSl#K>`aV!btoB zo4)pz2?D*wj8?CFYNd5#b;);H`K-fcp{PYCc)o0qOtSh7A3z7byL6)qPo1LGG;yKL z0EcpC>cAoJ_kkPZhea#y33rI)Me!UYXhnQ)H05)Lm8JYFgEin<7-(J$(%8-kQmApC zzBjh_q1Sh?v|av5wlXG4{8Uta)ki@J^%tN=S=}QkQIGu-Et2{Za-6!Dc}e4Lf;Q6; zYPiSTY(f)R0*XEn%s($4s??xWay;8H=B-xJCjn9z(wkq9=G&?Q&*}L6?PfDT@DDwf zf8ZS$rgJ}OImKIIl>0Q(<3!=s4&SEtkLz^rX#3US1{@rPU$yl~mgbsx$WcH&VmCv}+bf1?|xP>-d4eAnf;EJfyk8E^FCfTnKS| zg{~k}gjfS~dQ(nEjc9+TJ${McGhJ)2xpq5LzNeQBFqR?my`inijLawU1g@eDVip(b z<7{H^yOc)wRQ|?$g&yzj#01JFb|i_7_Ht)x-VBX&iRXkbXzA_$hrPQ1t7=^rN6(}~ zQo2P#k!}$sq&t;HQV^6*K|-WcKnyxWL}`!^5D<`-P*O!eLX<{O1g^N3Ypwr2cOS>~ zdiHtF|GdBF`CQ8ZymQJszwzZ5qd2H&y;W9Olaps@WP$SQvWYTRaLTTuTHCqL*r*48 zt9Wet6>r0FTop<3ezq8OXqrc^8pF%!f{npPw}B7MBUakx^L=FD0VDpk#7%t+ap%vn z4cE`uP(H08ETF7*Gbvivf2A+X8n?_`_#nV3EBw#>fwS>h=LZsswdx8=GY&K{FPdTp zaT{h-zI!N7a&LdRR&rFN@6|z#dx9dS9(t$x0x5CCa}y6`3=wbOwkqunu&k(6{D$OJ zYp?f552p8M#=Nh`K!u;ZP2~PYuyh#jH+~1Oi zwx7Jrb8V7{`koDEpGUne*^J&IIvtz;BuksnM%5C zMsUyn*dBxqDWHQS@xhZ^$11LCO{O`T~~aQ|2+Dih>F};ura^S(J8H ztbW}>=M|1PF7w8edf0-4#;p#83ac|RxnoN!wN*7785+cO=0(icU%3?eC#$HatA8c$ z(tdAq%eRgJN$$?y-?%yVR<=Y^IoLgVfawr=6Z3)aU8gB3q66aPbdmB0Z^jB9T; zm&!{**8={$?W%qGK{+o**0SUF+mxdD*Dm9~!D|l~jxR;S+bGa(nuO!Vlh z3hFJg#g(E+XWmnlh@(gg=sY40>R`UsI`uoANLyj$boAQg;8C;6!+y6PP#n4aLh5q1h}Z;ztudh{W1GBs|gh(*&F)FY(UmW4?=UD z_ML}`hpyx=_mq`$(PTX9^HY(y;&a}Y*S|s-i`+Q>VmfxwJEc*wwoHSP(9&*B`cjf^ zU)Ga>kJ|_${#@Z(J)mS9_KGBxtH_c%AYrbkM?26er{Gj|9&_vbevid&fSXUPs(YNL zgj&5>S30@^D}KEHtwcs(jqp_YsU+3-OpV`=y$oB@ayLdSf+rqkUYo)s;o8e^bN{*^tM{i>J5nnQ{tc|UvbQMs+%>73IS zTlK=C6zd4?$?2D{iX7za39&tlGuwGihvY#(_M6jv>Ib+dKj2Sn zejvw?C5!#BMnr+eoh4aMX}+`O`LuI>J$Q`Gfw(x%daHKz>omI_wV|O{K`}4I|J_F~1qhC6CdYrg1XWZHM%M&hAWKTK1 z-^b-=&p~^~>;vWMCVKn#4t!}H)TW!zP z--HsRZVNF#oHn=;7dm{0{bTX|pwDco;kqyO*%o4k14%*{_(sFT6LJz1 zOr&be=K2kpTzTbU>zDiCg0swx$QP+TC=|bf5K|Y%3$lAh#PQcpsh?cSTvpKIQn;sZ z#?L+7U*OZF#k6ZIC%tAnH&QK$Kr8Xce*{jb;p;2p`9VI@bdCYaM zu`sWc3ZtQwNkEqR(I2=7@q;}7#i3wVijh+9zLscte7!1X(k~b zJ@F%hQ7MO(rfEphojS$@=?}Y)8lRk#(mp0u@AWQah5xO#$HYkMN7@y%7SSU)c1)T8Kj9-ajalr=7Y?$DJ^Dj-@&z0Dk~$zO6u{JGoPv4ZZ)4PQOj`7HK#=whdj zl~bEq9NwUsbs7zPI@$J^;Kj8hnLBktk4c&g*D_O`J$HV`#hLLOZ`d(whq5=k&r@8l zO6wwGx#r&MXRg-z)nEioai`cMsOIg-kJU^Mtt&s0=PSIgHovqKbEWFNJolH|>7&EH z(s%jE&B0ODf2B@m{{&iV^Y8+a-2Lo10^%ytp({Olr-w6NW?|FVt(*_OQ|NPg*xizI z$@>L&RIHtXxp;vcw@SQ})!@8x$K2d&YQ;UNw;}zzYpR?c5(j@=mqLy9_;U!)*?59r zSNT;R4(0jQh^nMswuNbhnQLdho&8x!ujuZ)O?#2oeDKSq$5>s;49Z*vD)ZB7m+stA z*7uMU`qI((JNliG4W1$idQOcln@jqvqxgzdDWe|=FVhv^3#mRQ_u7(Ad6e87f?^F- zRj|GGStb31bF4j<30rM5i>v#Emyg(pex>z$AJ$J^qJ^z{=rGoiFjI@;M_Rrb5r5JP zlhNY!sUEE*K!yL6JlFj}LooXjd?d+}G4C9AH+b-gnEACYZ&h(X5{p8rL%PwdYZo5P zliiQ#Xpb7Pcz7_XUmYbN@~XUjt8Gy0>-{eaeXS{H2#16o-!}SG%i8fUip1;%Z?Jl- zd|oE)% zA-|Hm1tkgRQ(7l6QK}27$_L&^z4VVO^g1@t@hNLF9V4j+8x{3e@;vvG7tPbegCu!W z$u{Q$Z=4XqnbusU;J)aSFtL-VtH>aJ^<;3xSL#0WtYayW|VE7Y(;CT*&*c z3U+%(65oyZz`pQ0H|aMduZvLe2?hp{Tvj>VpsW2PqqCPJBkh+;FUH4@GQj=|)oT%vO%(wZ1mz(B?49&*#I{t_X}- zm3aS3#ru%DgtM3uad-P`ugr)-m(5=DMUuf%`5X8SM+dX^VhB+le?-}FXVTg zxH8=N{(ual!S;aBZLu2?pPGLx4w0ixoL7Eq=O2rXt){oi^Q^xY>na9)GgV`Z@0m3G zZ^WvJI1m;+UzXkH%@#|`-x7mVd` zm4rV3%JRY@7D14s&qbdpuU>OfbpL~Ok3^C$1m%jBYQ^h4sK7jc;{Gdn`&Tve9Z5iR zQN!AC@6wM-nuKmEeXokJNvSUHy}Z6%Pk8v=L(wI%hjSQ*C3g+3D?gtZx_-~S<0Jnt zy@qN0E%f(Ci!NR8$SaVYHCTJJL}udTY8~x=Y)=z+iI@fNDAjBo zk-OQS5PLgxiBIYTQ!9~O?5p39yCaH(FU^MV6x%*jn9>wuj?ijx1u2DP| z6G`rv-FQgU?wyo>ICvWE?B$lYStTAqA&U^4DR)98V~aD`<2oJ10k69@Dc0XklBmdK zuE(8W)6FoKe8)ZUlulhuL5m|XJgqp%wdQW4thYyTe7C1K*Av6bd`)@N9kUZt`YwOo zI)Z#HO}MMZGthD;usE5SFYPR=Nu|Eu%vs$a?7atGNxneYkL)LTsx4<&;9 z%*=_R!rnBC?L^_Q;*k>Lqsaft9l^KU-82riK$5$_l(dwrw|y7lWnSNG;9T)=>f=IT zH--xGj~lRxa_yqm`ucRbsT_HJ_ql)03Z4boLfAQKZdo<^`+*@d>uIlKxoxNV;|-;9 zzG{|4#g_yta#I>r(q~FKP(FWff!FS2h2x*gdWAy;D_T~|J=?>f<& zBr4{y`u)*4p7pCY0{pGfuQW%=`_71D*^QB?GAvK=Vi0^Z6+6FUS0^aC{2Ow2EKSHK zMvhRBT=$9Y#Z#a2Mb{b>Hx7m0ZBiKB#+i*BjU*Qg4wL8paBJ2-!)acFBxD|#=;^mlFRc=7%z3Ld-8FJRPjfzIuOCn1 z!Z~3_hFP;?Jfl+5eqsJmM#z*fM#CjEa-vwSkrSCVS)PAh)mIs-JQk~UfJQoRl})bp zRhbnQSzIGcWYuoBkNN(c2$&daaCIe5x6|fp%#~5J8|hQtBbYajqPRuPDO5ziHtt=& z@*7h5;o*i@5LMdgE>fdPe$wQMJbBcS^~bjSyVhBKMcL$4ae3xf6#MINxX8i_@wuJ5FF8z5t zn?P0m!cR%mba$}(6&7|x+oYJEJ`s4RjH5j`rInFgpwn=D&(rHyRvOl6Zc_%Sm$lzK zK6GG<&NTm|0qWGU1x9L}C5pJSE-n?%Z~iKex!P*<2= zIug$W|2bUO_?mQP=ar51txG%%G|{8yL&<3FJ$1Cp#ah{^-=8OoP2!J7$&u`+NxpcK zo12teM&W&%5;H5!v!C5?NlaE`EPC{JoJ8;G4;r&J_TN(!dySU7DrGD~`1wr_`AM4N zIoQ=cF7L)YMeG;(SyEUNJwqxYZ9ek7et&8-;C_IR^PV)>h}kba7OXVQ`k;VV>)c!c zr@cjC6o-n1t1Po~wzjuU(RuAkeAJb{l6PVMthwY?Mq%*AIZ^F_9 z7ns}5o3igFZCdFV^J|U}92t;Mb$Vu6FmjGWdsTrk8U+ zQsEprGqcyP(QqbvgDAxdNmAuxG(sQ4`+mpP z2#%fd6n?)D5rg7QVoYgZ*q}4=!Cc_xWI_ zRp0z$sL^QQX#KvDIr?@jm>D$LpwI#V% zAQqS@;3Hjh*iwi5S5o(r$2Ftm|4Ntsh z9w<{+qaUZ!`|vTF1pRh|9Gg(kDtdBL#b;r9odFcLCf$Z}-OKHaF`KoU)aB$6L3(UW zI7HskPwO0y=)d|rEGu;MLK&NZ&@1%~^WXx{KU1fcN7z%LZF^NQ-AUq(h2CYeWD2V} z&q49T>lxMio8i~r*9SY^I+RP3eaAF@^DPG^b^&d5K;kVWd7^yNgM;#g{=Z|$aBuSV z+^rWzhELrvd!IWjgA$LfXzC|!`R6k8u zM?)HP*PB6LoNek?+Pj}Ubq#gvZ|&Xwm?5ynyc^M=;b$#ro7!~|6+_Y^-93~at7c7! z)Ff0Lk8I8`>u}_qjhbsnuD>ew@`SFbF#df;O=pX^5q$0QN+f%T_KKG1HZR6-5GEWnU3DI;Y;z}B)CytC z$~qL^OC~Ae8@!Z?Ywv0kxAsvg5wEI$HGT+3+jL$5Lgev`8_V#bP6S#yuis-&Okp~!h4rBKbOvIoMd#O2Wv5<^< zY=guV#REMv>|aY-TwB8;ZBJC%#v3c3 z9&2IM=vQ7Di|F_;t(~>9Hq~L@&zp$iw+{RBo=NscRF3<#gl1cy6$IdPJSV@4SD{nZ zGVBvMEuFeQKOJ9CWhuf<7J-YS89qgHM(qf>y0u@a`7HPHsS$3;gKN(2zhjzAs@1@6 zhTPA7k&0IOshllq(&$7;Qi3Uiz=z9Zyw-1DO?xwX=V5KmP4P3V(bGScc1AO;ZrLF( z7duxw*ybDgOS^DCyYILq*IFc5ZJZ$&z{hWSaBH-$KSe>Vte17!u>2T0is-NG?cXaf zk}?p{tpbzzrBfng{f}*I?_4D#v#d&Z{IzC)>z!!Jp6@3U&!dDi!S8R3*UZ^Vi_3(+ zv0pPiWs4;%Dz1vg%(f6nJ2ctE^pxs8pSk$l{RwWDqp6kHHSU^n?VVqkB4-X-GU= zps{_*W8N=m)Ai`Qf*BK?d`_uZ!EeYN#aj-iIP1whZ_lYlxjz5X{Ba7W%&S{JBr2hQ zeyhO0bPO|Ao0*f-J>QGJoR;IIY(truU4xd+`*hFZrC~QR+h3`9Kf6#1mHxMyN3mb? z`XmP=5Vd-jZkHzdminsM=75i{HPj^j!AX&qVORDso}j% zEN8{@?5XBjZC66Q$BrtOxs{{uh)L<0E_bU578bfI;W}>I`JWxl+1)hYDmS#51Xl=NS@6#ACR4aJm$h%O@f$>XcMODSE` zd+8sgqR%oFJledOz>OBBE_%7WXg%Xfp7tRk>vx4GhmX}aE5tu9EB;EorZ{tM?VxwA zfr=5^n`qvY<3AoVC4uIVxu9=E>fNncR&no^OYC%r887)2-eXUO1E?bR`!CFT=@@Lz zGWW>J)@aMgF8aBW>Jw3w_|Tr0;2e7-Y0+}ZFYI^RFkWkBd41&GamN=!6$3X+^Ny5U z>+*h7$co!bUdpuckSvy2PNE)*k#{L-cl+c!L-Vt~fdz6U*){o<1hqsb>9KyL9`0c? zZp2KsA08d@s%ME_+}0n_3!5FP^4cC7+)ZH3Cqxzgtsd@gYYBYkGmL0oi%I0{p{_cz z!I1UJb8}O)r>8B*)A7Wg8mSQ^MS2v!LSGjawc%yI9ePy}J-uXO?ZO8F{+s=2A%IE@*gSNgMzSN9x-BG>@PvmcR+zwus8M;?pI1S%W<_w4O5&wf zYz3a>h|Z+-$5MHh4B_L5IaFDe=9bB6t_Q0 z&>to4kCOJc^5BnB^GA91M|t^2nf{}!{;hmZ9v#K@kAQdVroMeY zmc{YrSP?=|X`35e^SNUoR8GG5YJDE_*f~|+>W|~N+|f}v|M>o^QK)$qG<+-z#UHP@ zQiyv0?M+}=7|Q=RG|{*JP2Uck7yfamXB{>7{pVc%eDBHVv)_*d{Wy|WgFgTL%|uAs ziJ0SX9jBrhI6>>3!1$>6Q{g~UFfI3P`$+2>PXbiuKi*8zEA$WFLnQtP5fXqg_x+XA z4*fW^mW46%{m^~JABSGIVEp6F)c!cqIfwC&cic<%<4|=Z=JNM%8vgTlTZp;z{rw@` zN1WA%`H%Ov@*_mTI_A{(*Vz^PacKJn*0(o#EbL!>{H+jw`y5GqE85?R^|#{ntwek)sozS`w=(gqtbQw4=xAsZ`$5|` zgpvzdummPsuof|Ya$B9V+X0cR?h0dQ|9yCPd3dEX&Ak+@&8@6m{%c-??;rlvfBEy!MVq9VtI1&@mg@(2m@ zi3#uv;iG~7>-kukyV_du@w!-_ce8eN@TH)!`)d^pfA>DW(7wqg56J)3O2 z*RDoV%tPH*x`I|IqdGr&Q+Q_QZ?~_Sh;10%@0k2Ka688nxZm4GyV*DCOF@d`nT4^+ zN9l4`XR0>PNsdFI&2H8&Su9-GQd_^ZW-+IWKEpH3jysbO8}M zfx``DTpt6}91Uh`%&$K8r|Ia}>(M!BcIA`+&ZD%;&*^?;0tNiv4f=o3|NB4tfBZbh zg@wdKq5lW{ztei!+H&f;zoY*DC;dM@J^{YJ_5XzS`+oxb{LugVcTkg7SCW_0(dGW0 z2&nVW{zLo!zq|LyI+s>W%R-&Ftq)Apb5Z|(p7aeiSDem-db z;rtKhe;EIP|Hkvb!tbj8|JnIpm`~)N#(%=X0xVwcZ~y;kaqz#Y{pS}D{-^Q3D4&23wEzDOXFgYL(W9YIw0~Yx z@og;aY3FKv+VP^3xr@1*qf4MLkHRrD6goB@8U_w#AMCwFSX@mPE&L{gpur`0aEIUy z3GNa!Ktpir#$6NKrO^f&2<}ef5TJ2)htOznclr76_>S)QJHwjPQ>&_W?W(i(TIeVr z4)hs`N6CVjcx~(VqeJzf_STrJC53Rzxx`E{H=&FL~_u2l2Y{OYP++k86Lbl4oC8v z-5|meBeVA0GX&_b^$DBYBVrZiRUEF*k`AnkfWbSsDBl!Kev>5PRlw5pojKJDExmZ2 zd_BmLXPV^$e3={jQi+^$@UK&x1IL-OmjRr1=J=bqM2G{Q77^WaK`zYOsjzk<#GO={&*AihMN^%1$f^S0s~*Kl380sC7D zPFCzCba=+g{k-m8oNPS7MOpgDSY(&K(rgBZdA9y>J@{?EdGWQx>;%76!$3HU{8SMa zg_KLE(VNaH{Dg!DATYk+<6WT`!f^fmu~MjlXJN`&Q0{d^4zv(sy@QvTXc*WRr?FyX zx92wsOW-`58@wA7TjdU&G{~KDwygQXKrG2uYz!c+9N}MAF;a!YiQWY&K0T1)pJEQ) z@LyVWcvIV@gp~H?M%LZfwLUIq4bgXUjZ)~%oM*R>4n>2Xu(n8@Dt3%SjcY<5wGm}h z(QU-3tpF;qRYm!~nYvqkdQoka1)e%{;7RyYykd5X$XHUA8#hZmuWti89<* z2L5ZsM~|2d9<4gQp=US4pG1ac!&%-!<<74&C8?C6A-4KUaKaulD8Z6#r-<Tlzd@ImmgN%b>s=jAS)C%XJ(D2jw342p;yS3R2)1$p4RalftC4`n^V|(BP=mFqWP9 z5(Q~ElD3z&9+eAQ_pB;!Ul|Enp9XQ^FkCwY=%t)obvnW>fa;V3uSpcHJ-5IVNKE@M zVSCC-`;HbMOqBu^fl9i&58M0TIpwUaWDYj^GEN|fZ5)c(;zZr21SWEqKa<2Y0Z8?C znnHdF;%pOw#h&c14s;QL4WAcE=6di%o?`QY;QAdx0yRdl>Uxm{fC5wfap?Nv{KH$$P8U8eOnoEZ~cl z&M>r)&4n~y&Q^FZSy!M*xU5%)i!x<(`F*m zc$b1zOl>v?B#X=RPBa!6Bf&&zkzx$t=7Uo$AW^Ok?D{U~B|LqFUX`MGu z+S5wRMy~vJB&owlz+$Z;F+S9h7m;DE)gv~UHFZ~PsbFS%5k23r-dI>4r?nfp zB6xpZnH}q^m~Z8NzV_e?H8K>qn0!1#dD>qaZ_M6cf$QCP7k|Ps=cDnl1TER;ccN;# z5E`7nFXS2pTZ(`EYgtuQzyyk;I&ZNwajyc`|BPM=#1xothlCBM5A$<;d2Z=C4!bc$ zkBi1Z>GrjD+t>>sF7guQgz!S?x0(z9tS;Ozt zHv?%Kbn-2xxPh$w=&>Hw*3-r?kO3U+ey`&^9$I>*riNS`^vx3Awdy9+nf<+(?uqcW z@?mFC8;@daP-nQsO~l~k`)jjikL#Wjsu-<(I^_4MBiR67!|G5$oXzbj#_*c(Z2!MN z>G{|Nta$5=ntC#Un$@97FXh9e+E0itDdKivGT7;BYHMVeCIMv8o6698YZv~_>jb0T zm{F$!t*!PYC-0S%K!e|chLTNT!erHZ-;Z^9&>T1wCUj;*DRCv&$h=PX-`1#&-??8g z7KDz;xX8*Gafwx9kbIt3JLKjOb_Tt5`V`_xgP!~^IAZ&Z>|fwFD)^)xM>V{jkvUj_ zk!#m~Z&QZ67+&5Z69f8ROqDBT(qwYu4a{k=3!^OBGlXsWy@@-P*Ac!S-AeO z+=GwpHEFqUaEbdt0qBbT1rYGl;+F+@4rCU4i`MCSshM zC-aUtteGa>V_`gPk!tqRzNuh5muhWbm<;;(w;sEq$(WwBE27GrhA=PiBw*ZzWi<9ObTD;#OH=F<+gx+hG3R^oQ6kTi^tNS|2zVwS&Q zKSNFN-Z=sd7o~O_7d+cv!kfZOK_emDNON-g_roua57&Uo!v}4#NRc8O6h##dnEh3z zm$>l=ROp9%O}Po*NtP(yNFMZTp&Jz4jdNG8W|4L=dJDm*1ubdEUhwnThM*YjdruUm zgZDE;1woOqkBMS42uZ0(5z>-f>tfJW)_|Yh7|M8&alKc+pup%I&iOQ|Pnuu|x6_-t z?UIRs;V}UzPQVp<3O@5bm~Ce6%m%rUxHPARHS-l;aCg9<+=b5zQ)xSOy1ORM+N*e*wWa^#RX^4T>2I`H`SUHO%;#kd ziEn#@eCm5ch-P(Jj}7K_jm`)5{Ia)Lu<#vo8fyPa)7}$MO>-qRN$o z_u}4|nIe^?;YcN`F&`T$qJ+qjVPg7@B@vxf3NARQfeBrv8b|vOpxV|;y+hGW8nnu! z@*Vwqkv37lQg5ak3XDl#ur7T*>wFaQNrK92-L3@xp4+Hh843DU4-%KE|unmg6p38tQ08Mya$lJKLvXJ#ZA7Hz?`) zIyxPH>RmJnEdR!e+07mRZhksl(l?YO-_!m%pB^!UQ$td;$Hnt+Sf2neU!R$m zPaj@oAK>>VJjC~iDO@nQUdY4_!ghAoFJFXIIq1e&ZbxS=e8n_*hFve*{*|0*^zDt< ze(AGLnB$vK+jtsHUZth{3!=$kBl;zzjv>awgzQHY4uYmw>DhP5lz+`wYFPjHlGcK! z{Nyc~VpEt%p&WQlpG3SQ$mXQ%`n7Bs=nq(@&&wxbkqt;kI5G_D&|QlJoMp+Gx}WGY znC;wyx!#xn)-s%B1%`Op?RnqU0ALr$BH}ug;YbZ5mSE#4g7#!N|0sLLp1o1eAmlvZ zlBxtVPj~ok^gjER-++skSRXTX3h|KsN#j1uaSo+qW6f{{MjKDEEjGseBUCUR^P&%V zU6eJ(hmt2MQEJlQ5Z>xrslC8Gi_K2=a8#&^gTm7Ox7OE#DZz5iB=(1=O@S=#+P|O5S`YmsO;Kjm6+>UC6~% zO{yE<60arXCvi(k2pm`K^4I^M%9FIKwh{E^o*=zLbsn*X_0FKo2WfwPI?k;rF~zfJ zn6}Y9QHuV+liyW;ZX1p?_;A8Lv1UxX&TpT4o&mjLDKWH%KPq=H0MqF4?^xybYwM%9f)BV01BJG7 zS5?$b#>-^m@(wI_(0y%b99psML^f+qN!>c-#bFV?YQawZJ(m@JIeSuSqc zDXsXO@Xzsf7fjm7smJUm z%SzB>(l?3qL!Z9(?g~@MovaGH49%)q(K*{hG1gGt?aDK2u>HK(kTa0~<>CLu>Hf|P zZ0BV4&28W8d@-HAZLEd{%k^K$5A&(o-Jfniz;D5^jH+KeBKC!?DrZJ(p4<(TNjBj~ zuj-WJ2}?sBJzB2g>1V4%Idkp{Ub5G=w+rWG3{`McldX1rBfEcW_z`4}!N5sVJX$V2 zJ?mT{ZB{}z#p(KBbuo{hPYR7V9A|&kPJr> zix4*~kk4T}xKnUVHcERA9n57@<5~1!aZSYFHhxc#;6T>x9c?mPXf8iP)V12#!G>q$ z$`Tkc8!0(+HZ;R%x7pMaj>KnGzf-&xaJP*pPkuw1>==~-;Z%tMLAw(1mq>*X(*wjj zRoKku1uAAj(L9DD(^k@BnNGHB)SLQ?%Dgbw!ahvY z?)`j(8&RIr$XrpkgbHhuzWtEn$MB>MD?;jRAxYE5!#Kf-e_khJvhJ+zl;Hj%-sy)m zkh%nkCu2|heM1_A!Q?CXosbXS^38M6vcqzpskUCEkw3r%S0sOZfv7Kl`Z7)XMm`ty ze0*}_>_$x(QP|>Py|>wLF-=^?8+fvxrI67XA#8{cQw}%I5 zqZ1PpVs#5N)*LL;Gh-2=x{ID`RHNZ9dDza#f16A+QxdCcobIRw=uB%r`Y1pVC-${4 z=20t3&dq#n;#THYq~9tTQS%?q1K3%g0*Pz0nEj|GVyR^S3E4j>&DDv;oOR-nH(I|u z_qUBrvu{7b?Zx>Js$+(Wo;Tiw(1MbkSkV&d9$twdRUP=y;^SSP`F-DWu(Sp?ozwXwwcv)AAtCQgfT_~P#Rmr8h zgxUf$t;SbC$>PQQC$DJ(me(@pBG3MPf-y?o7QrZ;POar28NczXSh<{0#<(oIb5Gkq z<6b+JYYEF|+inRFDM!y;!Z#iXI;_GT>M@pjZ2si~{Mg8dFU$RB#Z6j*B}0Vo z+22k0j%KXLu0HZqOw-~p^7a0XC1C?#oS)g~#%mbL^~?7iWP614jKxp5Q`IQHzwS>? z(NmWjk0qmWDqN1ePwhSBC#q?C9;_NQRg;?%3I=y!(foK;cA;DO*5^alpY*tWzQ|B!G&3v4W2tw?ScTdCIO5QG@ z-1dkfxd``O8jvX|Y@%sj7~r6ge)_^3-PRgt+80|_O^BJ)O43cxJ^hct4nRu?MS@9V*pDh`71CFp3N9TA+ zX{|J+NSr|(es z4NR~{rukchR**YdOqY_o3HpFY9Fc+^nL@=Fk*%&NYPNiD^1DMPGpuaju7c*bPHfr= z6v+~%j=z1VE5u-LcCOA}V|9^_`r%=)ExrY0)wrmnPzy(_(9;-bo0FE_M>8JJqwBXM zUe5%GFClm?uF%Czfi!t;VP#~tDV1B~l4cLC*MQM<`ap-2;6N(MDj~1pKp62<^5-j4 zzHyXCm+SFB8hJr>vf4y*QN?&d)mJcYEd955yx+|+&VApTL$C*$Y>zNEPP1~*7s>? z$~~rYbrwn_lhX7KZ7e5_b7!Q{=o8iqf8{3qLVUm|^cbz~FtahvzOs2yIa>Sxfw9V3 zvM0qiP<5_hq5Szu51(1PZ;Uw$wfu-ip|qV%d!z0~BdGSt8u`2-5BXlnxBooC-bbtr zbkNzB->-T0BkX0MU#X1UkBf03cK`iTh=w#vY_mGE?#h2)9VT{nSI>3m5M#jV)l$qde{y66`$JJX0gxxjp*qUx45E^%i-Y)+@RpBlWo$+M zfP1u)7SvBq?bQmusr>uZp0VSdk>r7cf;jEytbWWKS)_wi3Fbs_GdX3T&eEoF7(R_m zb`kmE-W}HbN8hPln^C^LcT5ZGTju1aj>5$_~&bN2Z@3+k)nc`T4QeL8|YoAe1Dx0;!9wK|-M?awoth1Mdg&S!hU zxgY_et*CdUOcAg4KMswo_by|hVzVvCd4KNtR+{e@iwUUOY)qnYw{)XM^<$Ul+hz~2 zW;Qa;(Z14_+dV&)J3PzGCDU0Mm#b_^g|8hC27mqoRB$@`ViH4>M!g_ z&*AKtRj}?36X-?f`@wGcRsqei3>fLbWU9q+?e9OQx5w8+mw;e93 zwH2$HbiOtA+pyv^(sENM0d$VMwc4ExA}q=5Cgt&^6|PN-I>@qajySmPdEl&kczOLOKjL~J6}Z4cK2;B zW_Ni8-)q+V_s0KORmA4y?xi5^#h2ncX8<;5WAFabl0F6>ACYZY8OKa|RbEA9SBzEv zi!U{Ys{e7N?S*>_=*r{bB6}BcytSd?qj=jo`cO6=0J^^b01Og04gy4XXZdCub~)3k zN-AYUh>AHUbabu2v-#(DCkI=2r^ZiWwE=OP60t8Ynz1kG7}otS$b!!=C*sd);v{_9 zjjh5jA-kP(0q&3U6H{{&w*hf4`un8%%C)vy;x8|$lrNAb^O$fow#1h`Zomw8w{~>v z86>Rz-K0&s$H+On^dQuGe4cElv60@9>&z)#?NJONzKI%`I;~%Q!Z9gFl_>w%PnC^& zdl7s4<;4uK-dSl4w94pd$QSm$cAND-GIOt^j19|Yvj;Zm-2C7bWypQO*tnWeTlGwJMLwP~9=ifvOZHISrVO{>}IPff_h6H1n47=urYjRpR4DNv1o z9SMM!P?5pZxXL4S^w}(^Xs1{L8#`X${n4zcLX}nQm;ZL? zYX|r(_(7UYqVq5JnN^xPYbDm5#imYj3oAFfI$B~CBSQ8cjjvmdP-`O0hlrL69f=*# zzeNfPYAZd&Db9_L6$lW8WSsL~kCC#L-Lz5!{DBH8!I*ihGrIF&fQHiWia$|2jyvS- z*>Eb8Cy;~|@=TNBaO`LeXDUN%qVlBGw(~T(QT^ zzQCV&XCL@+E8uvwAg%%sMpd(FiJi$2G9>^<6Uhe!MZOw?nYJOe~lGcHp|Eghpi$3`=}!^SrBr)Jo7Up664 z)iOEDyt=!2PhZI&se4;VpQ%u|Fu^ZV+!GqJIX(R3mPw3~>gO|W=yE?_A)(vjN(tf> z&f=PW5#)*iYQn8EXv*Qfe=QzMhLH4G_%i>AT##NjjKrB4`8_3H+|>~;!YCQp6bj38 zKR~#zIv|6$D=|@`Pm6i&_oCo_5CAPVAuZz|x zra0UemsPiJuuk1u=m);u?fQ3mYgz8$==e{%)m4T#NmW+mk60CjZo93sYd2+90AQWo} z@?>GC(y0G>nYDs^a%9yLjt-`twy~qB3uY8Aka(o#jC0m7fM%zMIy-GP@O<;YXi)P9 z4wi|jHpN$emdBmj+&{Fa(kB=3UuZ^k(CegHMtH>n`Q{+&xvC{c3!^xIXD4u@9hK1I;WUj914{JosLo@bL0Uc(nAy~#Qx(PeV90!R8GJsUU6fD1wbr&++{w=(bX+$! zNfl@)+$YU2NPx9eI5LjQxTBLg77f#0JCoD73^(nZPFsuj>#B99+q2o&-D;iC3;2ET7v za{V0DgK(zs5?%d8E&lRSbFTAxstno@gHF8iqKc1e%Js-oed(tIUJNV89S_wUgzC9y+=Uq<5>l8t+U@cl@&3aP&*FdDq#B zg|x0}l6GhyRDSYWuAgym_v=im6`()Va-=xm?)UVy^-H_TkzGAYV?;_eXkF@%9)kGl z>Dw?CG5!Qqpflv2Q{C#nKw%g4hnuh7^+O!cVLt1j+d#dyzFW7(i|b7NAADoh8S$$Q))cStxe}^DoNj z8%yI*4+VEi4xi?c7<5*8Z(x^UWxPc+Sjm{5%B`)-Y#hT(-^h_U_WPoADjmVB*CTwp=mc z;n!LqPcoWHqqWIyO~Hq#Gv(!Mmu&H}PLjzSPB=r+i9!=t<-4+vYj?)j2xlGe`*h0% zQ9y5N;<7!9-@J3B5UGaAOT(0-6W?zcZg><-gwUhg%Zf1zpeJU2F8TL?Gh`)AinYV_ zN~vUyfJwDCNIg!cuNR_AGJ@7S|Vc>9N4<@)>yEYIdT+`2=aM6HFeLzL)hE>YLz0$}Q7xC$+rjb@!by8<962a|A?C@T`%n67Od9~igA zqjvsqodvRzYpD4LoH{la)%DBoHl5&`@+}rxPnb?-CjSXA{I-!KTlGG5#i^z(BzvR- zxcB*kA{o%Q{qRX7FwR_FuwrR?2Sg5tU=$+Es%c+-snx3l+5rL=b6@KN8TY3^vxX6* zwI8^0j>baUd4h>LxOBN*cR=c#?*7w)T!qSQx01_h4-!bNu;vB_Y_92Q!)j+%QFjn> z^x>c&`QLpV!hUx<)Xw6*&|kQe!6MJC(*G}6%}?_o?xp9IHto`ZqO+VI({??#-Jw2< z7qjb`RUJT&ZB;tr>7GfdVD`n7k>8*QkXe-E@j?63@R78tNJ(&{tIf>1pNYRE*>bWc zs9+M`4^9bYeypdymW;sA*Vd~N*aF-wHJ|(`$4n)#>dzfEmfdOUT>I$QmW4x0Qk%tZ zej&VRAmG#UPSf6kUr!oC6u-Su<1%(DN%nA|_hCnCKX5qI2$}AZ_<< z^fo!c=`q*kIzfx`I+~_HLN$b*O3Mnr!90o^3S;IFh!dsE#{Dz^D$TFBuvUA321oxj zzOwbXkkPj?5~Di#j|sj5SUR{q?s5<8sEJGnXNK0;l2Q`H$rYV8p$y*(`|1yYp;fAs35x8|>x z+55@7yGNsSIwD5akNEw0exwOXb6YTjJoszVI?|jtwya_S!K3&9OZ-=%%>B}tAh5SC z@SQ5bFkU1b4{XZaYWey%h2?f!mJ{i$XewxVf0EN_YxkMqhNNuWt{uP1EuIctKD4~R zt=6xztxPFkKj&OH3b%6iA_gU?A{KMe9;#~IKF0CnW{cjXG&jh$ROso{PllX&4BzjOQpXRq8_H6=iN@Ks zdb48Hqur@B{%Th@mw>q_wVeG4n$md9UepR&vw-R$e5~BzVQ;v^4u)%#w8#vk3yanm zln1WE68Y%`O=MjUjn*)V;t1SEJ}*oqt~c-G-1Ai6&1cO8hEf4FBOGg)-_}zsX>;tP z&eOTkr#3s>Ls-}ArnJ%!x^^cWy26=M{!`y#v-Ol;XW566+O$aGq}(IfC2R8T3iA7Q0uAC z!{!df7B!vA<%}53DEi}UF>;;zV@P*@nFoDnXeZ`4hN1LFFeYSxU8iiOOL%L)_Lo`c z?#aSuA4^@{J?V$)##K?>w(Yv(9ON!3ZgT_+_n3~$T0v-z+DNlUzs1(N3>&1vvw-G) zU}j3bUA+|(!CnJCC_Y}8E*&JWrHV3g6FcKr348Xa8ax5hspv>u@@~$0n)L=AC|5s>K+I8j zGjm^A^-p=6aNvvXD~(PMqw&)~VQ}1_e z>~5m%dj<1&9tZjBfR>HdJ&m?kN1GkTB* zIBk1$iBqQ@O62J`eE&NfI*6=0*c%}`SOm)VyJ6hj$7>vLmrHjKNyrgpwPv#Yw>e*S z%zt-T);>aZ+fDBO3?Jef+I`D8;EYFY{(4olb9Q{vF9Wn23fL3qs;I4>(BAqsP1Tt_ zs>rumw>baX|L8{(Z9asz6wjMNHC#t%rA-XdIG6(4s@=3dv$4F~Jo44)M9y)DP6#TK zGmvomAh7BoCcpoJjb(fbn-^)R%HAoSA0+wvI;yT*AKCTGH_@BCj)W9sg3auJh6lE& zxLR?4I3Rj>YGEY*AV)aY2qg@kgRxdDj0()^!%cs}LaP2Iw6 zt|#Pd9?lnu>?lm93M$LA;RR@`+?^9rVLy=`Ox60YhKpBs~LZUBw5V76_8-RJ00S}k8D<- zR(A(cbz}Y#8T~VqOa`ibx3TLOx4a{GE+oM)M8Z$apj_RdKE^dKSO6v)UppRxg6+{0 zBwrWt)pyuI1~`Al>w!)%aHO>ZwJ)X@Efgf;khhz#;AOLeQY8{hIT%k-|6#EcxDzkat-!{jvO9Am(K z8#TB1I-3t=&GUR?jjNI)G$geUemVgf;R!YKiw%5Bo^?28%!8n;c9mcL#nPgo#Zk?G zffZ{69hjP-9%Z-q`aLyb7R9Ho-^Zvtjk}-IO;n-rytQ%ynOe-L;)8-+xNR+pTp*0u zi~0T7K9zHYYn-pxw&j`MKBA}l>$DbkUcW1*YWYB?ffPJZ8LjZcpu=rCzNgTa5)-e1 zMPx9u*Cct$fp`ikY6U*3%itpMOGq&d33m`o0+|ZwF0=eNCR>D#*ni(;GbCyV@6N-Z zTZiM-36NCSVVvHSVey%1nt%JYY$9F`AiWnm)5@A}W&I5H9M5MsL-@aYcsn{AHS#?w z97?CDGr_+tt-p4UO!{`EN|D^dv$Uh5+O3zcgis;N>SVN1*VPZ9BbopDtYElQNU+O+ z>f5!H8)-A;oPA476Kk4`(cp^o}8b-BtR(L8B9 z;JdGTcI(?ecopEBx05vjVU=#HgF8bBJb2t`-}SRZ zID3r37v#A^qG0qA6w)09YO{PN#-93gepw5ADQWEX{!eJo5R4~1UFed6c_Ii61Ej=p zZfhOouLGzOr_+D>VJ^Ge6-6Fq3!Z^&}@X1IqZt-AKK_NO$Ny2#AA zg_|kVAGR`K``K%nz+ikMZWu&3y7HDyla@_BABjnPR$;MfpDPf|MwXg|IrQ9BTyub| zypxW+?=Z3Z-SNFVU$m^|EBo+T?f(KH} z#X*2|`T`${T{Y!)e%Ebztb{&7J(7x{TJ576qtn>yhwM(Ai@{Lq$+-qoGdnW1-BaW; zVZ?Cx57xPY?$L&V_f+##9Zyy+|4p*UpC&3p1V@apKQy0oI;&np?1;%o8IE;RAt-va zQ_>wo+67=9x7PFDOoawH_^)8@M@U5dgAbgg^xuD{34_}a>}_rja9s#Dcy zT@@^wrug&ETf>erN>!htD*RDyWcR&eI{d+WOYY46y>=VmehUC!u)ttE6u&=lA8|4F zDB|M`uPl>r^{8?Em^_5=oZJWER*BLt1`f+4rm4K92^5-c2IAN6+WtMzlKBQGLBCr% z1;kCA@R{r^>-G&m@0>bPsw{_g;n}#5&eQ1U zGiCKz42Jzd%1!2a^<2$wmuoDwWB%UFrz5-oNV=k2;X)Qo$9yZkw_$3W2u`!P6oV1{ z+Os#aXqrOF5cFd5)FNBH*G1|W%>g^I|Do>)q?rOLrdd!Z6r8-?jrA&>Qxy3vgiY2f zZgk}GSHQS_$ZG7y=zG~BqX6CI`T*TA7=(@u(mZBWTNO+78}`Y&dw@4PI8gGTsg(=V zecn$=s|nBz(^miNlx!aPiM_Fcv8YhuyT|(1sb?n&r_Xx}R_(PZBQpKwk)=ilC_LHp zg7TK(la`{D93HsYc`1!mcAM(8*56HoCT%jTM8Y(eV^cxbJkCjhbz5 zj~@U95$O1!M!Au35$hkOOgt||!KwFBN5iwhyn{GGOYvb{yOJN8f{q^-*c~7nO@D@5 zEo1WFjWUH}zRnp|XVdDXWO;^VDuty&Q6g>BTOH$*@{SwNNtpCK7R*s_gqLS@6`G#ouKl&Vz_=+$>++2 za)xW3Ak0!Q*iLM5@O-1PW@koQGT>WZfO4EFRt2A^6 z3VJ<_xZSC~chGJ*pwrFZWW)kv{%(KF(z(}*ADrs+_dmxyXl$evDiZcO?pPzOVP3uN zWeA&LVKyZj#8h1hbv+uES78ur*>%zKTys>`9mP|()he!CLM&PM=ByM7CoiaSn`41Y zjGvpzj~%abzSNIu+#wkk6;%PI^BGD0SXEf3r%u-#CJ=Ik0Zka!c5a3aOh!!Ho5#D6 zC^BTY!-nk3$(vwedcBA6?d1}+sKOY$bUIC5Ym@^KtZh!q>PnxPnanu{f~Ic;BMR-b zYCSnUG<}_Wi_#J&go^GgQL(ae^X z^eit>=ffmIP2FrG$$vFHX9c4vz~OAUu~FlKBtx!M@W^-23rNmYhIhnF>s;xyVjKZNu{)^79Zr10qEA3guo zD(p3e()FRX?NOmNw}6QijLn+*;q6tr3meWq^i;%qLs6^zNiYbbSgt$h0Kd_SGuG9h zK{S?Kb4cwWONlNXv4Wk}(+3Gp20_ z>s?0#)GUs5ZOK)j@=B-kKd!c}&<~4hM3l>T|7sL5l#^gyf4N9(Qid^0)-wkkpqvaT z&TVxNQ$2qddk9;>r^?Qb%F;*6x~J47XR8?s6qMu-$q{Qf4@jd-Xa;3jPt!Ka0-6R6 zBVcnmS97s&Kc&OFJ3POLPhe_reX`%*Ctt{jS#K8K4QB`eg>?r>X+o`Jf8y{z&_Wj- zOszkn*_@2qsp5gzdlhkpPfL$5WXv}1bYt0^c@y&yxw6%U-c~UnB?J^l{cfPpddj^> zg-Kq-Vq?ZGv?gws%tBSkpE!$!5?Iq{>GK5M-PNSTzmN|dn5Ntu_c9q_;NmjN*e_%T zsd#pKJgD81B*tS1TkJE~q@N*|!nMHE9re`4M@j1|22_X|w!aUrD)StGj?f6I{nusM z@uKphvDeOs0zo&3vt(yAXrgk&eqm|RF9YFz6^`}2BLAx~ZYxG==h3yX#c6;l$#UVIEF!L@loA6WO=zTM>Ba2i_Z`B*L$b^8w0zV-vebMrR*aq4kB~gYBdUZ*aeKH6* z5qF3%;@|G2ej+(v;*9tYOpWh>?@z|DQo#Q#4RL#kV-ExmK_#(tkj_#qE#?Le9nl3B zh2tiuN$~!_N4NS$E)$-oG1u=sCTxSw*-n?0iczG%%(b=RI zH;&jc^KSpdTVp*j2sife+2$TynLd!^te9YYxRIojxa=Pp(aJ3rx~y&gb7)q4GF&~+ zxFQi;&ZIdWx##WH9%Qk!eC=ial68rKvFOD>eDKDvx5+CsVi5Uv6~wUut~6G8-Ln|8 zv0m|Rv(}Z9!6NJLG0CtI@3NR$R4RKU?4t$&hrHHIz)Rp~G%l4suI5kJkdG<7S!)s2 zM_h@l+7CBu&_W9JA+M9$#-!VWQ7S-TwFOkn_;`OI6^>0L2T! zwqhIB;tP1mV(pE%;hy5ed_UV=ZPKBL6fT6Sx;7>j{!Vi+HWcH_+~U2dl574+47ss?pplr?|<*} z-0zu9HkotgO!6jkXMrwiWjUtZaVintZP6Oxlv)bCZ5QQ#!x}|xqtMixayXHNP%kL@ z?xkX$sg-Ho?@4@kN8C)<+IxI<{p;^RlH7^Nve&AR@6ejb4U8X*8O73%o@)5t6XH{| zvz(7S7r6bNJToVdxTwcEW2eX5sXzqPeZwJR(bKm%-$%{(xhDeR=43Uu?Dv(s*m5LB zA~VDk+-H&LR{z$m8plcZ8Eb~l-38ydTj#oZ=&MDoG0wHu<=1c79S)MF>5WM-lV_7oAjzNHz7M&kT zfqjIdRwRXgu=OT<&j7k#tzXM>B-=L66bQ`cr8NPs3QTIW-G9Z`Y+%R3g1(!4?n@<= z{hRj-7bhxVO_Nu#v~`^S-D2z{*uW<$G13xCWixTTENx3+rJv2h&ILhqcVF@uYcAvR{Kqjc#BRY9l&n~Ij36JDeM3|Phda# zD|l4UZPl*W6|(QX-vy=ECv4M$|ww}$g~#x z^m(4vK1>aH?bXMoeCYF-Y6mZ?M_YQ*+G9suSj;i#{w$vgGL+5iF`N=gBn&|m!bN2* zcqy0=Y4LLks7{`2;;?G@;1%oYGuB>@FxoK+ov=QzHc$zQgM3=xR>>v}t2-5^&f}MB zJ+o@Sf~7v$d{z20KiGR#B^#$I>KIGmMdXJqR>5?I3{8BB;f3Gf2G;ei(sVs%aBUE2 zw9%-<hK)$f<0jp}3j#x=R168IjM_6+7*dlpW^ zXRaC!)gl_9mG|LS)$Ei}9z5c?r6+#TALrpMk(e=^Bxp+`omxMlnd3#<*Z!sqYIp)s zM|{sm4Lz)9qK{21G}YWIqx2WoPl3w%&X=v={EfnGri;!Dq^0mG)nsWz6QJ%<*q@Gi zM~#cYH<}v=4)n$wNh4qFRKL-IO^oVkZlzkPyX~;#>mF!(=sfjn{NV2MpKNxTZAB$h zty(*m)V`G?Lo88d+=ypwZP(Mt{g7;yfn&Gg`B3i^brEd#HWCbT?VVJU2A%prLWg1A8x05N2U3ZMZHj+n99XfF z(seSYPXVLJ>G=js0;+%7|zq>IsZXB-LG8el}0ru5X9kxNMJ=|*txZq$L z*KMUxKkYKktghTHYN{>;7g`~q1efWd#W33Tcuhm_@Ni}XLS)ji?OW63nSL|U(V7cG zSy5Ecok29TlvDnbtm`|BEE;uuj2xZ`aOE(}Iwq5}sZDwh;pT?kfrb4cVudL!|140> zZFL&*Nm|YrxA-Y7F}(%Uf{(RyKS6}d@sBmoJ;7<6&T%nqvSjwr>8RQpP2KFc-k=h4r5i6NZ3jcV&#qU%Ic z_TmKxz)y2h00RRkUZ8H`>Is}`w@PUB4f+GYB=pv#-z=p_b?wxsja91kdEol?CRzw} z{WiE1_3nHWe`9U! z)3oZUqKP6HPay>~OIZ$Hc)Gsm8 z85i_&nyxqVYbCD9w}Iu}lYb+2<~8A8zjd_bdsk^%v&EcidigCg)l?jwuBiA1DAwFg zZWr`bI!La~d3xy?ky`p&n9dHc^90I18+86~JawQ( ziwFbBpIB)nTtkdRxx?h&a#YbxfFie`^}-_(k~vLP^=2Qdtf`UbKMV1MYwOjSgd~+t4pEcarJ884uAMZ-98^W9@YDIh>=WRN^ zC8vvOh@u&oom~SmfC5ZT$+R;~^QLS5uKM~HOyjxPpRB!9C&l*@;Tzt8$Pks!Xu8V2 zI9`|J&=B(`zhKo5a-GDgHn?AtPi`I1-%YLrWJ|W(RH{;bOm@EbL-sUdVeIlHGw~P% z4`0#>W^*y7FyIWX2_PL-ia)HdLocgy&hid_bf;@l_q)rQ`4|+Kt28E0S?F_PTG|1W z$)iaaiV^he!5>!ir2B1_Jr-jbcz{#FIQ~l6?kQvJH2Cd&&BEE#qU{tX+VbcP8a2w1 zIzN~V#PLRkofgmb2?S@!`CpCjkELft=g~YF79h|J)2vt3XeH9k#Xes zFI@Id>Gp$O4#Sw@zhMbKUr*T#7r9Q)|++dv!B&+8clS(N`KtIdnm1o-ye z#xGD*_9EVOP>>lk#j#rH-}!)(rsPvt@#nOB?M?N@f`N4|3<+5|N&3I$x1eYqH&kK8 z$VYc>&1?G|+}9_I6|{9e-Mm(DjmJ0Mjt1^9we0V4s&u|se-i`H?%%UwY5mGv$xQfQ zZtV@qb)62^3yVIt?#??&RMeW=@T54|%y>;mpB(&VG_^CoSM_-U6tHB7^xMN8ZvAW0 zZ3^zUJvA8RECIgcG{2HN$O6?;(N!=&cfTR_I+B!UL(s6l+ z7K`sMpKUbo9-0Z77*!7?XnhxQ_+=R|6=di4oQ1s9IQpOpCH;$V&w&(a3}MI$>O5q^ z(*--wE=%jW%1-9)S@v%J4AmPqGfyeI(6?Ft;O2j7$@Uo27wp0fyYzpeMTE8Gs_RY%|u_%mUL!>l8ax9VEups#=iOiI=mUI=0XE)$Q@k+#gy)X znxx3gx}__>Zf{I{nZVoux;gH<>-Ez}7}Uu)UBcQd2N~y_W=(f@g3I-<>UjNI#Ueh2_YM`$kOPJ7rz{(N z$*80=NQ@*%>8f1*!GpKoJ23NDaeA7LKVeYOo5V<-YB!q~U@tt}#B+a$^gf4KtSK0W z`w9EE;PT<=$1Vsp} z`jfWXq=pG%5F>{fN}nAt)YsYNs*`q?0E>}xP)iY7UUTCnyFAv@*?2c<%gap)D}F$n zvPI}*L^NS9Tv7P+?RR#_vE%d%J-x;C!my7q6YXjCMsSa-M4tobak!ONG!Cx(+@pen zqQDj>oNLWs^!eY*IS=XY5dco%>E?A9JA};>NQ>Hj3Kw&^J4Y;hedpX6?zio4yu;aw zF!L`ZFk2u)*i`K9@c@H6j84AeD3Kjv?+M&aj(Hiq6gq&``SHwJTRD-@ew$FbWpPvR zn^PY1yx7l5`){hl<#Sme6VSDp!2;->xrE;A6XvtP1n8|R3u7SybC|C|HfJ8R zChguEu_#)@5@Z#C@nmi6y(xpFp1|Ik!V$%>IB9JBcZ|~O)sxAhwwhWiO`c&vgLa_k zwWmqSg`r}gH8`+T4*Gp0MEDkz^}|P}jPH1hhw|cMnQ-m4)>Y5U1=;XzaCNbJ6H-ds zX7Lj!9wH81o@~#XAa)3nC(yzLoe)~*TV$27&UdXEmqkh$5Otz}$HUr5rRL^(7>mp~ zM@z`geryXEP16cxjm!nT+ypOHJLMlVlAZ6HMmU~xc$KF#zd>AX2~+1Bf(=p|9)13( zg~X-G$k4@;eZER$PiVjW+K{PzUGMb|vvK{Zm><$$`%Na@&e!F=bk5J$&BO7L6VCSc zmsEko8j~T-e$f5fO_@mMgfIJQbNzjB!nKomdH7tJMf>|vy;P0Mj&D@<2c<~zDw9= zP8v)ZCDU(b;>;p8Jm+`pf^)nHD{a)5BwkZ<`elsqiEt@9-y;B0TTV2L5pf_I zQ7Y&=Q4l&$;LO4w8&udjO2e*2#JHxtIM;}k1 zu0Ir`_|lKB$R(U{SSa+&GLW}z!+5>9{WUZ3{^I%G>%`@NE`E0;mC*v~fKJ*M zrQKBVo{k&kfuPr5gHLXy?|j3*P2aaFb`%k!D(*X4a#(&X{+A?-bbkJilpc4j7tR{mUoH%?mbZNpr1KSLlGF!^;$wxq(n6lx z*((!K@Zw*(CGf%tZ`S{;D65w6{~lX~-1~>QmCtM_2A=BUl+IFdJVF5Z&^}&o6c-h^&5A**=d> z#_v9l2o2LtF(THH%hS}B-W~MQdpvu1)k{mWYZNIj@O#;jnY}ZD+HuZX;)!QdVEX(<8tV0>z>{c(MrH`nc#4%3g5^aK(ay9YYW~n?;HHy9*u9!*}Q~{aKS5LyhgjU6} zk6hEfEohL86A(VT&lhEE*E+bTJL8o3eowGO zG)1A8Iqd7~JTRFs;3o*E!AXTKhzV4O71II-r%0>vEVVs$b}mO+%jDO-Ts$90;_c5K z8roNkM{HUYKhed-LwA3Uu?z*z$r+@bkyA z<^waw8Lt^dW#2bQQW2Ez)7c?`eo&=_VzEHabGGt~ComLV6e-J6n&Nd3?{-0$_*7KQ zQq28OBJ#fbH9oYzcR@5VjA|N78EZ;J7t=(Wnk{K~$4UNrWkfD9TxBA!UMG;tw4z+@ zQQ_`UD!c{s#zqq-tz??{B%55LiZjg0r7q;gTgW)^$s*qSo2NUJLqYN8)o-zZ}lSLDZUEljmzqZJX~ zvBQ&SAfG8=+|7;=eQ^^${PprJnLx(VMd@v6X7iXJETGd`;Lpx;mI3P9UE7&kS~q=% z`?5~2s{2=A&xANJ8qudzBky72mxIRCz|(QwgA)$F0?SELO3Ie~r~YpEwPLG-r`Kk6 z#~Qtqfa96S$j>gkNL;jd{;3YyT5pd;wCBREnQJPqcdhFEQ6p=l)IW5jCPF>+3{0EO z!b&+l&E@XyDPxAu?_!0pCzw9L%8a{xK5zH-Y3{w-1QVj(3y9hPb;lS+J&t{^c4fT& zDfjS>TJMMXM#gs5{8#RilS(OG?HpS zTK}2QI{wsbQO;@)Di#cD7GCszjv?@$fK}oKHKgKzl*m>(0z-~L(Iol%AH}abd6Cpe z8|@w+0^964$ouW54@Wfq9gVq0uf`NrwwK!}Y~c!M-OL}Uo&0^)tnez6>h*Km%M~Ez z=O6C=X7ZW#EIYX;rtw%&x3T8ZvNIc9`3qL=)QI)Y_Apg&3{MAtN2jn_wwgzOsmhyxGORV&v{Wt- z8YRBG6YFN35bM0`gEJ?#lgIl{>xtE?9S6=?e|Sioq72ayV|4ttFkW|V32C5Pnhr-O z3KR`<2nT(=i6R;Z7|W2K0Bb0R zb@Jt*{|sg(3cDrM4was(&~P@TCe3G_VB*=l0dBz*TaWO6DGWzc3yAMO16s${g3GAc zTSO)fzqI?nwPTg9mM+JO?wpoO$}Sa3t(&>ermz0-(s%eZW7U`eiYl=FXOY?VVE)>C zVV|mC8uV5_!6A4bCggJcN;TOKRNE@t_PqHz6w~&eo;k?zzCc7IGnNbTbEL<|8p^Xv z1OJ+G(H+};%cdUsbS;tT7q*bj-0a{vgXysZY3vtu#A^R~vRs&XeMG+r5{63|-h)jQ2SxoknHo#cQ;Fh1rPb<@& zo~Bl1JQ0RD>(ffMC1Uj#D>Iwb*ReIfk7Gp{xLY|-W@C{A3Dn&^DTCiUfk`eu@Mcho zi1ik#nC~Sfr*Qf8A7*VZk*=_6l+Ykfqt7`OCuck=9WAr3miK$#l zz)HCto{o9DfqL`yTcMSCo15V<>&rF6ckj1!B9tDrPVy`YrKP_?G3*e^TTogc6?Xnv zVn5oSkr>RDj3Gbe-qxA(m8l8A{xd%=%V>wweCB=;lx$frIDyKT>nahNH4{I%%{FYc*O9CmORbBq-M8lnR!a>R%}1uTxX$C3wiRJDJ{= z(nzq%MMXKgA?kwHgK{hX!=!Vy`VIxU^_#`svNL)47p}>lMqS>V7sE^}Jxa!<*oC zpM$Ymc+!;YrurF04>|J}L$sh%TN4=WT&8qAlK!vPho97zIR5R{b;V)UUuGX$w>UWI z2tVv!4u~u!n$x*1lLsu##%w=Va+U}tA+giMNht;L-3u1jhCa@q_w5&{!wr{F-5e`6 zWOa}U9@Lm8B!pA%6{kaA0rC0?uC7B~`OJ?j9gRsPGp>w{F~lE6E{%pFox~LWQ#u;R zfD-5QRV+3G5StP3i;4l5mzU%FSvce2wzZY@`5jMptiQ-_0XxjMDE?`0Lb#@gyz|Hov;crq}i3@w>-)d+!($LedXm zRkd)cf!Gy;l+qAF#E*|2GX}{JH|h%7QL6FTMajAC^E@EfxY>F=#UTky@lY zIqKq62s!&|>Nr#$brtil)#>juFQtr{GszT$b1`QCS5eU@{A(AEM`T*>lW?8&WEAJL z=}Y1k2_c`aH^yT|o%6Qfi;@0oEDe~jh;XuSCXA7i+%U>yz)1t|Zr&P&-)#o4-Z?H*H#+ae{wJo0WOB?l`&hyOcPn@L~ zq)&X{@0;PfV&S3jFUV$<3ebmec%$d_1FQQt%DM@&+kS+4-zS)1(T@H~@u(f07iBq-z86mm{Jzq3n)WN+LV=;*@4J8xh8$blutiAB zdJw(YOn=7C0Zg`t@b5u{`!;3Dofsu6x1L01Dbzuheugi)*dpJ-C@4Sa^6I@ZarGcV zNM9Y@rLJ0w!PzfmeLKm6on_N%HqDTSgzz|(^0rQXiil4-09)Ixbfo?^0+tJEQ)Vgx zfhK;BSpJFNmEhXIs^9_*E5Vw?LV`ar4LaGTAjWsj@`QSc4A+JE4iauAcdCCI}M$tmIVAh5ICy?H0> zW^y>9dmIkP-Tu9)j4#kyb19F*hFXPKoz`6v?&p)2@X~=Hh$+C&_Fxopa479%Pg+(d zrn>Nyj@jZJ*Qs&1aJn|8rM1|g%?^hfJJ)15HV%w32=8ecOR@k17JFa`N5Ns}scAcu z>!@;fUEra&40)6vRd?R;FS1W&6n+lQ)*eF9AbS%qC>D4vZl+rv{HHVTd351;cdlY) zN7?et+n%U%rfZ^!(uf?{IgcJbANs7?59r?o&bBkGj}4M_CezEt#4<)OPM1?=@>1t8 z7eA>DGAr@4$a_8H{O3#PtWDIg!c<6-O?2Q`IysFdR<01#$4H4HQLp}?TC0tOEBWGh z0d@5QflKO3?j7-nnhi{G5q#xax5}J=2$jz;z^ptPB!D4lor({eu_tZJ)7$SQ?}wfR z(Y-7EJ~qea1R*r7gx65}Uqo^#o8j2`JOHgcyH|T-5--K|Q%?f8vD@MVrv^lA8CJr- zG#!T{*`S;m1qXHv@MqV`o*+gQSeO1A8J>{v zLAlr7tq-L_n*LZobZPVE)5G9|K)Jqxm+uwlRaEF*u5y_)%(7$%`kBB9JaiEb5Q~sL z=|NOxU*%6d8rRmZ5>q=PWL>_K`|Y$H{d;_sk}xUnP}Zz9I9H$KjN8V9x;M%U^i~_@ zb@Lh{$>w%~_##6pWqB`ulXV5HWDgN)fLp@K62>YGz(~EL91d#?Lqz|frI2F?T1%rK8 zU4mPnfN(`*9(ev8yQ6cKu{N?=O8p;O)#F}=Re{h5SHnRbo)OaUsVh`X?56?NcHQ&U z3Rd8nv|DU(k%!4f@{PLDip*eWW&2!W`3=%{Fg(I9`tFaK1+XeqUweo0@1|_@xF{-^ z<_ch85sQNmeW)|oN7ej{CF9cDpuheaJg34Ij(_2MhN8KP{3CrQ>;(VzPDEIu`D5Fz z22#wQ<@3M!olBltVF-JRhI;z2ncv~N=)2LNjSB|Xe$cNf9C1h`t89-<;E9y{b9+^_t7?}%hWBOel@*%XN@aBEs_?b32YRE#V>!8PbQ)ug_*ERMvh58($=Iu8v{iU=5ddZMK?u(^8iNBVyu zdXDQDpn(9jYj4P!1%$BJ;Z5wy%q(4+)a$Wg4_)*+^c_-X6BF`^Tm!2vDzGFHl_Z1) zAE2jWFzX=l3})=wIb)?IAB@NQ)}l!4ow9OW>DX6Me66Wh$?zVkNXtnz>vb&eXw@%qJ?+md?B@P5 z;^&M3a6j@i+4tah1h-)QifkenS)rsqV?I6LP(!puQ0(aEaCge+aGNTdloud~9LwaYJ^Ti_}be85QS%$^6hzBsQ@7R`@Jb)%cm& zg?IJbC5Ilx?)sc?6sgj3looAVK<9MLK)L>D_)9$y{ ze|0)i-g5A+X=0l30x;brcgP%_WH+pQ??xyOEun)_xEvLdNE6+JvfM56!C0VRo*hlP z`Id_5XSPiKi|-TfkB_&EJUdc$BR6qk#p$$0pz7sUV^kJd68Mr|-D5XWX9Zf5{AD7+ z45>Ij`g0)p1L+@UmIYG+ZIJcFiirTqMkdIjdJq9=NY3JiVzwta|+Pk9!y9M4kjv9Nu|*#zR;=^Myl&;?{}l}0CPXoZ4*B*t_WEW zTTh0osY88xQ{qIUBRST_&5KztLlTLo)myj_H>ymo^S1Ry;sjdV-pcxudTDm9+%$pr zzkez4Bz1h-+g-f?|A-l+up70Pml**xm}1ki=4E{T`$}Du;!!dhwqd@()fU-a=lT7d zz9m*NO$`_V-BVW!3wv-HxtLw8z+Gi^SXhP2;^x9ltU~Ks!=~%^y7TiPUPJE1RgJJU<4()4H_cV_xX% z`7K6;H0SZW_e!;Y{c?R4}(SzV3 zeI34aV3!ogH-XdX@pI=Q)6~Sfe>C^=RUS)9((azt@L07o*ki z5B>*7-Y3Cd2>P0HIZ+YI2Yo?-UGzX0%>oh?_V`I2GMby~GD=8_25}ib#`BO+`n;96g1BUQ?z|o%K{VvXx(#Oo;iz zj&_=jge)RpmWeGbjRGRD^&pDUkf1>68uiAE#KAyQg`fmGm<@G74wn39H`eV{)|-fe zFa+Vma+v(VME!sE;1+VRQW8ExvpMGqHO@$x^6+Zm2&!ytODsN%uU$>kQ?E%PL1h5vmWu;Tb~6@{oAw zfGEKK20Giv*#v!lqwrp@M65(1d*UQSQ=eiskNg;NJITAd5@%G=L<9jeO%r}GUcaC9qJq7GRzio0&D zsT?7H|KqU{kD#XFN@t?>uP-;EwTvA~UgC*M# z)7tZ>V$-gSOs~}1CEGWO5Jq5ab^%Vg7mmPeEBsdcXE4WzfwC5pgSOOM?I+>)j_4d9 zko~bDUQWp)_2I@x4tPOAxc(t5LjXY@pxp%Yi3R$`6v2Z?>vh2=K!ZBhO_h1O(VYcp z_hfq`Mh2^JMdJXCf?OD=cXyFDJVU)3>oJ&EFC!U)rz4+Llx?H6HckLPR3lJTGqu-A zHef5wcs&RU7+2}kP$d@O^u)#Hu)De47TDXYtaaN(KD--J?lvf&=a&EYfr#LwwKe6{ zcl9YhyK&v~XIAbk?*{_iwpe8->_m?Ny;Gl6V3Vn`Y2S=UlyL?*z3;=omapIp(R4-W zlG&Yvq5ut3QD89?*XWuBWGcH&bA_^>RhKpKj_1K4o%DLhQQK@qIb>9+d;GMs;+5#$ z)|S@rd4uYvLU5XHh##&0scI+v%A^=YS5rz4anucVBXNtTq;K;P*Qj{(-y zbYb)V*IH$_?IvI--n7y8KFbJ;H|j~X7o>^Zx6nJP?elWHx%48kN!zQSAclPms`LMNP_kf!zJ4(!s&Ej3r~}~VHwvfg!XXI6hM0Ha z_>%|$?$s5ynz`E-(jyP&qMaEY8>flu6+V%AD2dai_0!lh!ix+pSZrl|7EfRSw{0g- zmdxR+khHHk07(y+8fjbvCh{X-^zv3^3L`{vYNMF=l*YS-3H*f!zW=tfmhm9du^%4N zo?YQQPE*?IPdGLnX|0G>3;eC~4SVxu%aiR(7%K-uHx5DY2ak-1zLA^fAMCqNC4wqf ziD7Jt(@YWVaH1`n#kEx0C~*IyR7EIj11bjD3Zxz6x9v*Fb*u(b(l{M~#j|r%AjRlT zw&&7!&aYDM>53Ev+W^NqVQZmr_|y1@GK zWW^AUcl*qh+NvT@N&27ghCsCprXB<^i}H#j8F~SiB)=6rEEUdS=rLXzkFk;CK}Q1d zU_T+~A9w~J{u%UbG^az%4}Cv3`)d!Dq!1&NSy@Rs;K;AizHWvWlmo?h9Kd7OY|M7W zwXd>~xOa}7{I>}d8cV#X06(DnHh4;H>bGmCNMJioXBw@z}ydDwEOnJWP5(i|Co37DrbK*3U==d#C=KP8}J!<|!{T!9U?wcN@H; znL?aEq0(_5#!kPAAEr-jPo{a#FzK~q09^Zk2oyaC`z%;r@`0>M&Dz-4IuZX;5KH%Y zaDAb@L|o+kdWUueUH&s(0J;`Hd(`hWxgAClB4(-v{W1s*X1bLN!XluzJy;p7<`h1U*8Nw|4r=){QuuAs;#)Po?;!d-9&7f*!j2{jr0sq6EOPU#V| z_Ng<7x{|*L8IPMo#A6f7#uyoaQw5<`48j*6jhx+N;n|RAb+-NC5aQ5(I4RArUF1ad zymuO~-ict#n-pW5o`wZM$W7Hk7&(w(1S}a#)~=en7N)W3o?XQ~0|NgQ zrPt`?^5x+0J3&cZ90M~@KrcZ?I)QiUvmQxCjhP#~A$uENg*xY;ku2fYlv6)It#ZQ> zm+4*(_&>%ah@@L^vnaP$E+QAZ*FG1wvY@fNb&wS$Q`WMS_I_C&Olp^}t6J@%@6_Gl zI0R!oa(4A&qBa3lV}WthQsp~*KN96MZw^=CdI$_@r4k1}=B3`I8NaG{??j<{GFjRn z`>d;Q8y!BbR0Gp`n8u*ShO8J;2hNglx51muhbrtdai zWQUXqB8}r|duLEpUWCphO55t;@QFuprWg07zz9s$H9!@)7-ycV6D!3As3R8@&jPo5 zUYQQN@Mx&gqTnHI+V^DU%F2_A2bA8gQOC5~6L`Uxh^~|I%18ebONxkPoQY~Y?3q_7 zXlx|Ba*JL8$L__Km|9PF$unFj-rNAB|MJUoZDGwWy|$XC7tNnLwbo(dNHR~1 zsA0>jrPExOVYP}}DMglkU&RqKeX((V(dT{A+{GyvtRF12f!1a0OQc>({DHO0uv0T@ zRX*MD_=(}Bnx9${nhs6DfFMpAD8F0yswK0eV34y#H-39sy|tP^3)#KkVW{jABhR||`; zAB8ED;Sa(@R^xeNX~Pc`7Cnghneb!kjgIIVaSisDS3NhtY#HmaNE}WVJSN+dTfgXpy{WKi*){Z$EG+Aj%xb794StznsAONh+I= z_>127gXS)CK`0JokZmkCweLnj05Yoa^5#>6ZG&fd#%)6GYW~%hbeo^X?u(Dm(o;Hd zz4yrWQU7Usr}vKOQ%iRJ{R`4(WWslYnv1K~pUy56Vswr~1gKl#qhEf~kgkG@?HT8W zOUD<#Uw&mWDgEkxO}(x$S*Q79_j!|ZQ;vp#p$nTGij^1@ssS3Yc}6s4@SzH2w2a@q zX(j1_q<5^3ZE{@D`GI=+du9HhZ}=(iA6I{6Dp-Pvzc|`IKj^#Nzg%DC;@9IVIMVHx zyIX6XeX^eTLZaw3N+on+Rp$OdV2ZBn!#XHumk+NgIhHckbo}p__Rmqk%kKAY>8`qd zEP5s2D&};*VT+e9thV)>-wqoaJewdrJ|7@gqRkZMu-8d9(0FMG(`Yzy8>_2W*w=9>Vx7l7doG3 zd}>iGwnaFfTaCu&f115c^##z>82W1?!MNRk}NJuCaN=3c{=7Ypw08(QXrbYwTXt3s+Dc@oZ z(#CM;!nJ)Z7cryFiAsuSqS0F3O9Ck3LL>L>fn^vFqUn0LZj(=p6QqUqIo}r0uesaM zW@=)2&Gzq=TyfHyJSIW+=}o2n6mfx(xc0zoa$vv7Qp-q@-n8yF*5Kdrfvdu{EQQIv^Bq4-o|P=G%M{@9RjMWnI|%)$X5W&2Al)p z+UE9Z`gmm<7dc_43(0kVF`7dnUG0H}6hNwJJV8QDJZn4APn;M$%05{};?!;&ChVM3 z9On}!>;&2ya8Qp?oQMCi`*yyr#0Rm%0F*5iW0ekbP{v$NlQ1AAh<@jQl*CAk$Uvp;=jq_uMe4ix?27wvP{a zp6RK+S-Wm)X_(g6ny*-6xZ%< zxulA_c*hMsOg{B8LrFgdvT|4tHb$@tm3;P_*ym-q?|zNkttV|^P3lXLeTK-JI{(6Y zLjIuWsPUr9X>yYTkgkXFBsA=5XO^5As_VIZscyES1sTZ!cxSww{oG=`hWC6 zb#L_LqUE`EAUg{Xs~?(Mx-P5uZm0(DFBxCq{47#TE}*RVA$J8O9<*7QIx?4T};?iXJ_p0_2-Js$?;BZ zNz>?97V7E)!EylJDSDlfF+X;@7Bm7rGiM(9Q>fH=rJ`jZp&cWG1XQ)dJK;ID z|AdM>9MmruV54!$nmc#nUgjWsw5xrA_atWL`6y922N5>Byriq$}I~s>} zJZ|dweL;r0(OZOwXgVWAnGa&hEP5Y+vIHC-yTUNUK)p2x5*?#jCF_Zs+e=XG)|G4J z+4mK5?`Gwq1#tj!pp_Grk_Jnm5*_)=9vFxLaWnk*BV*Q6-fw<^wY=Y#nMiiVDSbnv zywuT?Az949dfB?lH1eoHG>@tP|1*9mM{&yG~^GQkm-Fz_^p zx=2$`B4I&0G%zv$7&thyrf_c$?8N{CxCI|J!r@z*-3VFp1eTk}s3^UhdzaC8uhaGI z#vL?M=7j0BAq7hBos&}W0Wd>DBfWLD0HV1($8(6`mQ#BlhgYWFSXU4fB=OsB=}4VdrO+%gJ&YYPY$6KVF*LAjc5(7%Sk}Bc-wDHgm}AWFS!nnmiO6Kj+WIbe16?)ba*E)ya_%uOSMv2vw^nH=ZG zb~p@E)WaT?=Os^gqX*_s%0BX|oBNxbQcr$dm=wdRu7;5)Kp-&L1mTkdS9vkxxP;ag z6tMgpXk$hLZT0&FI@#6avYvkK4m^0VdWby`TCst2Andq`yZ8)SRaUYUzt!pVBXJDb z%C?!T%V^Luj0TX+)GYROoBOYCpaA4`sE7YjfJ(3f?SKOKZQ_-R@H|X+?U>4Roa~1S zp74Os#qMpIp?!3{O0NjlSBoo`V zZCevhY}>YNPi)&b(fRWJ*0=7x|Mco!-PK+7)YE(Ks@l6YHtG%_m6(K$Am=P0-|(kE zamhzMgUzT+IohDpd~*)flJ;9=+o&Xzr*qv;kwR2#)Lno&5eexSxk45OoGJV6(adbD z-^^_ECcnoB_iFxQcsln4_e{JM4{P;z=fSNnMNqx@2~O#VM?&(rZialm>b*86s#?~j zWzm0~#(gol;z#Mz@~?xaluzhedUy~R63OOhDja1$46;P5kJA!zUlyTp&MUu?S)Ics zbzVRW>&)g$*9|Fs$hY19OzWCDNRfk|%v%Ad1|pB?O2a5m%D>5~&6EOBz zR~@Sxk!4HHf8ua3Pi_zU(`R(K%$_zA31ivJEGm#MRDiE*HJC*VohF#w_W4D#`uZD# z&iozSl?C3cI=vnQ$@s)(m4-bDB@xL19F2f|;O0@#?>Prj4@%f+rt~rusvWu}4dcdb zIT&w5PxmhH(BA^gTVbfXf#HjMtaM(fM{fc3uZAaP?M+QTG;Qi1${Jyl4(vvZJQwGL zc=k@9f=7F=iq$xgZNtNLK9>^@mtjmwRO~#(;F*{UI9QNFrTG0~Jut0aFUX;#X91a+ z{z%vxU8CP*gCR)*No8!(rr)`O%H`_!-=aKPT(yM?EQ}t1*8kJXl&EK;6ne%HX9R@0 z)(Cx7C?p(9Q34|Ajp_6+NRvXo+AL@1*|6)JuLh{Sda)r+O&6=T{7p`hK7g1xDk^pd z@Ipia>wEiaERr8D-i{r33@k;@o{xv5k&e|)mSS#o*(+n#oJEKx^6wg6#l8{li^S?9 z^y2a`cB4i-9*liW7H^AGA9(}Pv_UsYq%IP==R7Ghvupixvg9%;U#jWYTJ#5eCc^g1AU^q|08sijM;P`B3uxV*k$f(kpyx# zEUn%p5N2g+=lV^vkl{t*`~=Y#X;8^V2XcP<2Yk(>~g6(f-rGxs6e;c2EH zzzV6Lzv_tuocydBj@Nw!7VjU(?)?r7JcVa;R8{w^V_N-}7&uCC^iF=r-Zz zv+thJLY?*Xbc^hB3ySmd`XhNnM~T{#%p=8zdo+b#vwea@FcaRJflup>$$PD(a zJz7eT|0(5S3)^geOqdJvF{&rWJKno!Ma~i>B+7E0X4mC}B2oLJre!MkEN@iZ56NXU z(>R#qHlTBc=Qn(3y}P>~hSNWollvkv#Y~8j5~@p_jTw>8u9sAxkB!A^hA_OGdd@zR zZ$F5|6baeQNz`h75Z8xC9om!Bm&z>0nk_LL!^G+wn{;QF`2y^dOz%HZ6-z zpF;o36~|;?1SH4R{g4G9kf5acoL%6JELD7Y&Ur8ZV2$ZV%Vse2r0Df<6F!rWD86qX z+u0ETlH+foGsAfSh3~g8hli;)PKOzTCFBPYER0Gb^AGrHE(H!9dse8Q&A&davm7IkUEkwuQ`ANIt1myVJob$S;~h9-LcpVu(UX zX@bgbsbyV;P}ba*e-Z5Y%tNUiv;A_^(Q| zo}RoV6Qv7)J6amZX-sVsh9aV*&M+r<<|7dNj|5+GDpXC65x`GuM3)&30~oxhi*QZ9 zg~zUgPDqj_Y^22Rfk8?VXT^xHUFUW4A^qwKKR+VCzqnhj%y8;6k0G${Wblq9-_X&gbHsf*m%W2KaEWd*Y=jd8 zJ&T7==XG z9aUqQxte`c+gkT3^+U=Wtg#URx=D;sGs7_egUqyMx}Xl`*GpusOM`dRWk?6)?CV%j zcEoM3$ELSUDTvtuDIzSA?YKH@SpY7{U3#`*g7jLixP7WjYgpjRaF9|F;x^iGl55sM zzuvG{5OSvoDON72kkA)g;=>r6$oPv@Z>Ie9gg$ywNPpH1o_AvdB*_PAfZ-S}BGsr$ zT4ghAv0uaZ4{juqjL{Vs%6wR4CQDBaQT6xPh@r3{^6tnZW#nYc5w^WV_9QV)_@wCJ z(Er&x&_6^DAeo!{B2MzIKL7S{m*mA>KP;gKMDjoD>UdDu(OwSC;FNI!b5>kx9PRMF z=fwG{-3v04YIBm={D6q!*PC?zP~8$N+3Y?%43}M+`js0N&cAHX z7Wo}7{4c^|+_^yFMSc%92@lV?7D)(C5(<+$N4%yH;!Nq`J~j|o#N=Ig?cZQCratkn zyJ(r~hmWFKA6~exX7<~YuM(R&*qN&+_B;7r~6NX zxOpK;F#>!qvp0GpGK0d&?q~Hzr#Lp!KXcLT#N+1o4k@+CpySXuPa&BXR^M=eNV%C%w`VZ zR!qhF2$16bv`A2mpu2jbk*ku(lSy=+ennGvRrt6$XAO<}4<=cn*QLD+R+j|6B(Uj%*)$|pIF{MWt zn=n(45&uxf)*GZ0Bz)``WF5lCMR$)2FNNNq*@@Y+*Vg+MwIC)F&O<3I>S;}4!L6{d z!0)W6!q*x|4I_2_e5$`zc=dbrGqB>36wOz#I?8Qc5&*=B&3-x)wJ=g6Dk`51 zs+qC%0fs2;TTBKi-$F@zsXrng)MG80>cL~7M>SJhP>oC~;D=}<)t?GNN-A26YT&Jq zYky~ISh3j&pRbbi+SS@1ywU?Bg8d&9kdlbBi|w4dYVnlM`U^-*jrALXBA~I9*#mS8g+6BbKf)6`v10 z_J@Y@bBtdefYJUzG7PU6uD~A?|El6&39?roFsU6PD@ECbT5#`c3ZM}hh=|GL5gnY964x|_H?8Zhv*OM7^V$Aop;9=NQZj?iXrr*imRog_M1CR zWQ9PRxYV>;Yt*+eH5D1}JPbzrL!{jJZ_SYr9Cvh!ISymH5Ap6DAbR{VQwd;Mi@yXG z&z!et6m|!4OL@RW5FvL{uT^IaaE3nu*-^W997$tjJX&6C(QTt!BlfpFZwTGSM<`%w zms`YiIrbJ8?U5ze-0XHA6~^c>s2}NBCykbbfS~I&gs_88=HBr$V>rxGb_iUE`nh7; zl|P?j7jA91BSIahI3J^D+7?yH)>rIe67TgcrkK(U4u)KokXLZ&*{Gw3F-5)T-9buOYTSK~%(!$?5u&H5LYs6iZd`m=so>&BqFc*2GO1&T!y|O% zP|+v-EvC-UrUKMIQy+$H@Q7>m&O_)^MeoIE);~`Dd(NBn@nG}Ypd{5>D{Dk)-78=b zxv)8{{>m*Ql5W4wWkPeAVC~$!br193@8L1JaknLn9zELrSTdWVJ;vUN$G+hYr+vz1 zqV)CK>{vp^1WI4U@`iDj+<53@X<~aY%>=XQPqGC%-`SEXCl>U#C@)Tqve%SBMwL6# zAZC(kPLqFRj?1MzcwXMROjl3?TAu;YFIjp%Jx!{)+#bL(RUCt*aYEYH7sY?$?a{5c z)>yd7DH4to^nS_EAV5eL@>@7`#qh1z+y{%D6vrcmh`CcF>dFFNeJ65kI6?eg6Uw35 zjRUkk2#vjFc?e#C+?~;i-EcJBni6Eb7%MIOkDuoi)(ppj4Tn9)UjC%?4 zsLHi&tj1WtE@ez62<>*-B3Q0mY)sphBg9e|lUE;)idJVjYb;!CoJH%9&U2C+&QG$e zxSQH)SYc(fd~qh3Kb5~DkY+E$vSm)g=4hm@?FG=ff=u%jPG|wdQxI1Tu4Ur1_HmJn z@O(%-kYiA`SI{9}5)yD~F^Rh5PN|k!wh5XuLrpc{T`}rv&iG*ATed4$h%{`VLDo-l4JiAmMof=m%-$F+!u3iROj~ZQ`~&h;n5r za^M%-qcM`VYosng`YHIcDg-+E+X8jG+jX>Tv6i&?ORDPi(-u}dypeE0?*`xTdWHz; zWbS?B@=@8OIhuOM2$VePk6`#SsR!I}*5a-pV=wru+|XDSB*ahd-yO^IV2?LRM?Fm& zS{OnvB6KO+?^TBpUCDj&6YG5^AoE|X%gjF>%}+=EJFi=2CU7y)g?;_#K^VVkk`B?V z?)uP@D(Xr;m7jRYzyiHUS9K+O$WN4{VS&soT9@n59;t%=^)#`rTWP>Iy>o$DlG(lJ zaC4KNMHoSI^AG6OVC!wf$P zOa^r)ewLc3vHug$EWW@8@b$g=@TeZ@K{|b=3*>*UkXKIjAgEs912)TEO|YH>5SlN) z&a*68j_n}Bo)Pk^f6H9IulKchK`L~}ccg$^?R~C^&N50ETI^jB_6$DQ3_5bcQ0sYU zNLR~#bd zU6_X!RMtN-Gr~||vs-0tWMH%Zq<4?~Lmn8L@9$qbDxgccjfsYYf+lQq2l2gkVRNA0 z=6D~J^7$D;mYT_nmuYPbJ~T8$CK^IM6aoYQM9G4|Lv9hhMnG?0S?~Hcw>15?r-r8o zhBt$@$G7_XJW8b8S8lFd#hCa2lhB&Sut)8sZ1>jPcO#JX~X$ zh;5Ejec_-~_SWvIj4E9kNyW7sd(k&f1#(Wi1mI&6Ryj>;XfOmsy97`c zQ?_<{<+b6S6#Peww@aEjwrs1eb>_SPvfpnxovi~>j9!{wQpc>n%mf*=Hff2~I_@9q z%w1ec_s7{TVc_9zr8_a}_tZ>52W?(hZgWNkg~z9PUs-unz1^ZQwhUvl*Z5b@8+EQK zunPa^v&&+;@5?!$9a};Sw|^_rYTjC3JEu3}O60~%{&Dp?I8sxC^lSRYFVk$};WF+6 zb&P@bReR9IKR16(;Xw%nhu-iig{i*?0DNj%9AX%eU89F7cJp#jL0XUUBgar8C4|w7 zJY5rV)_&L>>$EGomI$>)EhBIfuqfHOr`k=c8UKiU?<$+p{A2Fk!NPRF3+-V1On%lq zY>o?6H~zddOSmtwWnT~FZ0Kg#a zL)-xDXnk{dn+cB;e7TxH4Y)Djj?0n@yYCqQZu><7bBJ;ZQ{#ePcHgi4-rldH0;;bx zWIlpUK_J6VN+Ke%n-<{qv^o(LwJ#?KOo{b?RRwM4?DYQXlLUb9_P+Z%WAF*u&irEA z3xI4e1R#od4+7o2*HpWRUG~0$dL}_X{3bx7&p$;&L|4OOG^v;kIkEj>r&7)fp!p46VT$`Is8%sqYI+L;1j}P zBcr2w{a$KTEojJY7}jA}@G)O=c$5i_Km+d}yJ-;FPsAAz!aYd#^SEQr9De6rPWvEd z8Z-zVjJWIvx<2qDHU?oPp>4>d^7NEs^=U|JyB{w<&q&DK*n4yGf&?Z(AckyEq~t{= zh|m}Fp@$a)T2KoDxd8R#>7s zQ*YI9*LILHvBu|&2^Aa}78&U6(;n#)8oq`*#4s?Ck{ctJkHQ<^Ag#kf+?w^=P zsL05FzXZ~M--f*hslbk8HSqFV!Nvw%fAx z;{ROSZC|~Eu8+@8%&i8YDrNTA_WZmEzG~z5|3378OT0fbq;{Acos6Cs@9w-W0|o9j zKDOUJ2|qx`K+tYzF9_S@(XS3Ks9CsA1|@x4PTuuE zpQc>#j+1Fs`ll#uW*TjY#<(p7u@GHScr`5zXPs2E#A%{dS!L+m&C3KFwvvV)b$e69lZ3^dP5eyXRS(FZdXJ3C$YOjq!< z4_v9k|6eeAOjAqs9yX$$J1;F0PCuD~goxj$W z$8X&-`7D3vRm)J)T>B|)=wgw1pjr&Trw}aEbc6w+5KRDZXq2_B#;>grH6p1}xh0Lo ziJqi+bAKO**HAdkp|91(V!4vO!_o&jE}Ol*POGC_`ouJZrW8e+o~NKRMz$EfRS=H* zdS+=%vMr_jy~o&ZRVM18mkIGHJvBTnb-$PSa76L&CV7?Lm#L`{n{L{!#EzYpuMC!U z`c1oxxO>Y&{h5qdLzU`If@?uqbM3P~uJI=f#VhANd#@?ISvugLERPM|z!a__(mZ~Q z9#^ggdMB8ABSk(Ro*kODL-t&*nbsz4`yi8DFInTU{YdQXwu4al=S!;u5Z;|6Y5Vjm zZ#^N0ui5zO(NZB_^-ISL!_Q0+!bvRO2B6gh-ZOQH;XGHn?e?`;8CKYo`7t=}QY@8+t%nxH3M zp3K1-_QdBW$Oz4v^C|Om(&f(8C7ngTy2MIqAbyMffnvc`?dRAP$GV#8V0CS0*~oS{ zQxm43*}iAYV`Qviy2sg)7LLsWqT_tsL;mxIpVgLc&Gbo~j?gb5bm=sWJUowpakthoJO z+CmX<`OZ8@PwAqpSc{JTfY#2r{SFY0f+!=&690WS9-fo+HW@Mvl=eIN;Kp^dcDc5i z4Zf+5*{@t5wQc|Hw)v}_o&r4{x33PFH!IWcV(hur`&aaL_V`8Xr#cpwdrC^kNeo3* z5nVoC&uOc)pf2w>XO4e*1jcmwQQGpxZeLq&ZUx{oX%MUn=ixYu)W6y6PF@3RoXg!d z_g1-l3&P|Ir!3@sjHWP$JKX{+cO$j+*kq&>hU!3-kPX&LnZC}xmt~d8ay{K30w0N= zHK!zPH(LD*2~hlL(x#dF8yFQN(Ym{1Pse0kkC#5C$GYOj&@yjirc!w`x1&@e@pjOD z5oFO9&KqY*n6&7Wo=5%*F;6$8l*inQ##KhW z-ko~~F`v$if6Tyh<{YsxEj(Y*h_jn3A6b!VlW*|nMgZU&T2=x%!RhzV14_myrPKW> z9A*(9 zcWo#t!e`MP;>0BTkmgue@FLfirOC__MS7%((}o54`P!MC<_S#0cTpJ@T?JOc+}BKV z9)&}uxlPT6`2&6LTu^GpxH#LjJba81HC(`|wFpEC1+!}5sj34QjhxFy9WntJB)ZK%^A0Tls4 z>WOmenwui|GeoC7Y^g1b54!AJ7ec%E9_2W`3fAEA8UGS7(X=Wq6W*F`Z~t<0a;LY_ z_%3sY^Z`9J;-U;OE}c9WhC&iYCLEL0Mkp4EPJRO*NKewWm>U$aru3|C4P%~P$-#Y#I1J?R1A>Yr;s1Gb-Y-O1IV3G zoLp3_v>4Lo#xkC(MtFPvwN);w1rnLMq6}rS+v49gWS9!xKj!Y_#5ONY&%r5?6dRCZ zNGEu`jdsQ-r}-JZ43JeK@`cU7Ot;GO(K_)-VTd1L6RAW&6aVzoWIR^Lmphz1VZFjB zbE~G6*6j}3#xxe+|MxrarV`3Xa~QTx*887ovfTSIaTh~LXXqha7bIN9@|CW#nd*r_ zQ3`olJ}ZK%cQ`7}dzVEyFWv59Le=l}c-#kM-_#}*xon3|HUX-FqNt@fieB{uKm46h ziXr6uCK9~$lQaqcc1FqlcQ&gcTf`<%? zNK4vdq(to{sP>uSM!wkw^kO}n3U8t(98dm6KSn^J0MMvs&}cyWqugAttf=r$F`24R z_@8_-Sv-n{@IP8nvb&r%E7o$L&i)7AH7M=*ng43WXU0dzY3i9X_PR~`*dcqwAu|WD z4eL6~PVQIFTq!5W!l+r(X)OME&56bl!g6@fvA3m{k-Pg%$9wv&Y2C;pJLr9niG^nsb1@Xt8`~NzW3{;Z4tfhJ-%1|HVl=QW-M7ECX=NNte4NL z#EL?|arL1@OBo8|W1|i7xrN%%GU7yP^2gI09*lN&`b2BJ)!)eD=@xLc+lAu|DF!N^ zg5wxfV7k4U@~N%h+>lh-JIpFebXbdQI8JV(uJ0+52Vr{`o0WGsOUq>vNT!S_{Xit6 z+V-TY=9kA)lD4DnZU!&n6?z6EC54n(IAYrJGg`Hx?}!M0O2aW@k2wa%T)khc-iKEq{{pYK2WE=FwmO!tyPWY(rLKz7v_tR|oL;+AzH_P&lmQ zl!DPMy|`Y4Gyn1UOL4U}r#X{NPlk|~xBZymY!cr?#XI1xJq{e0q8is}TyI zpo@}*4%`FU5ofsb2UfG*xHOK^syZf?v)$%O@1A1gNivlbI`-!TQG|wV>R_S1ce?v3 zI>*{3;`1W|Ug9Fw5J5|udBHn$0(BHhV|-rn^Idep9ek=jCW;MALh=e#CZ)ZQcBd&g zcbg%51@~q5GM{&MM=BfpnXs6}WNT2pS83U9TKvJON4x|?yV1RP2Z!azO_oJx3lE3% zcu6{Cv+qSIjL}AdJkY$S&BgN$`iKsOv>^0dEAq2{Se!&t2!w%UHzB?Ra6l3IFtB^_`_5B|dX-reUs{xz&z6EL> zTceUXmJL)D=OwPD+!{A6tPO$}80IyzsE_u*kUR&_2b`5wWRk z%Lfd-&zj;M3*{-NW(Qk>2L}zy_AIAsO2n>WF&qg>`qJ?F+Vt9J3Jje$e%yA)#lyMx z_2=`fYoh^!=ERoJi^~I`k16|s1l=!_NCByJbJ$Rn9&xaABG<~b;KoP!q~eWQ?)rx1 zf`0YghvzwQ0&WH$+m!$PyCfD8*3s$iuB3aw^e*F|T(fYmK2}S{;GRmWPnp@x^U2r5 z)adfSy!gF|j)@kBU-;c2=9g2;qjBlWm{P0wP{{70u)*3)Qm;M~qIufG_VeMPD3b#x z99&>PnE@{n$T2LpMkm%WO38+v4^dn}q?*q44=?7)3h1;Ddx6*KJ;!`o>dM)twIZur z{dS)DETpoWTGktf!I>0FUZW0aj)81i+=IwWtCis0}VeV^xZ*wjD@#?RNn1Do= z4(>Y=jozpT+d0#PjL4SIi%1`|{T51!w$@Y+Q+%bSIFA;^5kYy*^{h$mWDO;Ju(6@l zE5F6tz=iLj4bAs<{B`CzQ+zj*roU1vJVx_5l@_;RC}KFQY1xF`w%D`Ns$x zZE`EQArw_#CvO#0j#Oh(?Y%0zdzPsUz+jpAIa;7uvD>FqC)&l4)&~{1KD#BAJ>9;-8EslO5%eF?OMArpQ}5{xWJKNnstB_MozW8j{&&%N`)|T zFy*g*_tbpQUOKi^3D9K!k^9Cs<)s;(Vqz^!vZpVxCm@(KCXe8%V~OtrE^ zE1nj*U#b-;h>HK!qobu$cf$FzI-pjZ(+fUwZ)d@|ndl-M)YZ~a?Y$C$N1qp|`+wo6 z{Qu$DKF3;{V*y{Qrt9=jI2)pJJyofL$c&vlVL(=V4FX+P5+mz$VB(+`(jFxjrsfya-rq0NWr zpV-BEGY7f$%TeIIs&LhRz~Ak#RX>`?pg|X}0@*`>JFRcQLnnUJx^o{n+Y2?XUDc#N z++t&12&QWX1jIYew!YhT;$2)j66IIFm@!pkSJ{tji`4veT7w69EfO9&-}j}UN@!2R zKiR%)FI4u!r4DY3RQ6A9{TV6zERb#ydNJFr$kwUtZ}LMzufr1-ukGc)W`ugm_>gNI zZlNUmjrFq_rG1dv))%sWt9ChrO}#g3xMm3yiWMnM5PbE7LU=&fW5N%(Kwvh{0zG5uq>YcY_kz&j}x+S8L&T z@2-NUOu#=@j?Ks}=GhnjaO|*Av%hn+@H0gaY(dV;n)&`iLp$6#+%>haI^R9N0{hV+ zLOw`tezU65xmnre9Y^y^)vx-s9fUP|W3(tY18D z=sRTK&iGr?aH{FtO;cQg=hes38E6^DreI~2JKBEHeCGBi%o=}24+)*IKW=Strk48kjUyONh-eLJ`b4o{;Ek1q+yKNhkq74vwLubD93P6?)uGnPy)HH zwIiofV7COqb!Hm)?EiEnBp01}PIO)mqkdqhX1?{i3H9(3l{GA`Ih%5k6D;aiCXeAM z%}}f7Og%r&2G>j;CProoEm0ck3g%+Bfbtudf!s7TqGk%OM-JImYGO6ra6b+eQ}|lR zI(;yYBk(nj0_S0Tu(yAo($ciCXK}c1=v{#{X@@^Hu5SRgYm*A`EM2BX=&7Q*Lz|2h zYwm8#Jtv)6-dQa*qR0Op-gU*!iHSQ-?xy}0Ipy?Ds&hAR4M-zUV8)*U0@o*UxNGVJ zz_Mn&_`kaK{%;M-wWf1+u5i{Jls)XpvsH6(Sf;w(ll;?oo)X6)3>*X2@kUsl#0l-= z^5^?P-_WI87RN8YZNiTGp|It;v~GAp@-6#|=FYfp*yx?-z9+wjZK8?$)_P7RMZ2f9 zt>)5n=EtuGg2Xi|W8a%4*iy$BQnNkV8jLZ^k8r6&7FKbECCzS|PA3V_ko4xcz_vHv z4Yqy6&ko!ZmZdWa=Vh?YJ+9h1j=;yuKTTr9M60Le_nS)Jm)ypV$4N7!TpQl7$l^!W zGJ{*_7*Ly7ui5Tp@u@b1g-vQ%+i+MU-)Ga*qx7>o%va49i`k|L0PjB$ZD!?L^uAA|`K7M^Z-e8uz?QDrUay=rGq5c!B} zJS-AEn6_a6(xkeKi;`_eXL)IT4AXcS6}I{%)D^sj_n2KXaW&6rY^NX7k>ls>cimL! zk0uW;+mZ0D)`??xm7UkT{jN<`54J3!iCc>G2WOY>4KgAsqHXKy!LZ#C3QPw)&>BaL z&q?e(*U-LQX2ty>kn~#e+dlHh= zdSsxur0)qNCG8~Y&9c}r1kQQhUpFUk-DdpKWqJlk@9=`d`L~u_e0ZO$T^>F;(3x!P zy5EPY?)beKcUgzna+y z;|vOe6{qLZ6;0(m7P#am6(1I5^*g**m%x5gdvVjAG2=xf4 z28idy7BtP>nPYiEs6>p5;ET8AA1M4N#Xk7PjF|SvSu~yWXB_S5_jLAj<@9^jBUVpV z+EzaZB%5&ML62are$;k&YPhU0I1w1)A92_>-#8I7VO)P^1pVx#-T996LnVSYc2Tgt zH%EbqC})mr9&0vLF|SOR=njcn9bOr0PHIZ#9wI(s;1xaLX5@7@(BJcM_?)hxWZBQ7 zTS|6@vR1&H?9+&T;&^oRbd!a*67Y5x{MahM$lS6GUkkkz1z&T68Y9K;(mL|+Sm!Ge zlX16t;YsZ=HDlYNiNxqGp)Y7FSHG1Z-(!HnLRFk*c0f~|QFSYpK zyIBYB=oIjd^5bHD;P2P4x#x!75~!|qO^@|-)!u`2^$ZTz|GF2mWYt$$_~iTz^Ib^) zOy#_<*Te!81jbPu!Qs>YW+MCVNt66p+okr2-|8>*u&d{6Ad74rOK48%`$nO=^ZI7B z6;*R~!}5sEhgDlY4LxQ~>9JN%8T1n@5X&XjWM^EqcZVco4lM>wIv(e?B0>g6xx?e? zXl~cPZy`VSyaLxmFBEgLRb;W6J+3@5m89rCvM-6c68P5hV*E$NqHnLix`hkR8R{&_ z*+`&DEV!?&xjilsvOF^S5xwHiemDDCaS4B3b1WG|OHdRx z%1lXE4(&cMwE*NV0va@Ow4`y@LSwtyRf&p?G3~}*YICfHpqIew`AJl>n2y#v6vh>a zTlckfq_O@8kgdn6w@}I$ z8%}thRR%M;(&j1$*%LlQ;1&#$tI|H~j=cA)cIW5;%Hq@k?5M`dF5Njxz-9uX`mLspU={=3{MUs5UUVXBV z_-&cxSXCH)IAoVX^c6$qv!}u4XB;)!r#~AREOPa-_j_j%{(XYwGTS#xD@@7Z51fu` z$>-(Hl5{Pnm#VuiHKkSvdQ<9Rj?YL*MjvZy!QeY9{w-MH>w|jZcU~SK8YA2y!*{je zLr}`_u;0+jLk?3Q^GLV=?L{`wy+l_gpKm1MN^&uOD1kO_tYjrc3L8`lvAOz9< zX>!Y^T|CPqzSHeJed`E!x07S`I3=9%P-AxA$}`GLIous@cM+MnA!2JF{ht9pYXP9 zQn?c4B-@qyhP1pKAWh5R&@Gqem264p7FLuNCLBd9LH^an9!8`>XCT9iIf%yFAB4_d z41ysP3;c*>z#N#F^<$sqg_2$pdxPKs%Z5x+RO@%D^+-jM24BOo32`jC3zjH2h{s{H zp@K}r4HTQ78|>RJgFqTs1SJ*~%()^Udg((#IU_x{*=AIaUR!|Qklap1p0q+kprrlm z1z>+Uc=X%fywt8ugb$l9>h0X_-R5Aj303@IYX$2m`h9_zs5z!QNMe)w`NUJztJM_f zI3VJ|>rDJ;?P<0cTkjWxSVWb>Kot%>mX`bkzHYyJble_nysl1Ja$+axL|cEtGyWhs zl$5fWcIWX*!$B==L5;3L?OI`neu`>{C_+bFiQ;@|#}wrhbVWzH&`lb{gLALR=kd z$oI}BUDF=Z``0O1i(Vy7?DBrRJ&*IPNAGSLGg9f0_uwsfg|yi#!&nf>p00NWXoaq3 za1yQg=Ygn8t1yc(FuI_J-9YFQb}%_T9#tB$I`5OEP5IYHg$1QcDO=1o6Anj;?e<=N zupd=7;NYTNYlzn;Hy=o)*VUv3=P_`%wQk_Ep4t}tNU2XIV5OOIU2#WzCbz-n*39qo z4g(yY6-zz|%#8^s$_{HCb1n0*niZAom0tUkkIhHMgrm3qznX|pxzvAmDW5xYlXR(N7N z24P;{9DnacWYq#?C%1MpUkeF>VL#~7V=R(|8 z$(MDpJknDoXY=7KCzuu6L~k+k>#CXtv%h&zKjIZ1Y0+*!p`EX#>mxxfGkafa$c&-5 zE2A@1^3MItp|ZZ4HiuH_4&CGy-1r2}p(~kTbNQ`0-&hj3CL?N$*s)+v^zUwQ<0-c6 zi2T+8@I}2{Q?o(dG3~#}1X^OX)rcjoS1>*fM@|7LP^0b@yKtRZm(1_*f9l=)lb04=afhb0BarEyAMMI{*1U+^;)icwFZl zlb1HRsmtr!9u_ptckVwmExdSQfY-mjraqWu@@TV(M5xQ*fH|}kyxx+5LX#fDu^4dj z{33VD%(-0bpB~IHe+VKZWTkxAm5C8TKERxPJThNB-0nIVdHkJ7 zxcSpA2q1_R=fb+T2zKL+1BPRp&JMtQ;pN0P_*46X#owv4s`T6(+#JjP8N^rC>3fyN z33ib-`u!^HD>U%!2Bk937 z#75BMs7_N20-Nk65pQrFbg_rI;dI)7x6j($9y~HUMRMq&pjsdZCm~KXT&5d zUez&(^pPAYC1N%9T!B9PgK{70(oSMIIM~1YzjEr;x%Q`MYI-``J>~S5H_T2HH*Ff( z3fFW^vb9(J18g?8-{^o_+jk zko9r6(1=Ps2=QL1ijbMlZ`_!)36Tb2WwgGfYAwv>y?B=nt8nYP8mc5`)u5ElDYx(b zX8!pKZG+M_=}6UXtJ|L3YPEm;&@u(C{RiVUZJSZq5B+=u(DuXCN)iKD!b&4kGfxw< zkCSx6@DZ~5@{^SYgXKGE!8zx(7<5D&jh1J0{r6=%h+4I=M7kc+E?h%|WhVitMieJ& zT5ZLK+Slyh@SZ!tYic&Tp1ER=7sb^uo`dmZ^@@v@M&4g-6wcQpu@y_Qy(QaZ_rrL_ zr)?KqDJeJzVhm`ymx3TfEG4q<8CCvq-u78t3wf5|6zJA$%637v#kfJ ze#bv}Z5pjwstJkevST)pqN%LQ66!7tNq2cna~p-AVBenQM_roLdgU}waDiB^+0Zl6 zWNLMNx*jhQDxPNc_x38Ks`|TW&8yot#iKy>YabW(6C}ML(?|e2X>Yaa=GPG$AfP45clT8VYJC0=>msTSL{Syf8n3>DkV4MzX>?z|BtY% z?24o5wpeiY;4Z;~yL+(U5Zv9}AxMDW?k>UI-Ccvj;0}X3%$>aV2Rt8Ut?ucWs_s)= zRlD}tb&j{AFur?Ie;3P8+D#{=Q!{-!A48?A1z9en_04PY6Tt=Z=;nnL`xpwQO-It1o-8{&!4D_!yxkS7TK zPKh+oEzk20=__dP_2Wq};7woHKbI7U6$rQ;0SvstZ~H-A0j|YLdfg43u8?Wqu#n@! zh(=^g)VA5xSijNheBy&H|M}c2SMFC`u(H`Dia^ zYZH?kp|t2O#Ll5v!ZE^}D&nGIHNL--oa{XidSD(=NkqAo&Hk^y9nI95Yf=Po_g(8g%6|M41EVb zI1;9}lv1m722ke`L04cl*6uwzA+20c9jLeO>E-dHiluoslJ!5R0F*HXCv$J_Y+B}$ zjZMb;iLJ)*s-8h=%NCsE#r;F~)YxfK2aGErKi{Bl{aG$wPa2Tmxs*!%Jeu2l8GF#U zoJ{mJR|fC!wq>F2gEIzNRJ-!h12kqL%@?~FFnrwmXEA8UOgevk!DMDV9AP6BbVL>XCq=DZo{1bx%I zCg_F%HX&8(+i;q3=HdM8n{NL~>tzsrqjDKm;cnPA8OWbFvp0|c$Y$oS#kktcZj4!a zXn~mLcu-;P*Lg^WYfGndOnhAdl@{ir=H63~co)!xo287Rer^64OpsOB!&rfAI$p{J z3DV*TC+>4xK`_f)Dmj94Ow?yQ9HLc`Rzm`=ECJ7(5MrW4G!b6TtCt^B9MYE1i1a@O zi4QLlt8_cITU7CizdNhUye+XpgI^)+J7>|iEtFm_EH-+hE zj28AeoppcNp5JSecG{);`7ufEnNj$bTN%oc9E<;A3%P0oHV*5^t&_M;NWO7AY~(j~ z*Q{5|&l+t?m!qY(O#G>Snu8Ec=76ov;8rYC0(SaU_;Y=IJuXB&)xC`g>O?>Sn%6Md z=F4VUU>7px>~^+FsFZf6{nbYTc0G`-7^{{-Y8m=vATAt47Na1vFgr7omBviubr zrW{AEPGh5fepx}AO*x7?fx%-N>vZE8++s+=9%AWH-@3~xR2OreK*VRXPAFHwI zbsTtG_foB?viH|WEGUGFuv;F~dBel_I~Aj>RWax8Oaz-vCO%y99cKC6^a;?fVPHZV ztRlST*)QAqR`abhTg{YDrg7a<_8-IOyYn18?v#n1xwZCU;D50>fjO= z!{~+eC)BR&4(e*g-T|RzGxhRP#FUYV5Wz1@io1io;dQU?KLna5eH3WkCmDUZr!|3- zxd3fqS4l6&dFt?bPbfs=(w=U$cDti?#NuV>-JI&~PmfdEsh=i}N>p^2liLu9BWZ4I z;DTSKY6J@dZlO;tZ{cE_;hcH6hsjFH?sk0Iwd(NmjDkY`OI0j!j_gBr|p^@7fFOXWVP|G&<9w~y8UdeO(t zmNt?6D${Yerf>VB{R7atWFB?|1MM?@!Z;{>34eiB0{v3FtVF=wW#**n(haX(zA7^$ zy9i#9`e$0u9C;rj_YC;DWai!#aE(6yP`1N&!PLuaufjQa0uSoQX4kIcgk;78^Jl2}O&;MXTEBl3TF% zF|RIs#Q)YRhv~Y>Ob)!CCthkFIx*s;IJmPJy(jAQ_I>d}p7K73!bLxUUyCF<3UUWJ zX7}+RS~iVgvFoB_$ITFVW9A#E8R8sj!(u-ov@KlS9Rzs9LJEaiP`t1U#O|$^?WYs+ z56}cCJkLsek!+eW7{fcl;>weU;3Mo$%$JxiKgR>*LJ<|3;44CK`os){SaH&LY%%yy znS#y5{PNtDo#?n-iRM3z{TviOCzC?AhbJyVdP62ci-8~v;_P)bR3d=P@RC67N0^2b zj(KEy3V#*8ky$)Nju0}#>+mX;03LZvGw|Y2aV%D3SRF5}D<<9E%|EK$gfjZU0m=ie z!cH!#X%YA%Za0o=rYCBHAqDxi*{py4S$rXSc#zQQHf~KH`L=jXFW(csyO-+oUhRot zbWRZpdE5hHkp4|Vk4z@~W{jo_6~;^--TZDPUCh}*B-9Yu(W+tMXQP&>I#}?{S$vqP zob>$bSL$(*n5D8pKXW_?O$ zLS4^!Gk10UV*OeY)0u;O$fE^XEWkiKx^V-Mlwan64f4irDifTkk3%+jFJXRqD?Jrf z6IjterD0ZdAoOeVm5ka)>AX%0)ZlabW8_ooJUl)@(Kw{31F?M!tzlW>jsLR7IFo!uy3_-UC{p=my zaJ8BaGK!?<&AuIOv!XcwDTf;6FR*Zx=`UQ92g)70F}0l zAL$X zWN(sYx_~t+e`uW&rJ%w%=#e-0*ATc39I@W*$-FHAU0=L@wJDa9HySZ$dX`8_@T1u0 zNcP5oU(K^@mrXRgi^lcpnW9-a~q=&d84?XB5X>iAF3@6_~cc~K4?n1Jx`iVEl%1=};o{y9Q8S?wVsE8VQF?a2)=01L1cd!*DDd&%F z@P6m`xrq!65rc-}5X-l1+R(bt7(&5~q~hWC3hu}vps>St)(K#z)nvpBT8qU=3 z9I@g;U&kdsq9(3;fv<30MD#I5;)}{5aiJXK95*~2;CN!8%Ayeiuz61w2TslHXma?) zQ0b6Iy_JShqXMQB8xYkf`Y@j;i{qhW?5T(`gR)9L=ZzKS7ivo+QGEEMQjYyjgo$QA z#4#W~5(f6jepj|%lWU$e_)cd|SALm+r@H!nqtH<^96LGjrSqk`^INrTuV-Rvib{nk z^aazrfdPdkmtod#Bv}mY_G#D3yr7>Hd3C{4t9WA`)2U{IAa<~{; zXA>OAy^NgjLNMW@W72mm0WOXw6HL9S*9R?0+~6OM{zm(>NcdQ-O-(pzKJxFnNY|(4 zw8{h&Q)!cOfctG#_a41(UZ2%yJOcsi#+bf5Jd5uGtNe5v;a0*g#&m z(y9cMeV-(J266C>xo;st)_~7vLiSDqL`YvfV#+ZCZA|PJXTa3RjS4#IEG;()LELTg zI?+FCyaKekzu9M1PU_s=L9Al;+}uH&qO6QuTGvbiAvjvp>^l@LS11~mK2S_=L8pMg zdg|r1o*>&hgZEbeuhOS;lLVXSC>mNk;kGR32e$YlC~%?GR)Gt2hB0qI-|+7@S+a7z zRnKLC=iWEBDzdVboEE6t?Sm|@q@=G(Aa=Cg+-opj;U8Qh?8F=>)`~?G#w;nBuckbc z*Qac^LeU6&2v;cnm+boa{i^Nb>iO-e?R|e|Pwk5udo52931%*E20J+HE#hKi{XL2U zJN`Ddz(t9!lJkgkw*8fd#5x@TU{hwg9& z2-2jos9(qB1G1_u4Ds|$^9B#&wdOOf_k51;LBJFH*V>^i!G_bVsp;^RNrn=Gk>pEn zOwzJ%+SfK#G1TpPW9zxX$@(LLOX+r?olWJ^mZc38jJ?;ye%O=MnkM~COk5#yh(AF7 zRgSAK!L%JI{1DEs!SusV?sY{r!ymT{*ES-`U^nZafS_VfgGIJmY*$caoTZcK5ku| zrFPD4#t}RD7g(~n&fc3?XUxN$_4aPLHIBLF6^i~_Z?~;?VB8i7#XcyJc1&gvIJT&y81Qey?zv&_uO=G~C@yb*8f!dvU^)4W3tVobwFuYS zs3T=AnL8S3>BrjEKd=t4Gi#BL2X>(@mi92K*CQu0Auf!1Iwi}sHM^`Q7&m!8lbKy7 zO%Hh}HnIsz{<$j3`%|-WtLys*)~NA-T6?>GTJOXl`Y~nMCVd*fiT(g@QDdY+# z`;+*(=h1yR8LcC3fZDZZ*Cr@02N*$iXr-s0gia||<#%gOA2yu+d@=Lps@QD{NU-oM zcs0H7{*VE$@sG*+66cq^bQ$fJ;PhBkkS^4@gmI9KS~;rh4+q97w6a-V0>P^UKK#4#rG?<}GnU{cCAzya zRJ9YDh=DSc7Tih~6ozECUZDl5$Yt1IOyeFf^@O%RopeYZAJbYKmLh&@>mXn7m_*;$ zu5Vng_S<;5GhXgrt2Mrc!s({rv)^|tIDM6uQ4;lp^3s~V?_X^g9se2H;$iR8aJ@o@k}M`RF9aiJC1O=#_$p` zJeG0vM~UVN$U5^0(ZMteL3X1%*!~5U&N8Yk>lUlM`Tn-QH%IBn%=GKB-fhE7m(vcy zXi~x&9=_&!Fd6IQ=Gv5hV(hx2>>1@6Y;*Ukz5kGefC!o@wwj`rxmlX=;e(4sKO^MQpC|?@)K~Qe2nTsn!c*3mT zzt$MpwoEfyXZD+}(CZ$Q}o)-{C@(&j(PQRsSYP~buwj!nA2;hRT9g0pLSthryBya%!0z8DWzWpYrX;X;-v8~9 z;m~6&LO7WI(h%pp$W9fP3Y}8VT{w|lNA)+j3pw*)_-s#q*o9aXsW{(g`14;|)1Dmm zC1nmbTwaFgpE7b0Mi7Al^I$Z4mIVisr0UXG1Ypy*v|d#e5T@rz5es5zFE(zpCG^s- z$N9lM+_EpbsdojZo#79^u{e)FvsvOu)iGuW!fQC3l{ahgE?Tt~`p`0z=zEICp73+x zC^(C=__EN7fH?zk*$_{)T3?Ua7_D$F8T!%e%z{)b=UQ!czbDj+Kzly|ONi!mxuiu) z#E%k!%AK>|pIy7WC3n_c)e7K9$Y^Xz5a3?fk>09X*s5*nexg;O*rrcZh~nDECb zH|eh|VM{MRm8q6~a>nY#w@%I%HF-{?mhS#>FS|hHF|W{ym(4q?(Ajl^Ggi^f%$!_r?-%@Egorg%sO=B}3|*)Zj`l!)tfa>G1{IWRB5wpUVwzA)ksmti&b;v6H<^ z>1W7`f@@SGY!6m85EbSVlpgI0XeGA}v0m(X3Hj=@nQ1Kq%GJpoF= zlA5t(lrrvWz(06r5V-g22SB0MJ?6{<46%kL_YNcXUl1lL@878M-o|XMte`GU0Gf|% zd4irBJW_|edYCqRrAU@a{KAT%u;0vXXyAGEC0F$8ZtnWnU&7jeog7_iLdyWmN1`@61>-8ai>Inq{QWeD z??$87$~n`@Di=95n5g>iSk?*xQre$(%Q*LYAd~ELiksxPls|s6-pPM`Z9dO<;hOEH zVNpPB^PdgeGsEs*T%m?}rax>TDutV(Aw)JXA*%PMf z*%0FWr{W3};CmU+o+|`VaSOtF09}J!VqO0IUV)wfh_?^nEj)-G5L&(br;w`?kw#&* z%ZJ`#^$M&5C`~BS<>Zcpkpa5)yk6Ruwu}BPG zxhPUDI74KV%P~(%)(CnO|SD^UOO^<0U13g5B`MlW5$6hq=!b9xY#s*@unZ8YuP1tG`M5hZtawkJVG%ny0E}@0CSbSJV$SL9l;LB+l&C zcSf_}W|}gQV^rnwNVV3yPl8^a|NEQRIaxiF`hQvzDNo}Z0$^1kXgujNj35nWEqxTNuAThEpAn+Op*B}uZyB0Hc^8l1V#)R<9|!y!fWlQ2 z2_1))J^Xb>mbeD5p7);1G|D_J%we9By_*-d%EyUU;`-aa`I(35mlxua`Q6K!q2=CK zQw41vQ=9*B)nr#CcKDvt{V#go+CuClU|=vC962C!Vcr?5?$^DgVD>20L%2DS3TMmb zivezZH}A%vMEQQZfNY8>=*31WwY~5EnwotK~z5{-pN@b8M}I*o_Mu! zNibG75|Vgb3vAO8UH;{DWBh1)2l~Ef)yn(<)6yY#=_i|RddwY@)#&wFsj!rjghLC7 zKgd6WzJOMm>*xDM!Q7AAX$h|IIC; ztmh*U;pL5!^;(|Vlf8vXFU;WMr@3dRVa`QtVZe5@f`o>dd0`K><#z-31)k11|CjT( zF8R2DafKlh^*X;QdBB~izCT(@BJj%#9rd-F%~JZj>X}sODz61ojsYf*d(icRH#cOd zLQ@XAKGZ)zolWRSc6c)MdrvOejo&#HkG)qlI_*qGyup;~C$5KI+QeUpM;Ju@@NXaQ zb1qlYKzy1jwJj!`$=<$oLG#M^*nXXjoJ(s}QfF4{tT-0~K0I82e|m_LM&F+tBRB!F z+mA(?P~eu%mt~z=^MCdIU30;_#pVOOMSZqzZ>Z>x?zXu6spWsv+J;L-=erDj7D4UM zmzgw__%WMRmc9~y=7aa!!@~Bv7Al{0`S)8G*u-KJ)69WJhG%|`tgq;pfb)huzJU6c9beMnb}$c3$enPP-KlAPg|bc!a^?$S zUp%{h9eG(@8m>>XRYIu7l7a(S^Drew7OwkW!$2IUgpeOveLY_7k}LW8L8(8$Ep3C+ z374mSsV=n&RZ1J#&BMB=qU8g{H+%41z`A;m#BcZW>@Uq=T`U|$pNm9y0&g0Yzbw$Pz^-EEIKKDNijwbuyS zwfN7Xw}-Py#ovZ1X7sZCbl(|txSTUc9}2(XY&&vU#`uaY0>OTz2GI2_Ot>KDNbD0l zZkKgOSK(^k-zm1-ZtmTPM)}VmC&XKf#n_DQUX8;=axEu^j=P_yFLjtSDLKEnFn3YZgM$7U%V76Vm0h}!YvFt8@g%Ro8NNK9SFFYE zc8dV4Drd{Cj>7n^)mfZ(6z5VUSuL~d@2xW57jqqOoFDSk>5Z>BK3H!!(t%Fn(0p zL#|f)-9fee*kJ*msFK*l#>l^n7%FvZ7K)8IV3K6rd!DV1UmMe0*T*_>CSAJ$H(G{E z7v;%{it}njuX|RwyX_hfB;+AV zi8v1cGh62Y3LBkR-<>}UD{r~1ffIzlbJLISCGFfL_}BGS=ZE?(Ta0odV99AB102)|- zALIfF`@Hu6j|^IZ-x_iQ+HYGJdQCKK>W_dAQzdigBVzRXvcke?kmvw~V0^ul^XRW#%w3J&&W zGi?ey_)$p|@~ZXJkWjGgMj#Rw8r`yOu1Xebq!bSYgPi83jf@3iR1i;eK8W=_)M@{bSx@iY(4H`hj+h3{8PcWD$5SV7c1Pb+VL_b4MU*n*+mQ(pyiC|}H{yrz zpLt;{-N>~MvS2O-dh}DuIvj8NF@@CjCk<<~ly2?g$CW0WNz}k>Bw+ue*o> zvJiJK??$G-0}_F=68E+=dIQLKPlfvmdfj z2*!T%czPZDu3R*%LrBnZK|a||`$oZ1yK*?Ah<5Ngy*bWwnJb%I&ml>amtWh$48ioD zN@|3~BEGk>(aMZM5YIiv|F^6G{|CPDcOH;#7=GD8EP2WEZ#I-jPaz32M;8Ax*^{SA z+UrBO==RsWlh}sN!)=e?zrf@A$Ma9B8bVZghKZ{vzx?pro7k|)^cfv9*9#;M37w_V z{Yvmh&ZjN0(Q0VN!@(*F%ILJx)l@g>W>)tjiwX~T>Hb<1A(n~s6mEd~4*jJ|eGrev zKg0t`(Qsy6c~d#fG4Up3!JEsR#Q(ty)j zFleLSv`{j;3_7_ODUGg%__NSHm?lRcb-A7pW4uX*^`K=-cS!Vpa*x$^+%1of@0Au8Rjbl0*LK^lsX1bdymmv4Jx9iKpK7PG}i8Tzc?19>(Od5s_65B$EKULHd#jf(DhVr*nn8nRpB6CK}J6ggC+H5x7%ynkx(vdZ1H8v!HNxWNyvUivw9OnOGYHn&yYUFCLVE2pVA4x6ZN_bqT z+o1B^L8GWyCrb=9d_J_#Vc25xaJ5v)IOw1|ep-^jqIbVJU9o_cbR z1YWAOeu%t2NE`|9RS#eN;C-yW&J1fYjPr*3p+L9Oh{@tseD?I)BdXe@VN%gAmZ&8R z%ZR6P*inxj?!PwCNZ>zIuw`ko^2Cp2x1*8Rv`6EqrVhxx78o&o|IU$Ye@|4(fEpFx zukh1I8ZpE!+Q_inf|gWD)Y@Y>?k7V#GmlDkmB>Ze_Pr7*b6Q{ot1Wm7WEqPZ_l0xy zycmnW$O7=A`QV3S$HBlBF&De@khL422>GH2Mm_7n{;ujSc$FYWJefgPtGlc z&k7iLD%$w63iUl+RFby#HQ2N1L{~4tcjOg7{Mlg+(u&QztWIdGtR8|lp0EKCpG7x- z+5^mZ_&`#3%43!$>Tsub zF-dAiN=FNK$t&hFNBj3MaMvP&)jb|8=IHA?k?ozO4DI9JxBV(aplsjSLxro3XD=~P zFjl;xHArE~J;CDzx21h4m!s3qi0Yen`ly3ZSn2mLOy)n#t|Vb(ez4+9+!Tad8`Chd^y;8P5kGwq!zDRz$$( zm&vY(iA&Rokf_%>kx~DF*fYbTGUUtFyK~Xix7gr6RHG%oUs_y_I87qr|2Lv)v%>%vdaNi%V8O~{rpzXNiR?PnEf+P zMfL20v~;RA`cJOI+sN7$IscA;rp0vDaYH59&cMbmc?Q)zk}9iE>jAho z6sA8zj!|I3P;sdgKw%~^YC9_?#FHgZGl)u{Qx(D>P+(HS7wjWL1yhKsV2FyK>wk6| zX4ib&Jn{v+R{CrmWi+HzywCLVe*96?{JYik$eh;$^PCY6f)P&Qq+HvG2D%_>38SoW zzC7}Ny0Ufct^j|rVo_MdaO6537yNbsDEOx1*=CP6XD)Cd#crz?6y))U})dPMd!-2=>6 zN*#GTokg2B`Y|EjGdjC+p+7Z@e)^doLoeN)VPfl7L~?N!!-Sa~jCG*DBa2)@ef5oi zwN)3MzX~RQDl|Vw;rFx>*0kGU>bufCy9B|J@Gc0=7=-2w;U5cnq~0Z8qpqY`>>ca} zt0M+bDX}TlKI}^;jB8AGFu2fRG=~1AzGB71Ej*nmh&Hwve1Lb;SlL=X$^IT;w!V z7FUN;0!-FovOM=_$UMwSS~UBD_fwGuBsbUlUu<8GoL55220zvqS7Tkg%r;oO7Z43h z>SbZFXA3Ioqgb_Dg}{lv? z8L+W&OZ=hTHzVB1cfR;w)@m-7cFa#Y--%b{MJ&5LDc%sbi2}M=I>y=`3(E!BYw^&> z&#Me`e+RbO4_Yqs%KdJ`U!hd_dCX%XLw^&tmRxK;ra_mI`8b&WO2W2%b_H^%P6a8g z6@sqM0ej@)HTZ*x&aJEXPcQOnxjnQVbvg4;@y0$cZ0QT)Qy8=p0U82S?Y$+bF)l`# z5-f&0i-WagAIylq7iO@Zj~Vg0i(7xK^|}$oK%+r+Ia1TS1DYgd^D^fygy5q2Pa7d&bf?HSQ}T}zz#)Y!KJvo>cHBQevRdXZ+1 zZ=r_BKB+nIqyNAF@ZKPVu%>&`LifI<7{TGue-1~w#%hZ^HS^RYXk4eg>6gRP{h8N$ z#QnqnPWa6Cd!wl2+?|~kl692Ai)LLRi+2XXj~w;G;_;aVB^&uh>0w!^DJ(Dt~?=rZEmk4%We_YL2m(GPbq?$TSmyHsA z7Wh$-q&5FG`$X7>LcXrqF95$OG6f&LuUUOn|8^znj8=>C3wN#on~{#Cb*aNl|FcEus>{fsrO zD-!HXXq5l5?Pr1=s&2G?m*Ft!QDN>IEOp6+B*afd{7QQF*B}2Y)6F2v-=TEW&Xzfm zA}Soe-^3TaL=lyZHJK$>_4jc4!pFap_@lKp|`?wd~!}N9uOnK+a`I5LvSp6%C~mOTZh0UzEyfxjAmEWE)#I^s9oEH$K8egp0b^G{)sp zX*}A1Z+dc(a5lzrJJXG5)pJt-(Z@9W=ksi>xo@s4xG9QP>or+`Wowc{`_%51cQFP$ z**|j4DV(=!6M}3uYgK{LkL=K9`1jx>8k?Rjcz9=vv2Gb>Gj0UGZxP7*Kw6ZD&Uw1z z-Z#D5KZSF>YNaF|H=uCw-=F|AOVne$f8e{vPLM|Ak#XhI(?0*m;;^s57+d+FGU$dL z)_0A1X=QJAU@w$c-6<%0qE5!bXAC2z&Mx0RFrgR%$UqgRt(QYN)#XY*`$3{hF;lM z{KoZB#e}A?M(WE+iqDuFRq!cl>zYp25atuFwG{K2pi*IZ#&nBo(JRgn=k4jAO1#{h zfweTC=T(Ux2kJs_b_PY;L}OmQN>C_3MVpG%<;P{?KohZX!a^A2!t(Xn+9a;qa5@RL z`GdQQPpO3+bI((4c-nJS&1};Mw6Y&{U~>&0Xi4)pNB6d?rmS@N(-i)nBT@-3lXE4; z$D3JptHbO{y9wjyB)?jlFt4}AZfgX0jd#XWPQNyDg6UJA=;^^fygW+WmHi=hHz=gM z#plG$*+;-wQak)_$?oreH344112iGK*98)0(nUDKCG*ZOO)SRJQbHDgXQp=DOts^( zBVGeF{~iUQAAZF7ZVlTs7JTK-Ixo7*VB6tU_n4xyCJN{l^r9eN$9f#GRFeO;$EHl)ZDcYog@xtBjGx7{tay!qG=d)-m5`>&t#-qkmnfw-}9oO%thpkyUMOrV9J z5219kZp=y-fUe9(@A+kQl&#u<#V`r2?AIAiz!`(<1tj!e%{R+e#D|t{vDY7Vg5U7> z9^q(=NuN}9)O)_}{xWi;(DY!i@!-}(!?Q6^vWXTp=Aq*qwSN7KGC7dVaTv1PN!M*B zspn9A>u)@ECuAAYn3__X#G|4w{+u72W^Nh0dTSAt?<)RiKs->&h(cnlXnNG!!%E`1 z_hl@vz$JmxXy?i1B{OOPIBZLgyY5*T*>H}>_VbSWdep(m6h4=rt@6cw zm}F%4rOopUXGP|PQ?mH)lf!d7@y_%EZO&$9ns%HrmOVfNUxSuplKQ8v;khk8DX~qS zb=PqO0{ioqo$uSS+FQ_+8x-g#uX191qUfvhtPBPHe?OFK&P4Y^Ir!Zdup^!vYha}_azsS3K~qAa)s!DWVy>QEx{Og= z^3_-oHjXfaVdeSA1(DvydOT=)7rsrk9v=@B}uisz46Juiy`D&m(trM^kZAS4-2|V;$=9)S2PWdh=UX z4GfM)jiuVVd6y>VmPX}UmAdA6-iqCbt0h+~%_hz7a}e1ML4oZSSIMgR7c$emQgjEY z`fe(mGrh~A6IMWZE8!7aU%r-UIXM3r5#%c2+t&nA@EW8|!6(lzvfnaSK?H(_5al9$ z5+FqqWar{k<|A<&)B1_jAxNY{$;IM@5)AiuTgbDFqLw@^BiazaSl_o42!tCI^t8N= z#A3lSnjaS!aSwd~B=`cgw7&xAux6ggJ1VgZOicCm&HexaH#5Zu9j+hOW0t z*I)?G$Wh&Li)a(bSmiBOTi(6R^L+iqx@YE#x$}Li^z3FZLgJg+%+McXXPsS0gweot z{($!G)2bEn5xv974y<$O8A=b(u)y#3if)RsD8ijfd2vn-0h!S~c&09t@%GHxwFB2cacMUSwucSvHFXO(t5!qid zN3xc(o>$RMp-xqf8oy#Oftc6mMi>ZKm>6;x${2Ke@;f|6x&04=#(m3udwtvkx1o4_ zgI8IOo2>OaJ%5P0kcZz2jaSp(V!h!)ixT3JD)`ET@`5Uj)6Hm+Kl~(#zg@i@(Ms>I z>D3RF!U-q6-R6D>>%(>9+D4n=6Zv0px7sE$zLMIV>wV)a;}9(21GJI4XGWMg0W0Pr{lthl{MeY>l7yS`ohR3sCtaeMYo_s5n18Ri5#bNr7m9h#>(M1v z=-Qq|T{_;jtDmgpo~c8n#QbF6n9at2iN~@I*i{Oq7?(N^3Dzz~Zqh3Wyeipy)NW`w zdeE)h9L|(>BFlBh)lb4?m35J3IZMzl&`(&-6%yuNUT^sztF1tZ8P@fH?%_NJO1k=d z_mW)i^Q8Ne(W(4&p}QSy$nL938Aog~)-9>RaEs(k5-}Bta^?8|my!t(x2%l~f6l?=VBp z=)wLX%mzSFx1cYwRsI0YuH(vq3g7VPC3ZdpoS~l^&((ipmW|uGs&{2IL#VEZCJ2AsHAC#e#NC<`XuJ zBFxb6j_o6~H@kEvk@s-4WNSnFj~R zivgp?_XwI?(Pq4h`WYhWP(DvYQXRFd-|g|PHkg%L0Z#@>@_JW$5q?c>#yPPMi_qSG zW>r-wW1Q*RReqo)sklUi9FjCWjVVx3$#spF(q8>)FZbCSbrj>goYD;4<9aD{F8Ztl z-9Q=+YN;OM10@oYGIEzdVxQWJOgj-SCQPcFk=UYU6!)rcGej$}NO z1OJZ8L4i(6`b?L4%H4hGHjy96JeKIr!$Q>znSzCo0XH2PdVhRWzdzt_Ll zzt_Llzt_LlzZbA>bZfh%@l~0HcaN!sHZH~=k0gkxe1H7Y<-Eh}d#d=1-J}1kxKX)^ zIdSpB?xR(qN}`|rWKMRkeN<}K*LdCnBT`ab%~cgESM$0!@b&aysLG^U+083NxL+=t z`RMRyzf7df;hW|9t!^~BTm7y6|A_P1GkFw#;il#_$8)Rq)upx9oUE{KCvHC)6iv5{ z`)8e>jJCK_yHPIhod)$o;@ZA31B{$_xz9_xNo#6)U-b^fE-UL6{C1uMx?5q`eE7Yc zT=lV?q-DM_8F81vDPPlMZp@iCsom^%WSub1muhiI{)e@b&`akuFPg61Mt8~kTO`)+ zj)%`Ry`3oyaKiFYBHMzIDy&$vzrFx3s}wPF`S#@$6EZ^J{S~Q$Y!q ztZ@F{>i?s=)!*v>Zw9}A9yoV++V$21X(q?=I3{dcLa^q8?#cOqoU+O`%70ipp(*OD zzCUicN@d>6_2mASTzP`1r)^_A<_JFX$tK4hx-9;&Cbhnahruy?Zu%Cx%asJ2t|6lw5VuZi;`^gAp31|t_@DJhwjvnm& z;~C?s;RIl_5a{50!t-DUu>ikKs-%D^mJFcC0g3{ke%h=^{EoN5`yFpX@;mP1Fm1%Y z>SCK5^KCj3_hCnWLN{u0tk!qu#qeIz(PCm$en$~esQX9jBBC}Yj-^M2Dr00-Y-Zvw(`N6$(=k_ja5{iM>RvSA&vVX7Xa{e2BQ_cch|k;kb-Th>Cfc-P0FP`i7+s>Kvlz%)!taG8wNb75O5eC+%D-!M|@Z3$1`Zs)vME#Zy#Z26b zI-(_mMS+$+k5d6QI-xbnmKhAIv~ZMh58_bw|6g^QR?Zy3(i!UOPg;`qR^_cQ7nsNr zl9|v9_sp9d%j?)j!d(lVyA~2RiIP$|0d>WD*;ID@t+FEyRi#c>83dSGIn7=UM{DY! z+&2;vg3A4NBu9enP=_3&{t3nn{ztZ>){`^0X0-=KA}YAElQuKcQvO@VF(mt=PT=>B zoSrE-M+MPsP;m{C;HXZdxteB@4UEeTtoGGJfT|+<+Q~Qdbhkf8oo}HO z6qdC~4ZC$iJa0sw><4@?@!>+TN`VW3-9OUJ{`rm*zM#0>F0$<%K_cIiCUgfQ zwEmN?%AhN%cn=YNXfZCYoO{A=;;^n#tV~>>yz!}`S#{-+lP|AIK~2Z?vAo0EaE$+! z^+}&3y%(`AmvUCd#OWbzdt`mh3BIp6p9^tF&Uw7#CcntDAEjyo%eTj$Vhmco}t%H4akQQO99S|O%Vzv();9+I&P z5A;~34+WXqQh9M^QfrbyAk~a3Pm1N969rA`sapFdct!d_0wySs;i6!Pe=$#$kC4H% zJf8?A-qL;35rRi!?%-cP7;KVaFk@nRy^-OxBa(h*1mDk$P@q5hm?nwrTU;b4XMAR8 z;P?T%EN5o?y!P??OqnSQNyQkb;?~5V_4AbWv-`m_-J8_wbFau$Pv2Qj)MMAlHkWzB zJKIiwR$b|@{QrXhJ=Q;d@4)_d`)U7k;_2hglTeYY5VH_(5pfd1h=d9Gam{eVaO|*u zOA;K!XAyg^juHYLaD@>6(KkwUok2t#aV6qSpA=_EH+PO^h9{p{ zn_gnzYrp+1(cfo`0tt5rcUTG`o1KC&2_u+uxdslc z;i2Ld6o;Dgpulb5vGxfoRwb1c@7b43Ge;`vvKr(FbIGRuHYm+QK>_gGKjZ7PKD}EDdA&J0dvtAt+6Bow-3k7k?u7JCUyfbe z6_&{oRTe*{RG%bQb1h%3-tzYDiF-A7aX7_BaZo{ui$S#oRUgT8b%{yv#`4AIq{0T; zL72y;2s6xa>E9v_>0@;LaJG&we_w1Z|C67B}@ z+zpVpqvh-o=D0lKG;~9fhy9Y69^U^_Hq;t+n0K#hqT{6x$}h7Rj7oXg9ucgwJhH3vd&&? z*3@P@BKm7kDUULtf45tk6{#0uxst~Y>Avie6*Hb`1vSa zli2pY?Zg}=+H&-@4WPZgh-wWbAPQ{_rPR=Vo4nj7WBa_G3>#+NrZ^)^ek@Ga@Uz7m zpU5{f>ReC$Th}K@<|}9LeeDbd+xG58+S1&q3K^9!uec#*R*Y5_qO0N!@33xSPn~uU z!$Rrj5raHWD+Tr46Rgl0I5+6tLQ=O}==hj>6JgPMJGjp1bA#N;CZx7MH+XJtNVY$k zG9W14abW>y@Azp9))i`V3ZZBNgR@vVA-Q7P^pEk5GT-K$FKAo5Ao2w18vMUvEsCVC z4Z!y`q~QNdQ^T@_fr8z-QKpB5lUPp+QgqooOG{F<16{b6DKt>^wU`*RICurDK4TT8 zlu%yz;j4`;AC5T%WcIM$y;@LVbI(Uk*ijn>L-M`$1JCRSg}E~K?IFj6T{Gn{QW-IM z(j2Vx@Y_00AGG4}x~|tJX`yuU2=YVDL6wyrOw(Dm$ubP!N(mZwytRGmgSNS0vZJBe z+~wDohxc9ZF-J} zYU&aM`?V(d!7MW$>8Tl(ye_1rwRfXY43Ql(r~FoBZQYN4>c;7pr>%!nf7$$}e z@&K4%!>}Lre==q}Mlg0YmK|;ejwenLb_PZ_JP$q$Gsa8A{S_M!i`9U+MYK!UPdH3a zL{Nesj30(4%39?gbH|O9ukyL&9n!vLYq}OBla9&X9~%Pr#2= zPaus|Pm6S(VeyN;c!GU4HXt`)I*)E$^zP)S>VoAoxdLevR1b zhuyT$d{WqZFP<>**^TC+R=tzP8sRQeCtP^MqYHSEaOZ*N&V$6=M^48TX2iW4qmvy< zUUP$_n$l&;@XPJhi{Fg4`b2h7=2as=`{GsTescS0sU@1>?e;AiE~|Izs8+iau!!Aw zT)jVChT%H$tUpWw$#~@he!TL5g8lA{)J18{lUQ)IcWNp`FJ(tBCzkmhpMCZvXEO^k zr5B}1DFAwq4y}6sgL_MXtPJrZs& z@Z4UI(u?O+V>asom@Y@#R`9Ed(kFZ+dLZPMwUIDQgVU@qg^7|I0hSy7Yku036Zhl) zHp+t)y=6m2&of1Cs=X5R;Mk2;rik6b6Y^+p5&H1A(r@Qn77kp+4P-$ z+~ZjZSv42wx1X^u&MA@>p~^277lk$_Z+)CHi)@_js++>Y?pHV&ccg43(eoDGgV!Cj z){O5yeDOqPSDArlHiN?K^uaN&czJHk0@uJIa`oM_ef==)lvAT{)7qr^Z0A;#%nOe4cjaN1EO?$pBfEZ8HD3Lx}3Wm?RavV9ce$Cf@d~`lx})I@~m`v4~9f= zn_$;Fsl?l_EMv&1?i;A`UAD}(#luC#ECi9+KgW7|)GJcDw%r@Is3>zR`-X4n2ez^v z#R6U2bc4%CnI*w9OG05@8$WCEc8Sp;=~g_Y&fYok;`^>Nc9_IcSbkn_3}4!y+*gFS z-u${T3+EY8jha-LYj;^A*;w*ZZ!Iu#!nl3$xTF3xGIwCiJuS|otK;wbcFwWgeLJ64 z%`n4|({TOeyDq=C8OaJ4!{q*1v6|=(Z8j0dn`_8=U(p$*Uu~{R{Q1kmBTA=TOwQGFY|BTf{d;T-9oepKc*7us@ZU}ySNVdLIc84%PL5GU7tAn@wX4v&d$6fwe z?R1n2bNVvZSqm$XevdrT&mmqg$}?wG{q>bH)M%tn-o~P&TeKHp8jUy?7wQ)yqUL=MQ~li@8U4tG~tElW$QAgxqA+eLpV7^C)n{I!5UU9?eHVE`_i2 zQV~pv^#81OB3^85DI%!py!|{R{DRq+DD2`pI@L3T+TLapA)1BcI?n0K{kJ)d4w3Cz zu#G1bELuPEluVP($aHixax3IFH;@9hLz-RB^`GI^ywT|RdHg{@sT zshLQrF=lLUtlwZrQVIS)tDSJKwe_gmw~i_UUut?#aggI8U8_*4rlGN=K^L% zUosfh=x*VZd`OhI7FG5Ej>^X+0?o&@+rYW-h=%a8Sg^~{zC8IfM@1`!n`c9mQb-+^;Iqpk1#U$Kh0%S%tFwZH{4=OgMEEUKMulf6qkgH z)pLv~Mjz+LZv3X%gemjndD6%)`=9;~yB`K){^K(Z4vhcTzz)XJ$BM$V!$^aR;o0FT zs2)=PH_;Jb`xk=XKg!Q1k8A=&ciYHg#mlWP}N<+meEBcdh z@`-o#8Qr22GbI?0AmL5}&z%N|Tf8j+K`bg~liIzU|006MEr39MzFk&&f9O%F&L@7T&@G#k)772F}cf zdk@Py3FqVV<{YQxd$q*B|BcRq4iZl>8@!*-yM~uv;-xo;#*W-6kH>yN;Au7Cf^o6y~c*k4_6z zhvw_tIhU|qmcLcLb+6s=39H$|5n9X1MGsV)X9$SCx&%E9ZNCNl=H{YC=9FkxvKQ+O z4in$zFO5^D@RXkomqyC03Z7XN3Ugkw!%~-Y7`Hw-B_8GYvzV%~#1TD_)&1%M{gI0L zd{i~kL?PBli<4)+PiR(YvLN-+#Y+1&u4GCZ{AoMmyoE!+G3I(!Y^2Nx@XQEEVQj-^ zI<2UgcJBCHV=EqZzqV%YZ^%}G_&`O4d20+_t6zQf4Xe%uui>S+U#$Cq8 zF6zr7M8zx)t)C+h<)*rqYEQ4+k-OiikKvGB_e?Cz6=(QyX_3vU#0O2J%*VhpAA`jF zV6#80A;j~eN;;u@-sRKfj~Q9t+f_xsv%GO-zWpkyxCbGKaa@<{)fg99sK3k`(-hG? zFS!|5zC3yKeeF}aPwQ*zC%mPQGK+v`7J(GcBusRNlrQQ{okMmB8v*6De3M%-N17bI zNa*Ou*siyr8pA{cp)m(-Puo8bFO8_Ees^b`HDYu}*{0X=LBG2)7JbpBXdE#AN z?XILX;nF^m>cfmSyZ_O^r@=SyX;cl2q~9#T-_{aJzpZ3`#Ql&FU9hv;CqJRoZL{Cz zOg3Dpm`dQpHJq~_PmF4x2;!cJSOSuDatHWzatEY!a&N4dw%$;jb@5kveT||=;Wtag zlZ)d!c($ia#uLhLP{&Dwj+-SA_`$`YGHuL?OUZbuWvJ`^`Q-G;GntM9^qti)3E9}T zY6arzqe!?bz;jnX;zoCd8p^m?(6Jl8{2qequLJ{Yu;T}G&XKK%MmM|I=T7rgo|R5L zRc!y|{=LXc#Ynhw!E@(A;?`>CuTILLO3-=c7*XYOdw^BK?z$sgY!9ANE8WRz7nJdJ z2tlZR4?gc;E%_x3sicyX6VLV+Vol84`+V3F_)$hRrYuu(=GI97)O)<5JITe;3 zPdKx3`E##K2T{g{<9G0E!;sj6f#AoiKuBp21A%0cH}l%VyQ?0MygH^EVUR=nta03* zE9ah}WM4bVueYEu{5N1KAp*iPJK1$`p4y_ZYYmH5P%+A$d%Km^L%bZ zmt)hSos}SqyiT~yQq{(*JiBgb(PS}!eP;p*w*z=?2S{!YG)D`fwEsmQ*9_+zl2UVf zYI<+Nj7)1@OR%=S4!6GU0@F+7(C)UzZ7b8jS|oGxIq=-)pm1kVTUcA)w~#An8#zQ0 zrM3L>eRsW^?3h!%f;Mlq;}$CWUliipESNzHKi*W%9%jIEai4|y7T1#buH+}9oSli2 z0*12U7Y`De{(~78^nT%aD9A-Z7#d~_+DENQKF=KzF4En}X{F71^Oy+(E5wRY+5|-i z2OI&l4uC*=RK;oo!&m{&=dZ<#bgc99#?l(0iIJ;fx3|df#T53Doqu2qzMqXD#l$?F^dzX(U;@zkS%CUerTVC&73&gV^Q_gC zS&}B1&x}u)#QV*qB(EBo&zegiVKxNMYzT!JQ}ac>;y3=BYnCLR`ind2F9=2Ir!qU^ z@O#pQ&n?!WVitpF7xGn@n4b47#Jf~{k#8hfPnndDVbpwaO4cEo>>zLb4T*vuBZ3_ER=sWS(lWKS#Oua z<7|0j`TID6>E)>rRDK>YerU|RjT424pxOsn#Cm$Yw6Z>?p|b(-tDP}jYD5NDZ?=Sh3svwxVqlxSMw zI>UCWsy-txX6!HfpYb;y_`xaGxCi%v!@GV4yI9!(kZl3V4xsD-$^oDp0m=!WoB_%O zpj-jU4WKRplsiCq0F);{c>$C+K=}ZaFF^SL)FpuO2dDsm3IwPifC5(H4+f|!02KmI zp#T*IP~iX-0Z@?u6$MaN0V*1xVgM=@pyB{39-tBcDiNTr0n~MXN&={4fJyJ~s{08}PG-3F*EfXW7_I{=jfP`Ln=2T=I{RRBJdQI0aQIeH2_p2Ks5nWGeA8C zs1|@~1*kTFY6qw%0M!9dodEUpZy`;;Usit(A5z+mtkOM`ME!B=$7fgwsH?^>ypnG^L|A^)@Y$NhG;Xz)k`e#`WKTlna zIhJa9&B83NW^IGh?zOR3{*&^_subRq&CsP1#+z8SVF^7HKFLYse&P!%vsG$N&36NS zwh$)F>=4mP*|XD)HG=K}69t{P^PyriW&Z2B+k%nb=lrAixe4jy!%Zg^DOg@h=D1{D zJVJW-wWq~lIwg5(FFoO$z5c!az5c!az5c!az5Y8dIP6F4 z|3U4)A9(;~7;tPcJSW_P7yu^>GmKw(0H<(0aSrzUtuT`@4)*;IYW?Y8hhZ6G#bW** z0{|O7j0fZWd3zQN^b5P&EDt(gYv}uL6i?hDklrxILMi>8;TKTHxIwh-g;41wKQre!Jfi15imtUKhG3rICV{X@A-_<&Q zVQ0!>#s7+W>#f?oBV9e`d6^%(j5oN*cTSv`CzP&~V&>lG^hrN?j7d(&gI9F=>r0mt zHGSv&lgJ!g%!$y&C85k`>AsBlM{yi2{9isPJN016prdVp3{!LlIGtY=hxuEEkGe-u zOlj~`Ik}R(tGth7Pq+a5o^S!Q^TO}!U26Y?@o|f*zfWz2M~yzKy>RgE^9arwkx&L+ zEtH$1;7?NyVgJGH6wPL3xpe&lkB;UB{tH2c6&~$dpA2l7;c2ha%Xf;YhzyZ%CxGWp zfL1Gw-?@LqRxg6h+pDE3_3SZ+j8f^(UF!396h2*(xv339#Vrgv20-{{4HDnjBViF& zh^p@1%9}VMV>6dMbuK|*5>aL~H<HeE27Yi~bh8qUVaj=sXf4u~f=_k1!7lX@&!iVYNf6&!69;K8j2sEKEqHEQDBPa@ zH;ngq+;~~togKe%&Q*~L4OXQ$K3L{IcRS?cp>~w@h4=*_#{k$HV=B)aDZTVH!!THX zR02a$fp)2>@p=Nixgix8LKN_af1Wm1xhclYv!&f$g-hQu%UB-g zx95MwlY_VcWeo>GX!}UkjVJ4Fv`PAHy?*1WiMR7eU)Yt%7Snsf1NTO{dNAS*Qf6N8 z%)C&TuW@$8Q#)9(DUL`|d`sV5hcRXqdbCm^8SQwivJ4jZ$q zqxMvOFG-f|*NoXuLNE1^?=g>cBIR-WsxhR@l;D{uA=T=@A4+|+J9LYrw#@w1#rTt? zxdLYTVjKiKZ`YM{?zN!WFBE_n|9|Pw-BtG|R;(7B)-zq(%G{dgbVALQ4q-l_?;lS4 z7S4=x?@SmxvoI9qy)~wf9XM9SJtIPT@JowFk_RRU`dIw8Lfsq4>!}2cwtdzMg6%;Or)7tfSpz(?2Bh2;G;4Ac%%Tuu9vq!MT~w(Yn#7ZDeZewpYrjNy>uYqM-I23z z5zDk~ru0aePl0DX1%(;iIviEZ1H^u|*B$1aV4WpZpf01_aq1Yze>NASBCk3hlI?H( z?Xef~d>$R}%#aQbyiOuO#!F$|0%D=jqq#b|OiEA(Z zb|zBh^Wd2w1#aDJ8ZAtW&Fwv$8KgS-VW!gOBJA@S0Y9EG-KpH7=P2|4#URGESbvbu z#Flhtlj~W06 z_5T@&*Z-*h&rgW=N8NvAe3qZ*{{4#oKREaAz(4S(58(f`3yFPj54?SF50ZT_Ro~o92`sw|(Jyf*7s{giQ0;?)q%1vQAyR@@Wo8#0_+D4p zo_WY{Cf=c>i{lBG)u?qDQtq4Jxo<+^_WzLQu$XS`MqwQ$b6!O8fy=u~ZtO$BpRe2u zT$WsUjm;ji8qsf=8nIYY(ias6AoM8l>8c@?=NE#iFqIi%cS;JL$~ z)lmngfR0;hoyU;JojMz)}L<}eM4CYUkGw8e45wtyf-H~@2+J0 zib23$$Ht+{gZ`VYqZ|0GWHv;MnMmud27n)b0-#`<<{D|-HViq5m@s;q=Lf6q{B{ps zL#)0)5^ddZ@s$|LlyE`lIl?z?Y93FEzn<>dHI5}dZ7ifnlcLezz?xUl=E`c#1iRaIIBd0b~b~&|jbxiVGQluE_`iwEjCxdkC}r(4aJ#a};hl@8ZOeR_>7ayJsm_xUmS@AG3w-)A;U zhZ;*+eh_=OGv{+4a?j4bG2muTgPuC>nKI=@3kVNdaUzvU4c%I3dEkqh%>l0Cu{W4 z+*T(b&F5-1xvjBs29=F~fM_FR28VfjP+quMpu#>M{^^^mS!k2Skl1SrbzY4-AuS~h z`_GUtUjWa10SdG3vK~fsAoF3_Vo&RJAXSnk?fWKtTe*#L??e@7e~WG+(CHO4utD0-V&Iv@Amy~|CJNMRWY1+fY-?>z zipeJEu3jciJvSNJy{73FI*T$F9AZt<^yt&Hsp+m80M_CDHN{o2_TJ-cs$C9V;U z{JReQ?^=fT+b2CAz|98nhTb+1XeMm&6PoIhUT)lB_ti+hcagY6$vcgIVRO6W- z#B&~#-!mFja%gIpMx@+oWJ;1-*?ZXX*i2UIxLA|#n~YBaf7$;m-~Sx^vuR-m1$v?| zf%X4><@q1v{QuhLKd1%pt1iGnO@KdbekA{n>}Q`dylcF;pDA4`5vISE6^5&&^S+Ff zT!%E!GUIC0+J9%;|63dBzqU5gf7HxDGS}3DpKIzN%{A<}7^Z0j!sW&Bssr~ zT3N?km(W!RuB$vb7L0OXA%=izBlTHpR=Pf2!U$}*U}nq8P5;UuJAAW8fXJBqjBLiM z4Fpo|V({F>khq!rvn-mmuIZm;{+8n#5j4&=nkvscYhB7Swn@QMQH!!L8Ul2NFdX{_ z_v9NNh6lI$mD{)O!FbFs)zNWpN*>}O^iiI$*Duq1P=}QJ7I^MkkhoKE2uAcS%L!@F zFu3;m9q$T_rHzqsdAaN)nN8#8(Sq`<4iRCfYl|UlHVodyps-8cy^RrViXVy{aoyr* zit=y=V#R|$G+80#jsVXc0f{>?lq<%tWBeZJXYL_Kj~AXj`jZmTqDz6Rgx>4kBQhu# z7eb&H7j)h~xW_l@yst@F)lrsbcCblaar+Q?Zz(7~GT>EVCD;2o0&(kgBx@>9@Z+8* zq%%#u)$Xu{sT>~NwF(+7{uK30LcP-PgY6Kl5y#Ve!QCib*aFbcG##Nn>h(+hPt&Ss6gW z%mtpA3(`=I=2#?DF%J;Wh94X>zloLK7x%HyZn@6Ds%Dhzk$mKe!qg!$jFv~(q;qf# zB+LTfnFXLQ&k^Bv_@A&Nj10MBFHcMN%C5I?gMZgqP@k`({UZBQRQ?ZPi1Ye@c+&); z&$@z1ZT6^dQKBNPwYr5i>p(?m=%DiB@NgBR%xA$fpM}DVF1{3%O$>2gxW~6NK!(7l zbIYGiE7eR`TbaGpjP8q+vIQ~gg(J6gR*^EZf@fxh!kqhY-U&DJz4B`p-4-eW@`Tnm z=EZ{v&mY#i2n0uMTA|7d7lN20-8~|5r?T=zyFPAYZk&NruwYh#jG`Qq;8!|lfgaJC zCZx<%;F+l)eV<=4Mo?$$PP6T?kg$kcCJ?Ba+oDzca6FUzQnEMi5~?^40f@HA^O2@X zOIl9;tgF+;pAxAn;-1Oh)t_`Psq+fx<#oML*Yp+%^C9rehoCT*NF*pEjl5W2AlK8m zGk|YKO(|60S9L+@0eO4Lr({J`W0)Ysar?P#Ax+At&T~_Gqmg!ag3p~*$%=s+Qg@j0 z8edEMVw9XcgXH`_GO)~;kd9b7&4f)|@^Z)@mV?DOAjKY!T}(~N^5y=vYOBHx{g4J! zLzn<)b8PA-GY^gbaU7es@`6`s2|6xpD+a|qQPGs2r8^SsH=*t0yTAX-{y+EC!1wc^(6cs>G1Jogaq5&vcfT9Da!vIAOPz(UY2vAG_ z#SBm^0L2PWM*xZqppF6*J3t)+C=P()1Sl?m;s&VW0L24Pya2@qP$vM2AD{#PN)Vug z07@93L;wl_P@(`O22kPvB>_;903`)bCjm+tpkx3_7NFz+N**ZP$~eW3Q%eQr4CSM0qPt;X#kYw|Lpr{18)qWru(3b-x$mJK@l@lt z2Xb1GkJK5CooBMSUWyrqGVcNT?%Dt3`#{jOx;!U5pKD;ALjTRZvLm;z|GwrudHA;7 z%F!b!Pgam}XMpFBP~DvPG9U=ox*9}&oT z4~PqMSC7i|mm1KEJz5g%ydE1P_Szt(II}d9ol61doFvly1%L2s3x6os>Y9IcXS#E^hozLsn zxBJN5Ys|4Vj#IO4o(?7VPfS3UE^K5L)Rv!?|eFPN zW4}SNmZSyGO$&va`P?~v;|J6YBv1Yi` z+ANDyMR*dwfrLb97L{_P{?_M+i1$M$tcWHPvtG3z^?PW8XNGiW7`og@RI#KGb3G(f zMD%i8O_0=v;SlpcB|}?!nl_u_eZ}G-q-|*ktZiG}`^z_g7IwW4Km zj%7G3$E;WB>KlCHVHc`1oz5GS!Jgl^nyLP8tUG;cSK3xNF;!OOUG-}o*}>VBme*6! zulf)}r-iPoena|R|DP%hgDz(n)q4#w&P7DQtx+{}(LFjR=t>@&?y=&!h`0f*>Srw! z?VMa{fl@NwNSMXJGmArEPMcywFw^TZ4V)X^=Q*2Obzz~s`%96Y<SDqt{UdRb4m{ zh;iYI`j&N z$|)*@pTx}|XE31iNOCJNNxOLDYBnM5n*bE%KU@UrnTJ9#6w3D#=e4!7S)@B!GbKzE z_dQ@{Dp7-XGVo>7b7PU7dB_jGpZOt`9uGR*FLdwu6=8$P?4-~5seYR41*qtR?htBFD6;SsB23>Jw${& zdBg1<{6aiMy^roOJk1p?d_R!YmVdMz$vb)!{5yIS3ibzV!VuR>&X->M_L-AoT&8S% zh`8Ypk}q1Rc}=(E0T!y50U?Mn18g#T2G>>k7sjq5>C>m+`}8TKK2zI~Vb09d zhOMdGUgF5TTNw;9_&^uj(Y&@Ah|(|+7YAzx{;Gjbn5*veW!djlAZL1@)>{!PQtNj! zVe4DX!d_*x=k%$jdDFg5oobc}QYPwMIJR5y#G@lB#tzdA33n=Z?o?>`Ylx2; zT-)~6N3xo+j4-%%i+b+9?O|F7#JOf~Nvb%5l3N(^85iUe`q;Q1Uq-j%Rew1BWx2og z?oP{oZJ^kYv3!0iyJtR9TR{!{T%`sD8(sYzRQsb4OdS#gN5;Y1FX!%7E?wZ8HP z2TZ{bO^>@3{S61LyQ&z6`8L9tVGE8(_6kWs+egsSJx*_`ND$1~QSP|O6APtS>=bXv zJdo(r`?SBPsNF1pa!VL=S&N_c5s|uBxm9jk=gTj(eKT2f47wXe-D6pb%Cxk_G2>s( zm-R*>>1S#1{VWaXsGhuvS!(k|ZmYPaV}cEvYj7G8GNVn+B8Eebyq_{GQ2DeF5YKoZ z7?cr;v8s;v?n9FR!@6X;jIWn1#e=YXhFy1`6}vEF2G!^Q`mE z&T}UOULLIxw!4b*SSEe}$mh1;JLv7KW{Xu+PH`DY)t#IOJpQ)yOygKXM!sBB#p~f) z122&DwIFzIK`7i2@Q{gGQGULMqRmP4na=S_*Sl5szvgkmoQl>c2sKgJ8Nv`_9&otf z7hxM0&V&|kvCdsipmD|1BhuB?O1bN7%yleeXCLW&MGl^s9MXIhK3&=EwHoi98^%QN z%6D@ySDogS01uCg==fKWuh&sA3qU;c0DD_4d^-{Eh&ydowU9ZD4+*K512NM~Jn5P8 z0PVDsXAp9~?0>eOd(=#S>?9|{e#HMD)Brfh@mIqNz&xk}po1BPaZn4u3Z4uz#)yR< z)C4$%?TG~=5+)=flqH}gP{xQ9`J((_?Sj3ZeW7z# zeHeE-t`P6&B=&Oj%Ocha+xA!$sTt46g7y>xek<%MB;0l2x$7WtV>Tu&O1lyT6!g(l z7qTUuB~l*Z>+z|xZj(3g);dOyG8S4)1T1$Z-w*EdSB{X2&#UvQcTE{4Etb2CxbhEE zRJ~M}xVbVsdKhPJdG}-I}p5ZWZ>H6wb7N3p{H5xA5e=3lZYopLkzJb|HK-GpH%h z#)7*o@BODq5heb{Us8R_xIO8|^FFZ+i=|_a_vP=YvCZis!<3N>P2UD@C`GDntz|B% zSUImU4CE;2odrl9!8_;VymJs+_qNvaA`W;gcN;wcl<(ddRuEEFLrn1*^Am9LUG6_X{Jc2O24cKlFFR@bO~V zco>0aJ9@!M*F*76mK=o0lkv$67c+q82;Olg=N*R-?|_YhUq#jlBN(XuMnekYtZ^E> z>H#V=mx3P+AMG-2!QA(J+7%_hTrzGV^ciJU20mjt)LLBU|) zNdJzolk*NkjQ6Ap$I!aF3KhZJbQPW@A7xZ~gFrg2z`!jELeO^Mv34GQgn3^kID`9n z>he26vkac@#bxXqaIg13b7-vV`YRsaRH7cn zl6>1+NBXq5oSd@@BAidfnVR{=it?jRs4kFj+PFuJY(7$xqZaWO3n<+n>pr%t!9ob@ z3HoYMb+wb8`1kAL+Aas+eIRMI!c%Uyt4M7TqJQ=F+NaIhBl`N^ItJrpM_>G>y#qlT z54%Q626^;eI1RKg;<>R)h zf=}$uQoYCddS~~Uq;cOVSuLW+hMXQmLwv7VJ}Ku}p*{~5V*8c#<;e3L|8E@KeH7_O zWvmY!U0U>4OX)4&YvRP~8qIj~GSarzok^7LxKe!Fm=;9P*FjTV*zMEx8g=Qa7;&bc zrj#Tv!8rTK`D7j{O~Ha!vp>EhREc9$b~ zyPur5J3?dnjrhQG7A2WNifLbx6wG<$J4&3|1veJHSd2#N-7-Bk>;W$r;j@XaEY5uQ z8((=la^`zKiLEFD55!*LawgauyGH>t&S1RdZr2g-xY)^giy^`reRZO1ajh3TWP6Et zyFH5^#3K;r^wlTi{kD9myvgvfXImm@$Gl{%)ZxaY*MYI_r+hz&+TaNwty19y(lvoM zdQ32@JH4dLTtQsG}$^uMm?|GTc}0KgR(bQK1v!60=QqydAj!5~c-bR7n1 z9jPZYo?K68L`Y9KTS#DXpSe=5XfBu1(d*9X(b%v;2`_+lhc4=-%$V!(>;EUV`v5HV zeOVeX&L>7czFd?xMYR%zRHTR1C7h1d@Od=cy7t#EA?_o2SDc)81wy>F-ne6+jH4Q8 z(dBu5)s5b67QCZIF;m}E^tlvVKdybOUMP&P-#?kVrFmZk7DdO>AP!;mc+cx6oU;ax zm+Y$S0w-xjuW}yAJM-kcGZErFN|ab#))JuXB*y|Trr&PCcNYG-n$a7zMJ|;-Z3ZV9fJ_>E#43E zRJ~ct6BoXk8_3A?-&_{K)_6KooJ4Xe!F+7$Sb>TkVfzQoWJ5=|9kNdxzS%29Dk6zU zF2PFUFEtNCmVsIWGM*Jj^1gR+-uDoD&o5GS-TB~_!=m+gW{DLL&M+_-QD1guUaZc| zSKyk`vGy+h6URJoS=!@$s(L&b`AhYyr?<7dNeC0yM1X0=j?wyB@xK7wUq>$e*tq!L z*;g&cx$PTxfJ#O0ege{0)av!mJT$LdK4`u)?`m2Qv!s^F&WbiFZG@M!5K=baJlnHt=UGomUe z2Cw36t^fLB{^ou9CUljEKVzM^pS2L7?E5hJVcKZ7<$cLd@ihU3 zF?!Byi!S!v96+?XAU^QN>t}>GwvOxP6R-aF==vcdbO!ViwCCi$BkzJ1oyTOpK4c-*<{x_XX%6%U^68#c}GYw{27)@ZN{47q!lgmKl(r8{%&^K z-5u{N=!fI~(c(gV{-OT<{OBy`_}CIyP@e!YEG5h{m}(fVe5li?@WhVPSWt<(#Z!!$ z3_Y{ZPPUJ0(vMQnxi|>5eU{_NH3#8_zl0al2;LbI@ZxGn?6mkc8qIR}SS!Pacdpg+ zVRP%6@7069yeoHIAMD$TI+Kg58}fzj^-IFO+e>8zQ{xm;6Gp@-m?DkZ%Gfa>E=5B~ z@V3~(3&X{U-5pW(bAY*QA#AFhf&V%+dvZsozv&RAR8g0oaT5}}5YJ~DA_Q@TE||u? zp3WS+eahYgOS#)+8ZD#T?NZe}4re5IOJnd{N8yRoOty*7q8L)B8lQ_QbdRU-f6o;B z7{(mad%wq`;k(la4zU5p*7L$ zJ+XSvi+N{F#zpamV8q|NzggdbKiso%?Iv})A#Mh zE6}0$-UPH8C;C3kMNXtYrWN3R=!=_%*47XwE)zqi-B=Wl&<21=TL8dqtD{+|sowvz|lJQ+IUCjd3zc^|3~dK}7uj}qab z$P-X}f(2;kSLLg50U%Ql0DA{qoGczbr~-Nont!+oX!wseze5x3$~XUA*6a`H-Z0&N zMROsHScjSdn*V3dc$k59Ewb7R!J*$6 zK!LUKxkhVgkbb;5qh1W*JtSlk*Nii1&(>cgsR=RftWN%6;>6Lb_Ac_up8!;wC)==a9_C z&L6wqfe&FjPqT8QprRH5OGhW^xAHG~AmwvPb}TECv{#w4uZ2$4#QmZ=LVh$nx%_B| z2yI-sSQ;ZhVot<;-r?J6M(+3TMF>WEjSqahhM#FsnSQJvJc9d#n|_pfxdPZ;nq%}X zmD%~R7A%^FevTjuwh!{{6vyJ_8Qn`}45Z6jEtCEHQha(n$zraY7$f>e zB*t-b8G>iHR4#7Og2}nxqiQyfB2N-r>m6X~<*{oZu_YzNe2ey!0*G{kUk~<)Z5{}1 zV_Ik<%#pk^awaLEex%@>pQpYdC^UGuL3lG1{R}1n-f>|bz$YHkz~TF=lsd z0I=u(!RWs5bX$13C%ogx;hkR%?@Szc_EV_-4=+48JXd0PTW#STH4ks8u8V-2H9(tf zBSbCLpP(!b^o+>%qt?&lg&UjNt6c&c=vNwfo<*e*N2s+~-7dMA+)XE99%)4$+JPZk zPcHV%76aav*bp4*P6o7Y?2&M!0as<~ReJmnF1c-feF|v-r#Gx6uzS&CSs)wlJ8am8 zsj@j`#+_+a#nVHHA5bY&~a{kvl#5-3a}V z$#=EyO|=M~BYq_ZWi8Klw-DrNqHguh>i(rD#^B5|*vD>|6+-yTth8?~ zxQ16-Hw&WaymA*hOP+C%r?zx^DxULlH}l~3EZk1KDUKv%N(nZ*S%l4ZTM(5LfHdfZM6 zx2W^wd7zUBUc4#DbA*ndd~zK@84=PHr7_72WS-JYIg=Oz-vD(FQC7R;*3`7gc%thX zAVz@W^g#se9gnks8`PJ+SAuS8oThSjK+$hIPu}Bb#8^xZ+z3+Itl4fmLLam`IcFEH5XK)|!j?16CzvU63{XQuHiNv8uCA&Orsm4jB zn7%~%*^fw5ux^J)|4L8AaXw5!2>SD6j(NEE4go!GM7GFN(+jMVe+BT6e`@zZ;}*w&xUx9}^wt2hWFK zyjJ+<&;3t5gZe;nX9oNe+x`q-109IkhsT0Pg-49{5mXN1z`(%p0qKC0K++(75DsVq zcL{d__YH0;t|l%E?g&m1jyaAdjuH+Tjw`ka_8Dw^Y!vKStN;uXj1BafBP4l}{YV4C zhaBTE91ZQ=4NXiO>U?Yze_Tiz@-7zdT~WT*!eJ2HIu%tb&X@rYr){Tut4 zs-9SJsJ7ke6dnc(H>eS^cpn(aGj?C|HQlBU8)^g;x(XpHc=Yvg0%g9 zx|4&F=5mHuc|!_ykVNT*0rJ5;H01U+3v~R{48%Hge`r2%-x2sgUM`c{6UnxC75@#D zZcJ{k*&MKjy#7?_koK#Gem<6keXI-ed#hbpvB*tOm9F*(mF|EN_o4i~2Z7cI)j!1I2r15t)RGzjuPMI`Y@!=o`3yI0nKSDTWi(i z?>Og8ePz%On#50G@5tC&T_E&>x}evf`G@ObKcomr?`ygH&gFnpHr#x?%-mpRZeB3I z5Wg^=Aioe4K9@rsS_hP)7|job5Pt9=s_J~`q1aCKc;P{4sD)+YUAkpZF7=#f!3S6Q_nQi(@4K_<)9wu zHE90fdZ_o+2WWz7lPEv7P_FD;^!YxkY0NkujLe9uhF2``DjxpATwU!T#T(O%P5NHpGxmId)DTcTgR(wQrQnWm&|yVTKgm$>>` zT~nf4PFM}6y24WK#Zi>yiKf!ejc>z{jTlJ?qg(Z|s$NRb@>t0UcqR>8xM+EQ9T#*_ z%VQ`KqoKjzi`oE9X?9ZQYc`j}l$Ghhxh=s@2V~Hc_8KbV!8Pd0@o%Eg{68CiUTJT< zWDEW)*Qe>1A4A07&hj{o zFn~&%)1gDM=(Pl?G##l8>NOU2eRqH%H2_Fu=U{AZ=wPC6Yv%;fH@35}v2e11*gEMu zIY1x~Bp_67Au>Kqa>d7l6sz-tg*G|xqq^_Ll`N&o3!;M>7g7iMLNVdRZ1oQPvcZ2o zMM&-}lWb+wg|hpZN|naR8{BzikI`6!-=cMf3SZUe4TI#aQEIB@R0JjzoQ=*6Z{qkh zq&pDt1P!evN39KoM`-XB>ZMSR^oXGh@+G0iAKprQ!WYh@%pF64w|5HO*&?#XQKhMRyu8xvM}MrW@Rw8EJN0%7}0t8U7+u$wB7A6W-St` z9{f)n*La($)X?C?G79_%QhuOD_$h4g1`dHf zjjauD?p!vshtN7%*wY$AphJfiVheFFbE9>!a5A)}H8!`fHlcOcxng4kaiFzxb9CDI zu&_0?bFiT`Hgqtuv!%5(G`4~`(b`zJLQH5)Aoh@*itHUAPEKw+H-{KH(HdDBnm}lc z?d+@>xdA}X!86;NI~Y1b;L+da-D$`6ef}%B03eQ?g9*gJ-pVL=SuoRxK=df^LG&41Jj?}w)BMD_B(trze|z3>zk0BA>#)iO48G)H%Um^tmd z>~v5=BoNyc;&ju_!3z39TtEQ;4ZiLO#@IX0Xk%gP0&#G(u(O3K`9L~kzMm?XrUP=# zukV$_Al*3MQ87~&Ioi9qt|ZX26E80LCEK43;T=hNLz6cja| zuWKwj&%OW7z#AVZ2a^?4iYEi?olHjzFhKif{htTj01eg$02=FW&j)}7LlgZ!eGTE+ z<>A@);H`uG|GrQUZy_GuLODD~eR$_y!wWR3Te|Wlpvuo_ULg@%GQ;~~VJ$V?H}jIa zGsbbg6ODJUpw1HTe(T}In*$mlt^cw)^R9}x{>IK+p}Qtxo8?4Q*a5&^#S-XR1HtoW z{h$7h!E^S2=Zpc*AqU<*OL)h1M1}!XCv!)?C29<>OxDJ_*@?}IY(_jwtK0y{v!t~A zc9uA>B$S_N5rqC=mh5X{RQvPN;g#qSls!!>$Ln9w#BfmeG_f1sNobDJ#76cPySZm! zoh7VL_cSrLd-rjmn%J{rG%+dw0LEFOXg3DRfwM$9>Rv;9NV@zMYyU1t`}u!1#5C&O z>aFsbSr4dsTzZ5`PPIRo|KTjbyEMk@S%w**!&Sm|7gpGA2= z(663v2LVXX0K3i-K$VE=2US2H2bzDl3Q9Q65=X2X)t`Lbs2-tpBY67Nv9T@qP8#E( z25Zl*KKI&o@FGn=>!?b5se4Aqn_3UP`|`q;n1-J{Bf?SVGXdyF@P2-B-p>)@-B)`m zk@kJ#$2gOPBrj78Z!X-}uL?QmWro>DOml6~k6lm@M)*vRrMwqSVzfUgo9%b$|38_xL zenf=`ZCWQTeB~T5nSwqkz_nYi?tPKx!sR!*jXv&-E3adufp(lfID%(KE&0dB>!d~H z267j_3Vwvz!ksPKDm#0lV9R1loyImN^4aSn`a1dKeVvR@U&E7$j@=t2gy@>^l7NsY zH&bGezZ_CZ@$wJLS!{58Px5W861{9)^91kwvw}zTHT%i?njNA2;CGszOqUkSdz1@B zej#2_Ab-B@K>WH$fbi7UnSl2a$N5I{^CH&QKeRX|S~c7)E;_HQyU!aB*+(2`@Z$Cn>!bE3=WLG%XSFkp7`=YUj4}_}iQ*;0NM#@QkeW~%y@=%+lC(mT zKi&`i#BM!Eyuy3D7g9WtWC8;>bQ>wy%tGJdHf_h`$+(vY7lUP@1cKAJjvUtvC+E$8 z2=5>esaBRF+y`)%ZUH7-L=fzZ5g!PIe%J$(F#_4Rxo!A+t2XHQjJ zxZTey8Aow%+AEUG^|Eih^(%?NqWk?d;3GIwo}4o!LNQFzlX95mD4hzJFhk+3kl>uU+550N651f# zF#A`*N6cluC!foF5sSS(^o@yNrV{%$Mzh)Mwz_;7_2xuKgOUat>)?7~)um(SGTxK# zS=;yjpVOFYp{1-(`bxI6R?WOh_twsC?cBSo__-@VIj-bNm){y42&1epvNQ@70R7MA zScDE7pz#$XC*#n|-eES@6;?jx-c?@a%*C?X;Yen09i`TG-3BdXd8CnOEr$DF&t!-7 z;|UfoOw<4Bhq*=iKXrh3367zkYNNoGG5(c_gx43et1iEnxSobLZOMa3nEZHySM}NXc+G(g-Ij~-&8@h&)yXQ8=s>f>^wb2)GWVSW4eZW-tdb`nj(Lk7woE2P-SEvKL#CO7-!HLQRO&O=6nOPA+qsvH z4s?&C*xx+nH^lgYoG# z#s>&6h@@#RMA1U%6!K{=;n4b3JVixvm#Gf)hhzk8y5tsSI}>Nby=u(KZ5T-Ne@Hkv z01W=F3O1?sSZY|OOd_1>~p_tKyqckj?>ZtlBV~hy2{Wx}x8N z9=FapNnp;R>H>%2@Lr=zYCcD`oBSZsHO$4O^DX|7@8Z*kELcp6>yp)8#jb^SQWGsZRi5-Uj?ExIe#j+kR{!>Fv5>(5pr_0gul8H|v) zg&5a$ew*Tpn)MYyRB9!PN_R&qMSs{ma;(BZb#--8UMF-_20iX2fTZ{KRaWw>XK5s@ z>kHA{rD*p^Jm1v$IOqtiGv~757lQDKNK+#`-pA;**{njVzxBdjcP9PqX`yp5dFRH@+F7c*XJ9C)&!VnYI<-IohBWaPk+^npp$rl zJLoc+*5~m|FW`QPzoD1^>qIW#kJIY@>|@VP-5`>k-2lGt)5F8o!{nhyEA&?MRL2B3 zXP4!2%nW$*oCE13QpNTQeNA2zE$fU?{`z)`QDeGTzcTZ6MoO=O&|qx-W?Q56X9hKb zaMvX(e&J8d;p4P5j&`acvltNyG>?oQeQ2!ad!!Ubj5neD6fEwhiR@CPU@PvEz9d9^ zr8AR7I?y0iNUEmCiSPkM?#nvy+~-tViI>(h2*VqLFT ztlNk(9+8y$SxAiDRPeo-MtAH)iY`V&B$=q9@;z zQ5a>ZLMLZ%Iq2q!y;K$>I8{h!l#@rBXX&iv@@Z3LmF3&-@jPo63PmFZWwW*88nXDk zs%}2Gcg_af>gJ%MD)-gid#tOSrq4UIK}ha>aYDwhAPSz%tfq5R!L;9kzqfw zXSPvpoH{39uU@!HdhROZ)ekj{OG$!cT@S6JHmrMGKif%_y)%1fNa|Z&QJ(?X?&Oev zApA&8%}5qRT%CtXgi3pUh3l#?N=I!zJM~+J0PS!jEF9}Vlhy8^H?kbJm;>KA2dCEy zgsNXZyA}1W9XrZU&W0Pv%G*3j5D!bHs)AZAjQf+r%xmg@fP*Pn7VX$xW zypo{sn6}t*7mGG4u!TU$k=WXrBiVMr-LbblYi&4WIX&9`;f#ReRk4CE*f(TyN^yl_ zzuBC3eJgt53Sb5BKz)X){p|DcAmC%k;!?n)YNJ<%0}tx$M*`P8+eDK*Oz`UJ-f9%7 zky<_~o5R4M!%s9$An@9t$#`*5GFvCJb29*s>r4lUMcdC06p!8|PGu<1o_U-oDQkD? zL6G(oSY1Kfv(Cm+72lny&(Z&#l_!`c4WvAdlC_e4M>ID>Q1>1eXW1`Sj0-Bpg6G0c_!WQ$<}t6!@Laqi}oVD_M{HFiV;V4=87Amv?1xj)!EpK1{| zgx?DA^&hn5)vlr68a9+qSH#NBrz~c^v+~B|(VV!=eEKjX%kSmfg>R8x=lJi5-k`(B z<}8Ut@xpI?l<_jC?W(wmocUHuT-5_tA3+hF(l#7JyTyE;9zAB+FmRz$>JO!AR14lu zr=EgiEp3)o1MD{_y~671n&&J~L(b6ua@MS_)2e(jFgR&g4#F<`@l!ALx!$XLjP!Tg zR@7@%hvZ(*SYnOQ-oqs3BvkooAk#)%9Qq@)nv*@pWYH%Az0`ne4ZuYg?UCB;RSKQ* z^YCj3<6W$Nk+u=37E5TqED%XytY$)5#0q4kQdYjh&mUFyY$3Ygx$->7<1s4Z>xv$^ zmX~RddTZ<7#}q1NkLL*|S(p#Ga?1^A40cs}X)8=pnP0L-l>pF7BAneE zW;6}-ejs$$$3XjAoKGj2(AcHIS18XeboBBYfxQB+ z83f9d(OeY8i+?p2EP$_;RY0&vL=$iYCnJeiu!X7e@g|+N0tmmvtV6u&u~gaO-K}P%KEM z7H6j1J)HTI?f8T7h0{2A>?9Yiy3MVtEv?jfp+)v|R-zLQ_d;F0cCE+_D z@f-LnsdiKBr3d*DBT37{_-oH?xKWhAH^%sF=-ib*GgoyG*Gr)R;5i@ciGu$jl=1Sw zHzok#hlRtCgJNJ%EDVZ+LGdss0R|<)pa(GMAq+}_LCG*E z1qP+Uphqw$4F;vdpbQw434^j=P&N$8fkC-2=rIh+gF*Q)r~n2%fkA~Zs0aoX!+N&C zpb{AL3U50tzNQJZi@0#~Netrk{ z7TYPGOM>)!F^UaF|G$FypZfoI=r`dXqPR1&%kf-9q62*UbeV8QFx&U)X9mpP*LqPe zs9slQdjwLQALn=?Pw&8mM2kb+)aU_#QJNEK z+wczY{Ko)rF5d23bl0@Q+LFwRE;;Y5HR4R_tXpW|0t2Y^Xco9vkZ4_A<%y?@+-`i9 z_$?4M;nl>c-tX(luSVL})a!5Nwhkhn+yF3t7TAq%Dbg&an~(dYJO8=l?6tD-mDr${ zXw>op)qFKxr?Y-tKfUVSEU_KR%_mUBf1?|_q}*CyJ_djR9NyFlmJE&x5?9TeYA@8} z0k{XhsE`vG#3-tb=O0RJ^)0@TH>16ZuHdW2(NNL)n6Xeo`Kiq};uY-7piBWW^j`6M zT}+#e7|E+2i-X!3Z%FeM&@PK+S#{;7-EX?VC!N=I_5S%Are+hUjH}$)gnBBK6J=Bs z2B5ysi6_O*PA~Kn583;Yx@Qnkv$ikY;@GYj~< zOQ+mg5vYpAr_P`kzD<}S`K3dkh4R7U&g;qw8LCr@o$Q4nD5-5*Rpm3X1KwW@dIn3r zMkSmjUjfL!ui(SqEaS-!q0}>)a_lA;E$})$=^3G6c^#jo&BLJ3nkD{9OJ0yg~8x>Ux`$QR#A!D}(P`Tik~J7|6HvJOy1s z6;9puc0k_TGB?RHkn;D9fDx7-Ku_>T(N^C)I<8$`c$WX$3yiFZ`WCKp6>Wr1V=}s2 zn|Lg*o{hJ8@=o(*Xi?z!olpHNKgic2>&QpiI#qdRd?~DrPBmR>eu_LQozaqT{s-+0 z=2PwzZYj|HOGK_#nRv8d)415#*FlIGT&W*gI1uK$p;QQRAv zANtMeT|J0Fq@C=WgH_Eh+`8~OYW9hqp`fqh7RoGWY7?Vh^bLKuBg58)O&6_NY&;mr z&6M(=z8brS4J2^>QTkYlA)${E_;V!t&8W*phM@QLn8YUw!sXPMX~|!3j24yb3+3*5 zCrwq-ex`#bitwV$s)GqcZ( zJ&Uiq%}rV<{_S#_GW`l+cbx5{dHS`VuTk*`9JdG`ocrcZ%|_K1FR$7YY=R7OO=So? z`*Epx#O|XU$My}GFVC~?RNu#_@VtfJmeepsrAJS%UM{RijJo^>1CtEvv1r{qz4Mty~XnzM$Y{4c7?@wUh{Jz2iLP3PP1h9 z?j~5-Z#8oL0Ea2tF9de_E(b4LBIV=#EE_F)_Zlk$P&YL z#f=h>Mw&Luetw-XioQ3N%qUEY@%NdG-emn8kv_3EfeoSrGBOyZ|>Vfxe!`Og)i{v42_3>Al5b>D<^nU zO)Oh8L0?aMBp#bj3d}>g%(#Kl zwfYAK1^~b42jE%aj}z?D#p|ZVFPhXuLvvb2HPEv9(AqmV*FLkEJ{197T6im6!Qkxv z;|8PO!@)ATmIiHh$~v*ApEzT0N|}PVnpCwilP-^HnMCyoIjJiu_mj@WtCM_Iw|qB1 z@;rQ~l)jZ@*74G(0W+rNUdFc?mdw3j(x`3A_v*SV*HN~{=**rS=UehT_7!VJFqyK|2N3hRHKb&HB-`i~jXdwy zTfVPN-rvRDo|@2^@t@mJ_NJ_Nb_!@YPsTWzMaL*4`~788*9#%+-of-91N}D=rOeg= zi`~E;3e8R{Q?O`}M4|}tbOM^2F2yf19$Q_-&caEnd49jV6qh&lxf;Jxq%WNB%^O*{ zW&$#M;c1w6o`J^WUTp4d@=zSM$DJrCs7vEgUWBIjMx8fEqx`xWC{mSJQY6IvKX!GQ zzKc_EGryR3UqtP6!j|aAa%^4)Uk#P$^ucOduAyZy?_q}fpmWXok{<6AaR6}B?hpGB z27sg1T7~wH0do3dTP8q9Ws^{qqqcyrIP~I^E9Y7Qe^`#E7Cd9%PxqA>%03*wz6G2jxnv z*1ne)n4Zp&f3*JMN<`$it+W$2%1_hvhkCUV&!_nh%5@TA(Z0o)yqko!B+3}Kg6aP2 zmdqKUtNc&&r_UQch`Vr5?txo$w4;oLPOILMY9#+4fI5O`gZMSlBeJjvs|)H;%m?Lu zY78$Ve)6GZ+zLF`u~_+3?s3E$=YXc5*-VEIA<;u<2j$Fd+q=avDtzrg22hQAi9mVmJHoe=t9o>+xZ0uxubr=-{a7`Q0v> zEx7eMXv+Zs4;OR@Cy8vYKMkhGY5-o~Aru$4^ZoF<-VTY6>vU0PTqvfbZg=H@vwcQ| z)=j}o8huJED?gldNDs=*zgSy-UePZi`lwSzP;qC{MsCpz8GS1jzTtPbFe};epd5y9 z#5T8T=_`p)d>;n+d|@?b{`96NSs>zKrGTQ0Q!2mP*`2-Ge(ln|7vgKzS}Q4C5=7Fg zLRx#f@~a*w176(FKPdO`^M|QM(&j#P(I4uSx{?Mwl|fv$O#Dd3q{TkDb_V@+c9ZS= z%o(YN6~gRlS3(l7{G5iv+xuJWpeT>muz3;cP}a9&U#VAReg2jwhKV#Jwc&pSV;;HW22CIZCIc(D?^cFUi2EPb0PTVQ`s?uy}n zrjBe&woUkXuI+9L6Lvk`*za1B+dto%F*j!wi5--y{uE2n^UO6gLP0&AU+hs zZD!^oUVm9Xdzb03lwj!;8EM#bFLn9ScYbNXgK`(nchW;*{0gQMUK&Zg=yCfLJba~O zl#V_GCptkRlYrhaa~!SN4(P?DU> z=HOiEEemJbr}E+wlqe5So!)5BUocO36Z|aCh~=PM)>x{q zWA2m9Ay?T%E&48la3RB??~CV>IOfl5mM^B6ACx0SRUdJG8>co|-)nkJz2j0U)ONG_pPhSqflA>m(EhS6l7}8c@``ykP_Z&3x zsDvtN)gH~Ty%lTDPktw$f*s$jQZBS9XJ~xj9RpB!c-6KPB|npV-d3MLg8G3B&>LuOyzmblfKo4Hwl6T0AK;I5HCNk09X*bGyeI&JYWDV&;QHuZ*OSq{9l!W zcm4mij;wl{Pzv~d&@FftSd8-dS?fd9!85;PL#IcsEeIFHxJh@S@{ z$a6T)RKVygFCPy~ImlU4Qy~FE!NYmRye5JsJVyK?yod6HAwpmt0fC)7Lu+fhnV_dBg6^1$#HiZFT@4n;I_Nnai;+- zI1Oz$4R0DcKsfhC73WP0Yimv;2&V(Y-rCR@V!~AO@Gth^f&!Yf79ReFQxwl<2~&v0KgUj&U1*J diff --git a/qa/rpc-tests/cache/grpc_comparison_stage1/zcashd1_state.tar.gz b/qa/rpc-tests/cache/grpc_comparison_stage1/zcashd1_state.tar.gz deleted file mode 100644 index 1eb5888132dae487c350371a6654c0fa2cfc8ca6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 179777 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

s@+vz-uk#w2NOLiHH62I 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 s3Tp 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%0DNR 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 I9}KYn12)Ij-v9sr diff --git a/qa/rpc-tests/grpc_comparison.py b/qa/rpc-tests/grpc_comparison.py index c341bacf7..049c6315f 100755 --- a/qa/rpc-tests/grpc_comparison.py +++ b/qa/rpc-tests/grpc_comparison.py @@ -11,31 +11,22 @@ so they run inside the existing BitcoinTestFramework CI pipeline. Chain setup (zcashd mines; all blocks are submitted to Zebrad via submitblock): - Blocks 1–200 — Transparent coinbase → zcashd0 wallet t-address (taddr). - Provides 100 mature UTXOs at height 200 for shielded spends. - A second standalone wallet (zcashd1) follows the same chain and - owns the Orchard account used for Orchard spends, matching the - separation used by the working Orchard wallet tests. - Block 201 — z_shieldcoinbase: taddr → sapling_ua0 (t→Sapling). - Coinbase UTXOs must go through z_shieldcoinbase, not z_sendmany. - Populates the Sapling tree; notes are spendable after 1 block. - Block 202 — z_shieldcoinbase: taddr → sapling_ua_aux (extra t→Sapling funding). - Seeds a second Sapling note pool for the later Sapling spends, - so the Sapling→Orchard spend and the later Sapling spends do not - depend on zcashd note selection choosing distinct notes. - Block 203 — sapling_ua0 → orchard_addr0 (Sapling→Orchard, cross-pool). - Also funds the Orchard pool so subsequent Orchard spends are possible. - zcashd0 authors the Sapling side; zcashd1 later spends from the - received Orchard note using its account UA. - Block 204 — sapling_ua_aux → sapling_addr1 (Sapling→Sapling). - Block 205 — z_sendmany: taddr → orchard_aux_addr (t→Orchard). - This seeds a second Orchard source account used for the later - Orchard spends, so Orchard→Orchard does not have to share the - same Orchard note pool with Orchard→Sapling and Orchard→t. - Block 206 — orchard_ua1 → orchard_addr1 (Orchard→Orchard). - Block 207 — orchard_ua_aux → sapling_addr1 (Orchard→Sapling, cross-pool). - Block 208 — sapling_ua_aux → taddr (Sapling→t). - Block 209 — orchard_ua_aux → taddr (Orchard→t). + The fixture begins with 200 transparent coinbase blocks to the zcashd0 + wallet t-address (taddr), yielding 100 mature UTXOs by height 200. A second + standalone wallet (zcashd1) follows the same chain and owns the Orchard + account used for Orchard spends, matching the separation used by the working + Orchard wallet tests. + + The shielded fixture range then appends: + - t→Sapling funding via z_shieldcoinbase to sapling_ua0 + - extra t→Sapling funding via z_shieldcoinbase to sapling_ua_aux + - Sapling→Orchard cross-pool funding into orchard_addr0 + - Sapling→Sapling + - t→Orchard funding into orchard_ua_aux + - Orchard→Orchard + - Orchard→Sapling + - Sapling→t + - Orchard→t Chain caching: After the first run the zcashd block data and chain metadata (addresses, txids, @@ -88,8 +79,16 @@ _GRPC_CACHE_NAME = 'grpc_comparison' _GRPC_STAGE1_CACHE_NAME = 'grpc_comparison_stage1' _GRPC_ACTIVATION_HEIGHT = 2 -_GRPC_CACHE_VERSION = 7 +_GRPC_CACHE_VERSION = 8 # Bump when cached metadata/state layout changes incompatibly. _GRPC_STAGE1_HEIGHT = 202 +_GRPC_T_TO_SAPLING_HEIGHT = 201 +_GRPC_SAPLING_TO_ORCHARD_HEIGHT = 203 +_GRPC_SAPLING_TO_SAPLING_HEIGHT = 204 +_GRPC_T_TO_ORCHARD_HEIGHT = 205 +_GRPC_ORCHARD_TO_ORCHARD_HEIGHT = 206 +_GRPC_ORCHARD_TO_SAPLING_HEIGHT = 207 +_GRPC_SAPLING_TO_T_HEIGHT = 208 +_GRPC_ORCHARD_TO_T_HEIGHT = 209 _GRPC_ZCASHD_NUPARAMS = { '5ba81b19': 1, # Overwinter '76b809bb': 1, # Sapling @@ -101,6 +100,22 @@ } +def _skip_cached_runtime_files(tarinfo): + """Exclude runtime-only files from cached datadirs.""" + basename = os.path.basename(tarinfo.name) + if basename in ( + 'debug.log', + 'db.log', + 'peers.dat', + 'mempool.dat', + 'fee_estimates.dat', + ): + return None + if basename.endswith('.lock'): + return None + return tarinfo + + def _submit_missing_blocks(src_node, dst_node): """Submit any blocks missing from dst_node using raw blocks from src_node.""" dst_height = dst_node.getblockcount() @@ -234,21 +249,21 @@ def __init__(self): self.orchard_addr1 = None # bare Orchard receiver of account 3 (receives at blocks 205, 203) self._orchard_aux_addr = None # Orchard receiver used for the t→Orchard case and later Orchard spends self.t_to_sapling_txid = None - self.t_to_sapling_height = None # 201 + self.t_to_sapling_height = None self.t_to_orchard_txid = None - self.t_to_orchard_height = None # 205 + self.t_to_orchard_height = None self.sapling_to_sapling_txid = None - self.sapling_to_sapling_height = None # 204 + self.sapling_to_sapling_height = None self.orchard_to_orchard_txid = None - self.orchard_to_orchard_height = None # 206 + self.orchard_to_orchard_height = None self.sapling_to_orchard_txid = None - self.sapling_to_orchard_height = None # 203 + self.sapling_to_orchard_height = None self.orchard_to_sapling_txid = None - self.orchard_to_sapling_height = None # 207 + self.orchard_to_sapling_height = None self.sapling_to_t_txid = None - self.sapling_to_t_height = None # 208 + self.sapling_to_t_height = None self.orchard_to_t_txid = None - self.orchard_to_t_height = None # 209 + self.orchard_to_t_height = None self._chain_loaded_from_cache = False self._stage1_loaded_from_cache = False @@ -325,16 +340,8 @@ def _persist_framework_cache(self): src = os.path.join(self.options.tmpdir, 'node0') - def _skip_runtime_files(tarinfo): - basename = os.path.basename(tarinfo.name) - if basename in ('debug.log', 'db.log', 'peers.dat'): - return None - if basename.endswith('.lock'): - return None - return tarinfo - with tarfile.open(os.path.join(cache_path, 'zebrad_state.tar.gz'), 'w:gz') as tf: - tf.add(src, arcname='node0', filter=_skip_runtime_files) + tf.add(src, arcname='node0', filter=_skip_cached_runtime_files) self._write_cached_metadata(cache_path) @@ -393,18 +400,10 @@ def _persist_stage1_cache(self, build_nodes): shutil.rmtree(cache_path) os.makedirs(cache_path) - def _skip_runtime_files(tarinfo): - basename = os.path.basename(tarinfo.name) - if basename in ('debug.log', 'db.log', 'peers.dat', 'mempool.dat', 'fee_estimates.dat'): - return None - if basename.endswith('.lock'): - return None - return tarinfo - for index in range(2): src = os.path.join(self.options.tmpdir, 'zcashd%d' % index) with tarfile.open(os.path.join(cache_path, 'zcashd%d_state.tar.gz' % index), 'w:gz') as tf: - tf.add(src, arcname='zcashd%d' % index, filter=_skip_runtime_files) + tf.add(src, arcname='zcashd%d' % index, filter=_skip_cached_runtime_files) self._write_cached_metadata(cache_path) build_nodes = self._start_build_nodes() @@ -462,7 +461,8 @@ def _build_stage1_with_wallet_nodes(self): 'AllowRevealedSenders', ), ) - self.t_to_sapling_height = self._mine_and_sync_build_nodes(node0, build_nodes) # 201 + self.t_to_sapling_height = self._mine_and_sync_build_nodes(node0, build_nodes) + assert_equal(self.t_to_sapling_height, _GRPC_T_TO_SAPLING_HEIGHT) print("grpc_comparison: restarting primary builder wallet before auxiliary Sapling funding") node0 = self._restart_build_node(build_nodes, 0) @@ -505,7 +505,8 @@ def _complete_chain_from_stage1(self, build_nodes): 'AllowRevealedAmounts', ), ) - self.sapling_to_orchard_height = self._mine_and_sync_build_nodes(node0, build_nodes) # 203 + self.sapling_to_orchard_height = self._mine_and_sync_build_nodes(node0, build_nodes) + assert_equal(self.sapling_to_orchard_height, _GRPC_SAPLING_TO_ORCHARD_HEIGHT) print("grpc_comparison: building Sapling -> Sapling transaction") self.sapling_to_sapling_txid = wait_and_assert_operationid_status( @@ -517,7 +518,8 @@ def _complete_chain_from_stage1(self, build_nodes): ZIP_317_FEE, ), ) - self.sapling_to_sapling_height = self._mine_and_sync_build_nodes(node0, build_nodes) # 204 + self.sapling_to_sapling_height = self._mine_and_sync_build_nodes(node0, build_nodes) + assert_equal(self.sapling_to_sapling_height, _GRPC_SAPLING_TO_SAPLING_HEIGHT) orchard_fee = conventional_fee(4) orchard_amount = Decimal('12.5') - orchard_fee @@ -532,7 +534,8 @@ def _complete_chain_from_stage1(self, build_nodes): 'NoPrivacy', ), ) - self.t_to_orchard_height = self._mine_and_sync_build_nodes(node0, build_nodes) # 205 + self.t_to_orchard_height = self._mine_and_sync_build_nodes(node0, build_nodes) + assert_equal(self.t_to_orchard_height, _GRPC_T_TO_ORCHARD_HEIGHT) # Restart the Orchard-owning wallet after funding lands so it reloads # its Orchard note state before the first Orchard spend. node1 = self._restart_build_node(build_nodes, 1) @@ -549,7 +552,8 @@ def _complete_chain_from_stage1(self, build_nodes): ), ) _relay_raw_transaction(node1, node0, self.orchard_to_orchard_txid) - self.orchard_to_orchard_height = self._mine_and_sync_build_nodes(node0, build_nodes) # 206 + self.orchard_to_orchard_height = self._mine_and_sync_build_nodes(node0, build_nodes) + assert_equal(self.orchard_to_orchard_height, _GRPC_ORCHARD_TO_ORCHARD_HEIGHT) node1 = self._restart_build_node(build_nodes, 1) assert_equal(node1.getblockcount(), node0.getblockcount()) @@ -566,7 +570,8 @@ def _complete_chain_from_stage1(self, build_nodes): ), ) _relay_raw_transaction(node1, node0, self.orchard_to_sapling_txid) - self.orchard_to_sapling_height = self._mine_and_sync_build_nodes(node0, build_nodes) # 207 + self.orchard_to_sapling_height = self._mine_and_sync_build_nodes(node0, build_nodes) + assert_equal(self.orchard_to_sapling_height, _GRPC_ORCHARD_TO_SAPLING_HEIGHT) node1 = self._restart_build_node(build_nodes, 1) assert_equal(node1.getblockcount(), node0.getblockcount()) @@ -582,7 +587,8 @@ def _complete_chain_from_stage1(self, build_nodes): 'AllowRevealedRecipients', ), ) - self.sapling_to_t_height = self._mine_and_sync_build_nodes(node0, build_nodes) # 208 + self.sapling_to_t_height = self._mine_and_sync_build_nodes(node0, build_nodes) + assert_equal(self.sapling_to_t_height, _GRPC_SAPLING_TO_T_HEIGHT) print("grpc_comparison: building Orchard -> transparent transaction") self.orchard_to_t_txid = wait_and_assert_operationid_status( @@ -596,7 +602,8 @@ def _complete_chain_from_stage1(self, build_nodes): ), ) _relay_raw_transaction(node1, node0, self.orchard_to_t_txid) - self.orchard_to_t_height = self._mine_and_sync_build_nodes(node0, build_nodes) # 209 + self.orchard_to_t_height = self._mine_and_sync_build_nodes(node0, build_nodes) + assert_equal(self.orchard_to_t_height, _GRPC_ORCHARD_TO_T_HEIGHT) def setup_nodes(self): # Match Zebra regtest defaults up to Canopy, and activate Orchard-era @@ -620,7 +627,7 @@ def setup_network(self, split=False): if self._stage1_loaded_from_cache: print("grpc_comparison: resuming from stage-1 wallet cache") build_nodes = self._start_build_nodes() - self._wait_for_build_nodes_height(build_nodes, 202) + self._wait_for_build_nodes_height(build_nodes, _GRPC_STAGE1_HEIGHT) else: print("grpc_comparison: building fresh stage-1 fixture chain with standalone zcashd") build_nodes = self._build_stage1_with_wallet_nodes() @@ -628,10 +635,14 @@ def setup_network(self, split=False): try: print("grpc_comparison: building stage-2 shielded transactions") self._complete_chain_from_stage1(build_nodes) + # TODO: Re-home this fixture once standalone zcashd is retired. + # Today we still rely on standalone zcashd to author the + # shielded transactions, then replay the resulting chain into + # Zebrad for the actual parity checks. + # # Zebra and standalone zcashd disagree on regtest difficulty # throughout this standalone fixture, so replay via checkpoints - # and then wait until Zebra exposes treestates for the replayed - # shielded blocks before starting the downstream indexers. + # before starting the downstream indexers. checkpoint_path = os.path.join(self.options.tmpdir, 'grpc_comparison_checkpoints.txt') _write_checkpoint_file(build_nodes[0], build_nodes[0].getblockcount(), checkpoint_path) self._zebra_checkpoints = checkpoint_path @@ -727,8 +738,8 @@ def run_test(self): ("GetBlockRangeNullifiers (reverse)", lambda: self.test_get_block_range_nullifiers_reverse(zs, ls)), ("GetTransaction", lambda: self.test_get_transaction(zs, ls)), ("GetTaddressTxids (full range)", lambda: self.test_get_taddress_txids(zs, ls)), - ("GetTaddressTxids (lower bound)", lambda: self.test_get_taddress_txids_lower(zs, ls)), - ("GetTaddressTxids (upper bound)", lambda: self.test_get_taddress_txids_upper(zs, ls)), + ("GetTaddressTxids (tip-only range)", lambda: self.test_get_taddress_txids_tip_only(zs, ls)), + ("GetTaddressTxids (genesis-only range)", lambda: self.test_get_taddress_txids_genesis_only(zs, ls)), ("GetTaddressBalance", lambda: self.test_get_taddress_balance(zs, ls)), ("GetTaddressBalanceStream", lambda: self.test_get_taddress_balance_stream(zs, ls)), ("GetTreeState (by height)", lambda: self.test_get_tree_state_by_height(zs, ls)), @@ -925,7 +936,7 @@ def test_get_taddress_txids(self, zs, ls): assert_equal(z_tx.data, l_tx.data) assert_equal(z_tx.height, l_tx.height) - def test_get_taddress_txids_lower(self, zs, ls): + def test_get_taddress_txids_tip_only(self, zs, ls): tip = self.nodes[0].getblockcount() req = service_pb2.TransparentAddressBlockFilter( address=self.taddr, @@ -941,7 +952,7 @@ def test_get_taddress_txids_lower(self, zs, ls): assert_equal(z_tx.data, l_tx.data) assert_equal(z_tx.height, l_tx.height) - def test_get_taddress_txids_upper(self, zs, ls): + def test_get_taddress_txids_genesis_only(self, zs, ls): req = service_pb2.TransparentAddressBlockFilter( address=self.taddr, range=service_pb2.BlockRange( @@ -1073,7 +1084,7 @@ def test_get_address_utxos_stream(self, zs, ls): assert_equal(z_u.height, l_u.height) # ------------------------------------------------------------------------- - # Shielded transaction tests (blocks 201–209) + # Shielded transaction tests (the shielded fixture range) # # Every block in the shielded range has at least one shielded component # (Sapling spend/output or Orchard action), so vtx must be non-empty and @@ -1112,9 +1123,9 @@ def test_get_block_nullifiers_t_to_sapling(self, zs, ls): assert_equal(z, l) def test_get_block_range_shielded(self, zs, ls): - """All blocks in the shielded range (202–208) must have matching, non-empty vtx.""" - start = self.t_to_sapling_height # 202 - end = self.orchard_to_t_height # 208 + """All blocks in the shielded range must have matching, non-empty vtx.""" + start = self.t_to_sapling_height + end = self.orchard_to_t_height req = service_pb2.BlockRange( start=service_pb2.BlockID(height=start, hash=b""), end=service_pb2.BlockID(height=end, hash=b""), @@ -1185,7 +1196,7 @@ def test_get_transaction_sapling_to_sapling(self, zs, ls): self._assert_transaction_match( zs, ls, self.sapling_to_sapling_txid, self.sapling_to_sapling_height) - # -- Orchard → Orchard (block 205) -- + # -- Orchard → Orchard (block 206) -- def test_get_block_orchard_to_orchard(self, zs, ls): """Block with an Orchard→Orchard spend must have matching, non-empty vtx.""" @@ -1209,7 +1220,7 @@ def test_get_transaction_sapling_to_orchard(self, zs, ls): self._assert_transaction_match( zs, ls, self.sapling_to_orchard_txid, self.sapling_to_orchard_height) - # -- Orchard → Sapling (block 206) -- + # -- Orchard → Sapling (block 207) -- def test_get_block_orchard_to_sapling(self, zs, ls): """Block with an Orchard→Sapling (cross-pool) tx must have matching, non-empty vtx.""" @@ -1221,7 +1232,7 @@ def test_get_transaction_orchard_to_sapling(self, zs, ls): self._assert_transaction_match( zs, ls, self.orchard_to_sapling_txid, self.orchard_to_sapling_height) - # -- Sapling → t (block 207) -- + # -- Sapling → t (block 208) -- def test_get_block_sapling_to_t(self, zs, ls): """Block with a Sapling→t tx must have matching, non-empty vtx (Sapling spend present).""" @@ -1233,7 +1244,7 @@ def test_get_transaction_sapling_to_t(self, zs, ls): self._assert_transaction_match( zs, ls, self.sapling_to_t_txid, self.sapling_to_t_height) - # -- Orchard → t (block 208) -- + # -- Orchard → t (block 209) -- def test_get_block_orchard_to_t(self, zs, ls): """Block with an Orchard→t tx must have matching, non-empty vtx (Orchard action present).""" From 67500b58f0746a415de7dbd39b894781e4752b5b Mon Sep 17 00:00:00 2001 From: Pacu Date: Thu, 23 Apr 2026 18:32:54 -0300 Subject: [PATCH 10/15] Address PR review feedback for grpc parity test --- .github/workflows/ci.yml | 33 ++++++++++++----------- doc/book/src/dev/grpc-comparison.md | 11 ++++++++ doc/book/src/user/running-tests.md | 42 +++++++---------------------- pyproject.toml | 4 +-- qa/rpc-tests/grpc_comparison.py | 5 ++-- qa/rpc-tests/test_framework/util.py | 4 +++ uv.lock | 4 +-- 7 files changed, 48 insertions(+), 55 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b5eef8942..20f86708c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -805,18 +805,19 @@ jobs: include: ${{ fromJson(needs.setup.outputs.rpc_test_matrix) }} steps: - - name: Cache Python dependencies for RPC tests + - name: Cache uv project environment for RPC tests uses: actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v5.0.3 with: enableCrossOsArchive: true - path: venv - key: test-rpc-venv-${{ matrix.name }} + path: .venv + key: test-rpc-venv-${{ matrix.name }}-${{ hashFiles('pyproject.toml', 'uv.lock') }} - - name: Get Python dependencies for RPC tests + - name: Install uv + run: python3 -m pip install uv + + - name: Sync Python dependencies for RPC tests run: | - python3 -m venv ./venv - . ./venv/bin/activate - pip install zmq asyncio base58 toml grpcio protobuf + uv sync --frozen test-rpc: name: RPC tests ${{ matrix.platform }} ${{ matrix.shard }}${{ matrix.required_suffix }} @@ -872,18 +873,19 @@ jobs: requesting-repository: ${{ steps.repo-ids.outputs.requesting-repository }} job-name: "RPC tests ${{ matrix.platform }} ${{ matrix.shard }}${{ matrix.required_suffix }}" - - name: Cache Python dependencies for RPC tests + - name: Cache uv project environment for RPC tests uses: actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v5.0.3 with: enableCrossOsArchive: true - path: venv - key: test-rpc-venv-${{ matrix.name }} + path: .venv + key: test-rpc-venv-${{ matrix.name }}-${{ hashFiles('pyproject.toml', 'uv.lock') }} + + - name: Install uv + run: python3 -m pip install uv - - name: Get Python dependencies for RPC tests if not cached + - name: Sync Python dependencies for RPC tests run: | - python3 -m venv ./venv - . ./venv/bin/activate - pip install zmq asyncio base58 toml grpcio protobuf + uv sync --frozen - name: Download zebrad artifact uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0 @@ -971,8 +973,7 @@ jobs: if all_passed == False: sys.exit(1) EOF - . ./venv/bin/activate - ZEBRAD=$(pwd)/${{ format('src/zebrad{0}', matrix.file_ext) }} ZAINOD=$(pwd)/${{ format('src/zainod{0}', matrix.file_ext) }} ZALLET=$(pwd)/${{ format('src/zallet{0}', matrix.file_ext) }} LIGHTWALLETD=$(pwd)/${{ format('src/lightwalletd{0}', matrix.file_ext) }} SRC_DIR=$(pwd) python3 ./subclass.py + ZEBRAD=$(pwd)/${{ format('src/zebrad{0}', matrix.file_ext) }} ZAINOD=$(pwd)/${{ format('src/zainod{0}', matrix.file_ext) }} ZALLET=$(pwd)/${{ format('src/zallet{0}', matrix.file_ext) }} LIGHTWALLETD=$(pwd)/${{ format('src/lightwalletd{0}', matrix.file_ext) }} SRC_DIR=$(pwd) uv run python3 ./subclass.py - uses: ./.github/actions/finish-interop if: always() diff --git a/doc/book/src/dev/grpc-comparison.md b/doc/book/src/dev/grpc-comparison.md index bac0307df..5ad87e053 100644 --- a/doc/book/src/dev/grpc-comparison.md +++ b/doc/book/src/dev/grpc-comparison.md @@ -48,6 +48,11 @@ Those constraints are why the final test uses: The final structure came from working through a series of failures. +Some of these failures likely indicate upstream bugs rather than intended +behavior. When they are reproducible in isolation, they should be tracked +against the relevant implementation (`zcashd`, Zaino, or Zebra), and any +protocol ambiguity should be clarified in the corresponding specification. + ### One-wallet chain construction was not reliable The first versions tried to build the whole fixture from a single standalone @@ -122,6 +127,8 @@ state it expects is not fully available yet. The final test therefore: 4. then waits for both indexers to catch up. This ordering is required, not cosmetic. +It also appears to expose a Zaino startup-order dependency that should be +tracked separately from the parity test itself. ## The final fixture design @@ -209,6 +216,10 @@ Those differences are normalized away so the test focuses on the actual parity target: whether both services agree on the chain and the shielded contents that wallet clients care about. +If a divergence turns out to reflect an underspecified part of the protocol +rather than an implementation bug, the right long-term fix is to clarify that +behavior in the relevant spec and then align the implementations to it. + ## Maintenance guidance If this test starts failing again, the safest order of operations is: diff --git a/doc/book/src/user/running-tests.md b/doc/book/src/user/running-tests.md index a86c585a1..cbf9f35ab 100644 --- a/doc/book/src/user/running-tests.md +++ b/doc/book/src/user/running-tests.md @@ -22,43 +22,19 @@ export LIGHTWALLETD=/path/to/lightwalletd The `zmq`, `toml`, `base58`, `grpcio`, and `protobuf` Python libraries are required. -#### With uv (recommended) - ```bash uv sync ``` -#### Without uv - -On Ubuntu or Debian-based distributions: - -```bash -sudo apt-get install python3-zmq python3-base58 python3-toml -pip3 install grpcio protobuf -``` - -On macOS or other platforms: - -```bash -python3 -m venv venv -. venv/bin/activate -pip3 install pyzmq base58 toml grpcio protobuf -``` +See the [`uv` installation instructions](https://docs.astral.sh/uv/getting-started/installation/) +if it is not already installed. ## Running the full test suite -With uv: - ```bash uv run ./qa/zcash/full_test_suite.py ``` -Without uv: - -```bash -./qa/zcash/full_test_suite.py -``` - ## Running the gRPC parity tests The gRPC parity tests run [`zainod`] and [`lightwalletd`] side-by-side against @@ -85,19 +61,19 @@ uv run ./qa/zcash/grpc_comparison_tests.py --nocleanup Run a single test: ```bash -./qa/pull-tester/rpc-tests.py +uv run ./qa/pull-tester/rpc-tests.py ``` Run multiple specific tests: ```bash -./qa/pull-tester/rpc-tests.py +uv run ./qa/pull-tester/rpc-tests.py ``` Run all regression tests: ```bash -./qa/pull-tester/rpc-tests.py +uv run ./qa/pull-tester/rpc-tests.py ``` ## Parallel execution @@ -105,7 +81,7 @@ Run all regression tests: By default, tests run in parallel with 4 jobs. To change the number of jobs: ```bash -./qa/pull-tester/rpc-tests.py --jobs=n +uv run ./qa/pull-tester/rpc-tests.py --jobs=n ``` ## Test runner options @@ -126,13 +102,13 @@ By default, tests run in parallel with 4 jobs. To change the number of jobs: Set `PYTHON_DEBUG=1` for debug output: ```bash -PYTHON_DEBUG=1 qa/pull-tester/rpc-tests.py wallet +PYTHON_DEBUG=1 uv run ./qa/pull-tester/rpc-tests.py wallet ``` -For real-time output, run a test directly with `python3`: +For real-time output, run a test directly with `uv run python3`: ```bash -python3 qa/rpc-tests/wallet.py +uv run python3 qa/rpc-tests/wallet.py ``` ## Cache management diff --git a/pyproject.toml b/pyproject.toml index 497743627..a00aa8c3e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,8 +4,8 @@ version = "0.1.0" requires-python = "==3.11.*" dependencies = [ "base58", - "grpcio", - "protobuf", + "grpcio>=1.80.0", + "protobuf>=6.31.1", "pyzmq", "toml", ] diff --git a/qa/rpc-tests/grpc_comparison.py b/qa/rpc-tests/grpc_comparison.py index 049c6315f..3b93eaa3b 100755 --- a/qa/rpc-tests/grpc_comparison.py +++ b/qa/rpc-tests/grpc_comparison.py @@ -66,6 +66,7 @@ start_nodes, start_zcashd_node, stop_zcashd_node, + tarfile_extractall, wait_and_assert_operationid_status, zaino_grpc_port, ) @@ -347,13 +348,13 @@ def _persist_framework_cache(self): def _restore_framework_cache(self, cache_path): with tarfile.open(os.path.join(cache_path, 'zebrad_state.tar.gz'), 'r:gz') as tf: - tf.extractall(self.options.tmpdir) + tarfile_extractall(tf, self.options.tmpdir) def _restore_stage1_cache(self, cache_path): self._load_cached_metadata(cache_path) for index in range(2): with tarfile.open(os.path.join(cache_path, 'zcashd%d_state.tar.gz' % index), 'r:gz') as tf: - tf.extractall(self.options.tmpdir) + tarfile_extractall(tf, self.options.tmpdir) def _start_build_nodes(self): return [ diff --git a/qa/rpc-tests/test_framework/util.py b/qa/rpc-tests/test_framework/util.py index 7ce61739c..9ce343dd0 100644 --- a/qa/rpc-tests/test_framework/util.py +++ b/qa/rpc-tests/test_framework/util.py @@ -487,6 +487,9 @@ def init_persistent(cache_behavior): if os.path.exists(wallet_tgz_filename): with tarfile.open(wallet_tgz_filename, "r:gz") as wallet_tgz_file: tarfile_extractall(wallet_tgz_file, os.path.join(to_dir, "wallet.dat")) + else: + print('Warning: wallet cache missing for cache behavior %s, node %d; starting without wallet cache' + % (cache_behavior, i)) # Copy in per-node wallet config and update zcash.conf to set the # clock offsets correctly. @@ -1212,6 +1215,7 @@ def write_lwd_conf(datadir, node_rpc_port): """Write a minimal zcash.conf for lightwalletd to connect to a Zebrad node.""" conf_path = os.path.join(datadir, "zcash.conf") with open(conf_path, "w", encoding="utf8") as f: + f.write("regtest=1\n") f.write("rpcbind=127.0.0.1\n") f.write(f"rpcport={node_rpc_port}\n") f.write("rpcuser=test\n") diff --git a/uv.lock b/uv.lock index 11f58cac0..522316608 100644 --- a/uv.lock +++ b/uv.lock @@ -149,8 +149,8 @@ dependencies = [ [package.metadata] requires-dist = [ { name = "base58" }, - { name = "grpcio" }, - { name = "protobuf" }, + { name = "grpcio", specifier = ">=1.80.0" }, + { name = "protobuf", specifier = ">=6.31.1" }, { name = "pyzmq" }, { name = "toml" }, ] From 8be519d98fc84bf6c394b0089e55f927b810647d Mon Sep 17 00:00:00 2001 From: Pacu Date: Thu, 23 Apr 2026 19:56:32 -0300 Subject: [PATCH 11/15] Clarify upstream bug follow-up in grpc comparison docs --- doc/book/src/dev/grpc-comparison.md | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/doc/book/src/dev/grpc-comparison.md b/doc/book/src/dev/grpc-comparison.md index 5ad87e053..db9520588 100644 --- a/doc/book/src/dev/grpc-comparison.md +++ b/doc/book/src/dev/grpc-comparison.md @@ -33,7 +33,8 @@ Several interacting constraints shaped the final fixture: - Zebrad and standalone `zcashd` do not build the fixture chain together over P2P in this harness, so the test submits raw blocks explicitly. - Zainod must only start after Zebrad has loaded the full chain state, or it can - fail during initial indexing. + fail during initial indexing. That behavior appears to be a Zaino bug: Zainod + should wait for Zebra instead of crashing during startup. - Regenerating proof-heavy shielded transactions on every run is too slow for a useful parity test. @@ -48,10 +49,11 @@ Those constraints are why the final test uses: The final structure came from working through a series of failures. -Some of these failures likely indicate upstream bugs rather than intended +Some of these failures appear to be upstream bugs rather than intended behavior. When they are reproducible in isolation, they should be tracked against the relevant implementation (`zcashd`, Zaino, or Zebra), and any -protocol ambiguity should be clarified in the corresponding specification. +protocol ambiguity should be clarified in the corresponding specification or +ZIP before the implementations are updated. ### One-wallet chain construction was not reliable @@ -61,7 +63,8 @@ The first versions tried to build the whole fixture from a single standalone - Sapling funds created on-chain were not always surfaced as spendable to the next `z_sendmany` call. - Orchard cross-pool and follow-on Orchard spends could crash in wallet anchor - handling. + handling. That looks like a `zcashd` bug and should be reported there if it + can be reproduced outside this fixture. - The wallet would often choose the same note pool for multiple test transactions, leading to duplicate-nullifier or "insufficient funds" errors. @@ -91,7 +94,8 @@ steps instead of a single minimal funding transaction for each pool. ### ZIP 317 fee assumptions mattered Some cross-pool transactions that looked simple on paper were not satisfiable -with a hard-coded `ZIP_317_FEE`. +with a hard-coded `ZIP_317_FEE`. That also appears to be a `zcashd` wallet-side +issue rather than an intended invariant of the fixture. The fix was to compute fees for the actual transaction shape where needed using `conventional_fee(...)`, while still keeping `ZIP_317_FEE` for the simpler @@ -127,8 +131,8 @@ state it expects is not fully available yet. The final test therefore: 4. then waits for both indexers to catch up. This ordering is required, not cosmetic. -It also appears to expose a Zaino startup-order dependency that should be -tracked separately from the parity test itself. +It also appears to expose a Zaino startup bug that should be tracked separately +from the parity test itself. ## The final fixture design @@ -218,7 +222,9 @@ wallet clients care about. If a divergence turns out to reflect an underspecified part of the protocol rather than an implementation bug, the right long-term fix is to clarify that -behavior in the relevant spec and then align the implementations to it. +behavior in the relevant spec. For gRPC behavior, that likely means ZIP 307 or +the lightwallet protocol itself. After that, the implementation that does not +match the clarified spec should be fixed. ## Maintenance guidance From d6a7c27366826be0b2754f1c6a77f2408220fbeb Mon Sep 17 00:00:00 2001 From: Pacu Date: Fri, 24 Apr 2026 13:33:58 -0300 Subject: [PATCH 12/15] Tighten shielded GetBlockRange parity checks --- qa/rpc-tests/grpc_comparison.py | 80 +++++++++++++++++++++++++++++++-- 1 file changed, 76 insertions(+), 4 deletions(-) diff --git a/qa/rpc-tests/grpc_comparison.py b/qa/rpc-tests/grpc_comparison.py index 3b93eaa3b..c5d623ec6 100755 --- a/qa/rpc-tests/grpc_comparison.py +++ b/qa/rpc-tests/grpc_comparison.py @@ -227,6 +227,72 @@ def _normalize_shielded_compact_block(block): return normalized +def _shielded_compact_block_for_range_check(block): + """ + Prepare a shielded CompactBlock for GetBlockRange parity checks. + + GetBlockRange is intended to detect full streamed compact-block + divergences, so only protoVersion is normalized here. The vtx payload is + otherwise compared exactly as returned by each implementation. + """ + normalized = compact_formats_pb2.CompactBlock() + normalized.CopyFrom(block) + normalized.protoVersion = 0 + return normalized + + +def _compact_tx_summary(tx): + """Return a short one-line summary of a CompactTx for failure messages.""" + return ( + "index=%d txid=%s spends=%d outputs=%d actions=%d" + % (tx.index, tx.txid.hex(), len(tx.spends), len(tx.outputs), len(tx.actions)) + ) + + +def _compact_block_range_mismatch_message(z_block, l_block): + """ + Summarize the first useful difference between two GetBlockRange blocks. + + Keep this compact enough for CI logs while still pointing developers at the + exact block and CompactTx entry that diverged. + """ + lines = [ + "GetBlockRange shielded mismatch at height %d:" % z_block.height, + " Zainod: hash=%s prevHash=%s vtx=%d" + % (z_block.hash.hex(), z_block.prevHash.hex(), len(z_block.vtx)), + " Lightwalletd: hash=%s prevHash=%s vtx=%d" + % (l_block.hash.hex(), l_block.prevHash.hex(), len(l_block.vtx)), + ] + + if z_block.hash != l_block.hash or z_block.prevHash != l_block.prevHash: + return "\n".join(lines) + + shared_len = min(len(z_block.vtx), len(l_block.vtx)) + for index in range(shared_len): + z_tx = z_block.vtx[index] + l_tx = l_block.vtx[index] + if z_tx != l_tx: + lines.extend([ + " First differing CompactTx:", + " Zainod[%d]: %s" % (index, _compact_tx_summary(z_tx)), + " Lightwalletd[%d]: %s" % (index, _compact_tx_summary(l_tx)), + ]) + return "\n".join(lines) + + if len(z_block.vtx) != len(l_block.vtx): + extra_side = "Zainod" if len(z_block.vtx) > len(l_block.vtx) else "Lightwalletd" + extra_txs = z_block.vtx[shared_len:] if len(z_block.vtx) > len(l_block.vtx) else l_block.vtx[shared_len:] + lines.append(" Extra CompactTx entries on %s:" % extra_side) + for tx in extra_txs[:3]: + lines.append(" %s" % _compact_tx_summary(tx)) + if len(extra_txs) > 3: + lines.append(" ... %d more" % (len(extra_txs) - 3)) + return "\n".join(lines) + + lines.append(" Blocks differ, but no shorter structured summary was found.") + return "\n".join(lines) + + class GrpcComparisonTest(BitcoinTestFramework): def __init__(self): @@ -1124,22 +1190,28 @@ def test_get_block_nullifiers_t_to_sapling(self, zs, ls): assert_equal(z, l) def test_get_block_range_shielded(self, zs, ls): - """All blocks in the shielded range must have matching, non-empty vtx.""" + """ + All blocks in the shielded range must have matching, non-empty vtx. + + This range check intentionally keeps the streamed CompactTx entries + intact so it can detect GetBlockRange divergences between Zainod and + Lightwalletd. + """ start = self.t_to_sapling_height end = self.orchard_to_t_height req = service_pb2.BlockRange( start=service_pb2.BlockID(height=start, hash=b""), end=service_pb2.BlockID(height=end, hash=b""), ) - z_blocks = [_normalize_shielded_compact_block(b) for b in _collect_stream(zs.GetBlockRange(req))] - l_blocks = [_normalize_shielded_compact_block(b) for b in _collect_stream(ls.GetBlockRange(req))] + z_blocks = [_shielded_compact_block_for_range_check(b) for b in _collect_stream(zs.GetBlockRange(req))] + l_blocks = [_shielded_compact_block_for_range_check(b) for b in _collect_stream(ls.GetBlockRange(req))] assert_equal(len(z_blocks), len(l_blocks)) for z_b, l_b in zip(z_blocks, l_blocks): assert_true(len(z_b.vtx) > 0, "Zainod returned empty vtx for shielded block at height %d" % z_b.height) assert_true(len(l_b.vtx) > 0, "Lightwalletd returned empty vtx for shielded block at height %d" % l_b.height) - assert_equal(z_b, l_b) + assert_equal(z_b, l_b, _compact_block_range_mismatch_message(z_b, l_b)) def test_get_transaction_t_to_sapling(self, zs, ls): """t→Sapling transaction bytes and height must match across both indexers.""" From 89dfa139fbde98801ebe8812b40f606aa4eb44c0 Mon Sep 17 00:00:00 2001 From: Pacu Date: Fri, 24 Apr 2026 13:48:04 -0300 Subject: [PATCH 13/15] Make grpc compact block parity checks fully strict --- doc/book/src/dev/grpc-comparison.md | 21 ++-- qa/rpc-tests/grpc_comparison.py | 152 +++++++++------------------- 2 files changed, 55 insertions(+), 118 deletions(-) diff --git a/doc/book/src/dev/grpc-comparison.md b/doc/book/src/dev/grpc-comparison.md index db9520588..8041cad17 100644 --- a/doc/book/src/dev/grpc-comparison.md +++ b/doc/book/src/dev/grpc-comparison.md @@ -204,21 +204,16 @@ That part exists because the builder chain and the validator chain are not being grown together live over P2P. The checkpoint-assisted setup made Zebrad replay stable enough for the indexer comparison to become routine. -## Normalization rules are part of the design +## Compact block parity is strict -The parity test does not assert byte-for-byte identity for every protobuf field. -Instead, it compares the parts that are intended to match and normalizes the -known implementation-specific differences. +The parity test now compares `CompactBlock` responses exactly as returned by +each implementation. It does not normalize `protoVersion`, omit transparent +coinbase compact transactions, or otherwise rewrite the compact block payload +before comparing it. -The most important example is compact block normalization: - -- Zainod and Lightwalletd can report different `protoVersion` values. -- Lightwalletd may include transparent-only compact transactions on shielded - blocks that Zainod omits. - -Those differences are normalized away so the test focuses on the actual parity -target: whether both services agree on the chain and the shielded contents that -wallet clients care about. +That makes the failures noisier, but it is deliberate: any divergence between +Zainod and Lightwalletd should be surfaced directly in test output so it can be +understood and fixed rather than normalized away. If a divergence turns out to reflect an underspecified part of the protocol rather than an implementation bug, the right long-term fix is to clarify that diff --git a/qa/rpc-tests/grpc_comparison.py b/qa/rpc-tests/grpc_comparison.py index c5d623ec6..d89d9ca01 100755 --- a/qa/rpc-tests/grpc_comparison.py +++ b/qa/rpc-tests/grpc_comparison.py @@ -168,77 +168,11 @@ def _collect_stream(streaming_call): return results -def _normalize_compact_block(block): - """ - Normalize a CompactBlock for header-level comparison. - - Known divergences between Zainod and Lightwalletd (with Zebrad as backend): - - protoVersion: Lightwalletd sets 1, Zainod sets 4. Zeroed out. - - vtx: Lightwalletd includes transparent coinbase transactions in compact - blocks; Zainod omits them (only shielded transactions appear). Cleared. - - The header fields (height, hash, prevHash, time) are authoritative and - must agree between both implementations. - """ - normalized = compact_formats_pb2.CompactBlock() - normalized.height = block.height - normalized.hash = block.hash - normalized.prevHash = block.prevHash - normalized.time = block.time - # chainMetadata is also comparable; copy it if present - if block.HasField("chainMetadata"): - normalized.chainMetadata.CopyFrom(block.chainMetadata) - return normalized - - -def _normalize_shielded_compact_block(block): - """ - Normalize a CompactBlock that contains shielded transactions for full - comparison including vtx. - - Blocks in the shielded fixture range must have identical, non-empty - shielded CompactTx entries in both Zainod and Lightwalletd. - - Known divergence: - - Lightwalletd still includes the transparent coinbase CompactTx in these - blocks, while Zainod omits transparent-only transactions. Filter those - out before comparing the remaining shielded txs. - - The only remaining implementation-specific field zeroed here is - protoVersion. - """ - normalized = compact_formats_pb2.CompactBlock() - normalized.height = block.height - normalized.hash = block.hash - normalized.prevHash = block.prevHash - normalized.time = block.time - normalized.protoVersion = 0 - for tx in block.vtx: - if len(tx.spends) > 0 or len(tx.outputs) > 0 or len(tx.actions) > 0: - normalized_tx = normalized.vtx.add() - normalized_tx.index = tx.index - normalized_tx.txid = tx.txid - normalized_tx.fee = tx.fee - normalized_tx.spends.extend(tx.spends) - normalized_tx.outputs.extend(tx.outputs) - normalized_tx.actions.extend(tx.actions) - if block.HasField("chainMetadata"): - normalized.chainMetadata.CopyFrom(block.chainMetadata) - return normalized - - -def _shielded_compact_block_for_range_check(block): - """ - Prepare a shielded CompactBlock for GetBlockRange parity checks. - - GetBlockRange is intended to detect full streamed compact-block - divergences, so only protoVersion is normalized here. The vtx payload is - otherwise compared exactly as returned by each implementation. - """ - normalized = compact_formats_pb2.CompactBlock() - normalized.CopyFrom(block) - normalized.protoVersion = 0 - return normalized +def _strict_compact_block(block): + """Return a CompactBlock exactly as provided by the implementation.""" + strict = compact_formats_pb2.CompactBlock() + strict.CopyFrom(block) + return strict def _compact_tx_summary(tx): @@ -249,19 +183,19 @@ def _compact_tx_summary(tx): ) -def _compact_block_range_mismatch_message(z_block, l_block): +def _compact_block_mismatch_message(label, z_block, l_block): """ - Summarize the first useful difference between two GetBlockRange blocks. + Summarize the first useful difference between two CompactBlocks. Keep this compact enough for CI logs while still pointing developers at the exact block and CompactTx entry that diverged. """ lines = [ - "GetBlockRange shielded mismatch at height %d:" % z_block.height, - " Zainod: hash=%s prevHash=%s vtx=%d" - % (z_block.hash.hex(), z_block.prevHash.hex(), len(z_block.vtx)), - " Lightwalletd: hash=%s prevHash=%s vtx=%d" - % (l_block.hash.hex(), l_block.prevHash.hex(), len(l_block.vtx)), + "%s mismatch at height %d:" % (label, z_block.height), + " Zainod: protoVersion=%d hash=%s prevHash=%s vtx=%d" + % (z_block.protoVersion, z_block.hash.hex(), z_block.prevHash.hex(), len(z_block.vtx)), + " Lightwalletd: protoVersion=%d hash=%s prevHash=%s vtx=%d" + % (l_block.protoVersion, l_block.hash.hex(), l_block.prevHash.hex(), len(l_block.vtx)), ] if z_block.hash != l_block.hash or z_block.prevHash != l_block.prevHash: @@ -896,9 +830,9 @@ def test_get_latest_block(self, zs, ls): def test_get_block(self, zs, ls): req = service_pb2.BlockID(height=5, hash=b"") - z = _normalize_compact_block(zs.GetBlock(req)) - l = _normalize_compact_block(ls.GetBlock(req)) - assert_equal(z, l) + z = _strict_compact_block(zs.GetBlock(req)) + l = _strict_compact_block(ls.GetBlock(req)) + assert_equal(z, l, _compact_block_mismatch_message("GetBlock", z, l)) def test_get_block_out_of_bounds(self, zs, ls): # Height beyond chain tip — both must respond with a gRPC error. @@ -919,27 +853,31 @@ def test_get_block_out_of_bounds(self, zs, ls): def test_get_block_nullifiers(self, zs, ls): req = service_pb2.BlockID(height=5, hash=b"") - z = _normalize_compact_block(zs.GetBlockNullifiers(req)) - l = _normalize_compact_block(ls.GetBlockNullifiers(req)) - assert_equal(z, l) + z = _strict_compact_block(zs.GetBlockNullifiers(req)) + l = _strict_compact_block(ls.GetBlockNullifiers(req)) + assert_equal(z, l, _compact_block_mismatch_message("GetBlockNullifiers", z, l)) def test_get_block_range(self, zs, ls): req = service_pb2.BlockRange( start=service_pb2.BlockID(height=1, hash=b""), end=service_pb2.BlockID(height=10, hash=b""), ) - z_blocks = [_normalize_compact_block(b) for b in _collect_stream(zs.GetBlockRange(req))] - l_blocks = [_normalize_compact_block(b) for b in _collect_stream(ls.GetBlockRange(req))] - assert_equal(z_blocks, l_blocks) + z_blocks = [_strict_compact_block(b) for b in _collect_stream(zs.GetBlockRange(req))] + l_blocks = [_strict_compact_block(b) for b in _collect_stream(ls.GetBlockRange(req))] + assert_equal(len(z_blocks), len(l_blocks)) + for z_b, l_b in zip(z_blocks, l_blocks): + assert_equal(z_b, l_b, _compact_block_mismatch_message("GetBlockRange", z_b, l_b)) def test_get_block_range_reverse(self, zs, ls): req = service_pb2.BlockRange( start=service_pb2.BlockID(height=10, hash=b""), end=service_pb2.BlockID(height=1, hash=b""), ) - z_blocks = [_normalize_compact_block(b) for b in _collect_stream(zs.GetBlockRange(req))] - l_blocks = [_normalize_compact_block(b) for b in _collect_stream(ls.GetBlockRange(req))] - assert_equal(z_blocks, l_blocks) + z_blocks = [_strict_compact_block(b) for b in _collect_stream(zs.GetBlockRange(req))] + l_blocks = [_strict_compact_block(b) for b in _collect_stream(ls.GetBlockRange(req))] + assert_equal(len(z_blocks), len(l_blocks)) + for z_b, l_b in zip(z_blocks, l_blocks): + assert_equal(z_b, l_b, _compact_block_mismatch_message("GetBlockRange reverse", z_b, l_b)) def test_get_block_range_out_of_bounds(self, zs, ls): # Both must respond with a gRPC error when the range exceeds the chain tip. @@ -966,18 +904,22 @@ def test_get_block_range_nullifiers(self, zs, ls): start=service_pb2.BlockID(height=1, hash=b""), end=service_pb2.BlockID(height=10, hash=b""), ) - z_blocks = [_normalize_compact_block(b) for b in _collect_stream(zs.GetBlockRangeNullifiers(req))] - l_blocks = [_normalize_compact_block(b) for b in _collect_stream(ls.GetBlockRangeNullifiers(req))] - assert_equal(z_blocks, l_blocks) + z_blocks = [_strict_compact_block(b) for b in _collect_stream(zs.GetBlockRangeNullifiers(req))] + l_blocks = [_strict_compact_block(b) for b in _collect_stream(ls.GetBlockRangeNullifiers(req))] + assert_equal(len(z_blocks), len(l_blocks)) + for z_b, l_b in zip(z_blocks, l_blocks): + assert_equal(z_b, l_b, _compact_block_mismatch_message("GetBlockRangeNullifiers", z_b, l_b)) def test_get_block_range_nullifiers_reverse(self, zs, ls): req = service_pb2.BlockRange( start=service_pb2.BlockID(height=10, hash=b""), end=service_pb2.BlockID(height=1, hash=b""), ) - z_blocks = [_normalize_compact_block(b) for b in _collect_stream(zs.GetBlockRangeNullifiers(req))] - l_blocks = [_normalize_compact_block(b) for b in _collect_stream(ls.GetBlockRangeNullifiers(req))] - assert_equal(z_blocks, l_blocks) + z_blocks = [_strict_compact_block(b) for b in _collect_stream(zs.GetBlockRangeNullifiers(req))] + l_blocks = [_strict_compact_block(b) for b in _collect_stream(ls.GetBlockRangeNullifiers(req))] + assert_equal(len(z_blocks), len(l_blocks)) + for z_b, l_b in zip(z_blocks, l_blocks): + assert_equal(z_b, l_b, _compact_block_mismatch_message("GetBlockRangeNullifiers reverse", z_b, l_b)) def test_get_transaction(self, zs, ls): # self.txid is a hex string; the TxFilter expects bytes in little-endian order @@ -1160,13 +1102,13 @@ def test_get_address_utxos_stream(self, zs, ls): def _assert_shielded_block_match(self, zs, ls, height, label): req = service_pb2.BlockID(height=height, hash=b"") - z = _normalize_shielded_compact_block(zs.GetBlock(req)) - l = _normalize_shielded_compact_block(ls.GetBlock(req)) + z = _strict_compact_block(zs.GetBlock(req)) + l = _strict_compact_block(ls.GetBlock(req)) assert_true(len(z.vtx) > 0, "Zainod returned empty vtx for %s block at height %d" % (label, height)) assert_true(len(l.vtx) > 0, "Lightwalletd returned empty vtx for %s block at height %d" % (label, height)) - assert_equal(z, l) + assert_equal(z, l, _compact_block_mismatch_message("GetBlock %s" % label, z, l)) def _assert_transaction_match(self, zs, ls, txid_hex, expected_height): txid_bytes = bytes.fromhex(txid_hex)[::-1] @@ -1185,9 +1127,9 @@ def test_get_block_t_to_sapling(self, zs, ls): def test_get_block_nullifiers_t_to_sapling(self, zs, ls): req = service_pb2.BlockID(height=self.t_to_sapling_height, hash=b"") - z = _normalize_shielded_compact_block(zs.GetBlockNullifiers(req)) - l = _normalize_shielded_compact_block(ls.GetBlockNullifiers(req)) - assert_equal(z, l) + z = _strict_compact_block(zs.GetBlockNullifiers(req)) + l = _strict_compact_block(ls.GetBlockNullifiers(req)) + assert_equal(z, l, _compact_block_mismatch_message("GetBlockNullifiers t→Sapling", z, l)) def test_get_block_range_shielded(self, zs, ls): """ @@ -1203,15 +1145,15 @@ def test_get_block_range_shielded(self, zs, ls): start=service_pb2.BlockID(height=start, hash=b""), end=service_pb2.BlockID(height=end, hash=b""), ) - z_blocks = [_shielded_compact_block_for_range_check(b) for b in _collect_stream(zs.GetBlockRange(req))] - l_blocks = [_shielded_compact_block_for_range_check(b) for b in _collect_stream(ls.GetBlockRange(req))] + z_blocks = [_strict_compact_block(b) for b in _collect_stream(zs.GetBlockRange(req))] + l_blocks = [_strict_compact_block(b) for b in _collect_stream(ls.GetBlockRange(req))] assert_equal(len(z_blocks), len(l_blocks)) for z_b, l_b in zip(z_blocks, l_blocks): assert_true(len(z_b.vtx) > 0, "Zainod returned empty vtx for shielded block at height %d" % z_b.height) assert_true(len(l_b.vtx) > 0, "Lightwalletd returned empty vtx for shielded block at height %d" % l_b.height) - assert_equal(z_b, l_b, _compact_block_range_mismatch_message(z_b, l_b)) + assert_equal(z_b, l_b, _compact_block_mismatch_message("GetBlockRange shielded", z_b, l_b)) def test_get_transaction_t_to_sapling(self, zs, ls): """t→Sapling transaction bytes and height must match across both indexers.""" From aded07960e6a68d852b71be82807b24161392ca1 Mon Sep 17 00:00:00 2001 From: Pacu Date: Sun, 26 Apr 2026 12:25:35 -0300 Subject: [PATCH 14/15] Show unified diffs for grpc compact block mismatches --- qa/rpc-tests/grpc_comparison.py | 52 +++++++++++++++++++++++++++------ 1 file changed, 43 insertions(+), 9 deletions(-) diff --git a/qa/rpc-tests/grpc_comparison.py b/qa/rpc-tests/grpc_comparison.py index d89d9ca01..5bdee78b7 100755 --- a/qa/rpc-tests/grpc_comparison.py +++ b/qa/rpc-tests/grpc_comparison.py @@ -50,9 +50,11 @@ import os import tarfile import time +from difflib import unified_diff from decimal import Decimal import grpc +from google.protobuf import text_format from test_framework.config import ZebraArgs from test_framework.test_framework import BitcoinTestFramework @@ -183,6 +185,24 @@ def _compact_tx_summary(tx): ) +def _protobuf_unified_diff(z_block, l_block, label, max_lines=200): + """Render a unified diff for two protobuf messages.""" + z_text = text_format.MessageToString(z_block) + l_text = text_format.MessageToString(l_block) + diff_lines = list(unified_diff( + z_text.splitlines(), + l_text.splitlines(), + fromfile="%s (Zainod)" % label, + tofile="%s (Lightwalletd)" % label, + lineterm="", + )) + if not diff_lines: + return " No unified diff available." + if len(diff_lines) > max_lines: + diff_lines = diff_lines[:max_lines] + ["... diff truncated after %d lines ..." % max_lines] + return "\n".join(diff_lines) + + def _compact_block_mismatch_message(label, z_block, l_block): """ Summarize the first useful difference between two CompactBlocks. @@ -199,6 +219,8 @@ def _compact_block_mismatch_message(label, z_block, l_block): ] if z_block.hash != l_block.hash or z_block.prevHash != l_block.prevHash: + lines.append("") + lines.append(_protobuf_unified_diff(z_block, l_block, label)) return "\n".join(lines) shared_len = min(len(z_block.vtx), len(l_block.vtx)) @@ -211,6 +233,8 @@ def _compact_block_mismatch_message(label, z_block, l_block): " Zainod[%d]: %s" % (index, _compact_tx_summary(z_tx)), " Lightwalletd[%d]: %s" % (index, _compact_tx_summary(l_tx)), ]) + lines.append("") + lines.append(_protobuf_unified_diff(z_block, l_block, label)) return "\n".join(lines) if len(z_block.vtx) != len(l_block.vtx): @@ -221,12 +245,22 @@ def _compact_block_mismatch_message(label, z_block, l_block): lines.append(" %s" % _compact_tx_summary(tx)) if len(extra_txs) > 3: lines.append(" ... %d more" % (len(extra_txs) - 3)) + lines.append("") + lines.append(_protobuf_unified_diff(z_block, l_block, label)) return "\n".join(lines) lines.append(" Blocks differ, but no shorter structured summary was found.") + lines.append("") + lines.append(_protobuf_unified_diff(z_block, l_block, label)) return "\n".join(lines) +def _assert_compact_block_equal(label, z_block, l_block): + """Assert two CompactBlocks are identical, with a readable unified diff on failure.""" + if z_block != l_block: + raise AssertionError(_compact_block_mismatch_message(label, z_block, l_block)) + + class GrpcComparisonTest(BitcoinTestFramework): def __init__(self): @@ -832,7 +866,7 @@ def test_get_block(self, zs, ls): req = service_pb2.BlockID(height=5, hash=b"") z = _strict_compact_block(zs.GetBlock(req)) l = _strict_compact_block(ls.GetBlock(req)) - assert_equal(z, l, _compact_block_mismatch_message("GetBlock", z, l)) + _assert_compact_block_equal("GetBlock", z, l) def test_get_block_out_of_bounds(self, zs, ls): # Height beyond chain tip — both must respond with a gRPC error. @@ -855,7 +889,7 @@ def test_get_block_nullifiers(self, zs, ls): req = service_pb2.BlockID(height=5, hash=b"") z = _strict_compact_block(zs.GetBlockNullifiers(req)) l = _strict_compact_block(ls.GetBlockNullifiers(req)) - assert_equal(z, l, _compact_block_mismatch_message("GetBlockNullifiers", z, l)) + _assert_compact_block_equal("GetBlockNullifiers", z, l) def test_get_block_range(self, zs, ls): req = service_pb2.BlockRange( @@ -866,7 +900,7 @@ def test_get_block_range(self, zs, ls): l_blocks = [_strict_compact_block(b) for b in _collect_stream(ls.GetBlockRange(req))] assert_equal(len(z_blocks), len(l_blocks)) for z_b, l_b in zip(z_blocks, l_blocks): - assert_equal(z_b, l_b, _compact_block_mismatch_message("GetBlockRange", z_b, l_b)) + _assert_compact_block_equal("GetBlockRange", z_b, l_b) def test_get_block_range_reverse(self, zs, ls): req = service_pb2.BlockRange( @@ -877,7 +911,7 @@ def test_get_block_range_reverse(self, zs, ls): l_blocks = [_strict_compact_block(b) for b in _collect_stream(ls.GetBlockRange(req))] assert_equal(len(z_blocks), len(l_blocks)) for z_b, l_b in zip(z_blocks, l_blocks): - assert_equal(z_b, l_b, _compact_block_mismatch_message("GetBlockRange reverse", z_b, l_b)) + _assert_compact_block_equal("GetBlockRange reverse", z_b, l_b) def test_get_block_range_out_of_bounds(self, zs, ls): # Both must respond with a gRPC error when the range exceeds the chain tip. @@ -908,7 +942,7 @@ def test_get_block_range_nullifiers(self, zs, ls): l_blocks = [_strict_compact_block(b) for b in _collect_stream(ls.GetBlockRangeNullifiers(req))] assert_equal(len(z_blocks), len(l_blocks)) for z_b, l_b in zip(z_blocks, l_blocks): - assert_equal(z_b, l_b, _compact_block_mismatch_message("GetBlockRangeNullifiers", z_b, l_b)) + _assert_compact_block_equal("GetBlockRangeNullifiers", z_b, l_b) def test_get_block_range_nullifiers_reverse(self, zs, ls): req = service_pb2.BlockRange( @@ -919,7 +953,7 @@ def test_get_block_range_nullifiers_reverse(self, zs, ls): l_blocks = [_strict_compact_block(b) for b in _collect_stream(ls.GetBlockRangeNullifiers(req))] assert_equal(len(z_blocks), len(l_blocks)) for z_b, l_b in zip(z_blocks, l_blocks): - assert_equal(z_b, l_b, _compact_block_mismatch_message("GetBlockRangeNullifiers reverse", z_b, l_b)) + _assert_compact_block_equal("GetBlockRangeNullifiers reverse", z_b, l_b) def test_get_transaction(self, zs, ls): # self.txid is a hex string; the TxFilter expects bytes in little-endian order @@ -1108,7 +1142,7 @@ def _assert_shielded_block_match(self, zs, ls, height, label): "Zainod returned empty vtx for %s block at height %d" % (label, height)) assert_true(len(l.vtx) > 0, "Lightwalletd returned empty vtx for %s block at height %d" % (label, height)) - assert_equal(z, l, _compact_block_mismatch_message("GetBlock %s" % label, z, l)) + _assert_compact_block_equal("GetBlock %s" % label, z, l) def _assert_transaction_match(self, zs, ls, txid_hex, expected_height): txid_bytes = bytes.fromhex(txid_hex)[::-1] @@ -1129,7 +1163,7 @@ def test_get_block_nullifiers_t_to_sapling(self, zs, ls): req = service_pb2.BlockID(height=self.t_to_sapling_height, hash=b"") z = _strict_compact_block(zs.GetBlockNullifiers(req)) l = _strict_compact_block(ls.GetBlockNullifiers(req)) - assert_equal(z, l, _compact_block_mismatch_message("GetBlockNullifiers t→Sapling", z, l)) + _assert_compact_block_equal("GetBlockNullifiers t→Sapling", z, l) def test_get_block_range_shielded(self, zs, ls): """ @@ -1153,7 +1187,7 @@ def test_get_block_range_shielded(self, zs, ls): "Zainod returned empty vtx for shielded block at height %d" % z_b.height) assert_true(len(l_b.vtx) > 0, "Lightwalletd returned empty vtx for shielded block at height %d" % l_b.height) - assert_equal(z_b, l_b, _compact_block_mismatch_message("GetBlockRange shielded", z_b, l_b)) + _assert_compact_block_equal("GetBlockRange shielded", z_b, l_b) def test_get_transaction_t_to_sapling(self, zs, ls): """t→Sapling transaction bytes and height must match across both indexers.""" From 1f97b283bc435a71a87bb104b9abc3dea20704ce Mon Sep 17 00:00:00 2001 From: Pacu Date: Sun, 26 Apr 2026 13:12:40 -0300 Subject: [PATCH 15/15] Add a focused zcashd ZIP 317 fee bug repro test This adds wallet_zip317_fee_repro.py, a small standalone zcashd repro for the Sapling-to-Orchard z_sendmany fee-selection failure that grpc_comparison.py surfaced. The test mirrors the wallet path that actually reached the bug in the gRPC fixture: - fund the Sapling receiver of a full UA on node 0, - restart the standalone sender wallet, - send from that UA to an Orchard-only UA on node 1 with AllowRevealedAmounts, - verify that ZIP_317_FEE fails with the unpaid action error, - verify that conventional_fee(4) succeeds for the same transaction shape. Builds atop #84. Closes #90. --- qa/rpc-tests/wallet_zip317_fee_repro.py | 156 ++++++++++++++++++++++++ 1 file changed, 156 insertions(+) create mode 100644 qa/rpc-tests/wallet_zip317_fee_repro.py diff --git a/qa/rpc-tests/wallet_zip317_fee_repro.py b/qa/rpc-tests/wallet_zip317_fee_repro.py new file mode 100644 index 000000000..623dbc74c --- /dev/null +++ b/qa/rpc-tests/wallet_zip317_fee_repro.py @@ -0,0 +1,156 @@ +#!/usr/bin/env python3 +# Copyright (c) 2026 The Zcash developers +# Distributed under the MIT software license, see the accompanying +# file COPYING or https://www.opensource.org/licenses/mit-license.php . + +from decimal import Decimal + +from test_framework.test_framework import BitcoinTestFramework +from test_framework.util import ( + assert_equal, + get_coinbase_address, + start_zcashd_node, + stop_zcashd_node, + wait_and_assert_operationid_status, +) +from test_framework.zip317 import ZIP_317_FEE, conventional_fee + + +_REPRO_ACTIVATION_HEIGHTS = { + '5ba81b19': 1, # Overwinter + '76b809bb': 1, # Sapling + '2bb40e60': 1, # Blossom + 'f5b9230b': 1, # Heartwood + 'e9ff75a6': 1, # Canopy + 'c2d6d0b4': 2, # NU5 + 'c8e71055': 2, # NU6 +} + + +def _submit_missing_blocks(src_node, dst_node): + """Submit any blocks missing from dst_node using raw blocks from src_node.""" + dst_height = dst_node.getblockcount() + src_height = src_node.getblockcount() + for height in range(dst_height + 1, src_height + 1): + raw_hex = src_node.getblock(str(height), 0) + result = dst_node.submitblock(raw_hex) + if result is not None: + raise AssertionError("submitblock to repro node failed at height %d: %s" % (height, result)) + + +class WalletZip317FeeReproTest(BitcoinTestFramework): + """ + Focused repro for the zcashd ZIP 317 fee-estimation bug surfaced by the + grpc_comparison fixture. + + This mirrors the specific standalone-wallet path that reached the bug in + grpc_comparison.py: + - node 0 mines transparent coinbase funds, + - node 0 creates a Sapling-only source UA, + - node 1 owns an Orchard-only recipient UA, + - node 0 sends Sapling -> Orchard with AllowRevealedAmounts. + + With ZIP_317_FEE, zcashd returns an opid but later fails the async + operation with "tx unpaid action limit exceeded". With conventional_fee(4), + the same transaction shape succeeds. + """ + + def __init__(self): + super().__init__() + self.num_nodes = 0 + self.num_wallets = 0 + + def setup_chain(self): + pass + + def setup_network(self, split=False): + self.nodes = [] + self.wallets = [] + self.zainos = [] + self.lwds = [] + self.zcashd_nodes = [ + start_zcashd_node(0, self.options.tmpdir, activation_heights=_REPRO_ACTIVATION_HEIGHTS), + start_zcashd_node(1, self.options.tmpdir, activation_heights=_REPRO_ACTIVATION_HEIGHTS), + ] + self.is_network_split = False + + def _mine_and_sync(self, node0, node1): + node0.generate(1) + _submit_missing_blocks(node0, node1) + return node0.getblockcount() + + def _restart_node0(self): + stop_zcashd_node(0, self.zcashd_nodes[0]) + self.zcashd_nodes[0] = start_zcashd_node(0, self.options.tmpdir, activation_heights=_REPRO_ACTIVATION_HEIGHTS) + return self.zcashd_nodes[0] + + def run_test(self): + node0, node1 = self.zcashd_nodes + + node0.generate(200) + _submit_missing_blocks(node0, node1) + assert_equal(node0.getblockcount(), 200) + assert_equal(node1.getblockcount(), 200) + + taddr = get_coinbase_address(node0) + source_account = node0.z_getnewaccount()['account'] + source_ua = node0.z_getaddressforaccount(source_account, ['sapling', 'orchard'])['address'] + source_sapling = node0.z_listunifiedreceivers(source_ua)['sapling'] + + orchard_account = node1.z_getnewaccount()['account'] + orchard_ua = node1.z_getaddressforaccount(orchard_account, ['orchard'])['address'] + orchard_addr = node1.z_listunifiedreceivers(orchard_ua)['orchard'] + + funding_fee = conventional_fee(4) + funding_amount = Decimal('12.5') - funding_fee + funding_txid = wait_and_assert_operationid_status( + node0, + node0.z_sendmany( + taddr, + [{"address": source_sapling, "amount": funding_amount}], + 10, + funding_fee, + 'AllowRevealedSenders', + ), + ) + assert_equal(len(funding_txid), 64) + assert_equal(self._mine_and_sync(node0, node1), 201) + assert_equal(self._mine_and_sync(node0, node1), 202) + node0 = self._restart_node0() + assert_equal(node0.getblockcount(), 202) + + recipients = [{"address": orchard_addr, "amount": Decimal('0.1')}] + buggy_opid = node0.z_sendmany( + source_ua, + recipients, + 1, + ZIP_317_FEE, + 'AllowRevealedAmounts', + ) + try: + wait_and_assert_operationid_status(node0, buggy_opid) + except AssertionError as e: + message = str(e) + assert "tx unpaid action limit exceeded: 1 action(s) exceeds limit of 0" in message, message + else: + raise AssertionError( + "Expected ZIP_317_FEE Sapling->Orchard send to fail with an unpaid action error" + ) + + workaround_fee = conventional_fee(4) + workaround_txid = wait_and_assert_operationid_status( + node0, + node0.z_sendmany( + source_ua, + recipients, + 1, + workaround_fee, + 'AllowRevealedAmounts', + ), + ) + assert_equal(len(workaround_txid), 64) + assert_equal(self._mine_and_sync(node0, node1), 203) + + +if __name__ == '__main__': + WalletZip317FeeReproTest().main()